OpenStack Boot Volume Пример: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 7 промежуточных версий этого же участника)
Строка 157: Строка 157:
 
}}
 
}}
 
==workaround==
 
==workaround==
Что бы обойти баг, нужно удалить <code> signature_verified</cpde>
+
Что бы обойти баг, нужно удалить <code> signature_verified</code>
 
<PRE>
 
<PRE>
 
openstack volume show TMP-Vol-mmazur-20250903 -c volume_image_metadata -c id -f yaml
 
openstack volume show TMP-Vol-mmazur-20250903 -c volume_image_metadata -c id -f yaml
Строка 182: Строка 182:
 
</PRE>
 
</PRE>
   
  +
  +
После чего можно создавать новый <code>image</code>
 
<PRE>
 
<PRE>
 
openstack volume show TMP-Vol-mmazur-20250903 -c volume_image_metadata -c id -f yaml
 
openstack volume show TMP-Vol-mmazur-20250903 -c volume_image_metadata -c id -f yaml
Строка 199: Строка 201:
 
owner_specified.openstack.sha256: ''
 
owner_specified.openstack.sha256: ''
 
size: '1374704640'
 
size: '1374704640'
  +
</PRE>
  +
  +
=Создание образа <code>image</code>=
  +
  +
<PRE>
  +
openstack image create \
  +
--volume 4c587446-fbf0-4895-9c46-85278e24aaae \
  +
--container-format bare \
  +
--disk-format qcow2 \
  +
Ubuntu-2022-vdbench-mmazur-20250904
  +
</PRE>
  +
  +
<PRE>
  +
+---------------------+--------------------------------------+
  +
| Field | Value |
  +
+---------------------+--------------------------------------+
  +
| container_format | bare |
  +
| disk_format | qcow2 |
  +
| display_description | None |
  +
| id | 4c587446-fbf0-4895-9c46-85278e24aaae |
  +
| image_id | 78acbdc0-d493-4227-9671-43c1e179892a |
  +
| image_name | Ubuntu-2022-vdbench-mmazur-20250904 |
  +
| protected | False |
  +
| size | 20 |
  +
| status | uploading |
  +
| updated_at | 2025-09-04T08:39:01.000000 |
  +
| visibility | shared |
  +
| volume_type | volumes-nvme |
  +
+---------------------+--------------------------------------+
  +
</PRE>
  +
  +
<PRE>
  +
./openstack image show Ubuntu-2022-vdbench-mmazur-20250904 -f yaml
  +
</PRE>
  +
<PRE>
  +
container_format: bare
  +
created_at: '2025-09-04T08:55:16Z'
  +
disk_format: qcow2
  +
file: /v2/images/78acbdc0-d493-4227-9671-43c1e179892a/file
  +
id: 78acbdc0-d493-4227-9671-43c1e179892a
  +
min_disk: 0
  +
min_ram: 0
  +
name: Ubuntu-2022-vdbench-mmazur-20250904
  +
owner: 7837cead1c444779a1bd3f4617b4fdf2
  +
properties:
  +
locations: []
  +
os_hidden: false
  +
owner_specified.openstack.md5: ''
  +
owner_specified.openstack.object: images/Ubuntu-22.04
  +
owner_specified.openstack.sha256: ''
  +
protected: false
  +
schema: /v2/schemas/image
  +
status: queued
  +
tags: []
  +
updated_at: '2025-09-04T08:55:16Z'
  +
visibility: shared
  +
</PRE>
  +
=<code>server create</code>=
  +
<PRE>
  +
./openstack \
  +
--os-compute-api-version 2.67 \
  +
server create \
  +
--flavor m1.xlarge \
  +
--network fixed-net \
  +
--security-group allow_all \
  +
--key-name mmazur \
  +
--block-device source_type=image,uuid=78acbdc0-d493-4227-9671-43c1e179892a,volume_size=20,volume_type=volumes-nvme,boot_index=0,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
--block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
  +
mmazur-test-202509040-vdbench-01
 
</PRE>
 
</PRE>

Текущая версия на 10:58, 4 сентября 2025


Загрузка с Volume

Задача:

  • Создать загрузочный image с пред-установленным софтом

Запустить сервер

Чуть более полное описание, если хочется указать размер загрузочного диска отличного от того что описан в flavor

openstack \
    --os-compute-api-version 2.67 \
    server create \
    --flavor m1.xlarge \
    --network fixed-net \
    --security-group allow_all \
    --key-name mmazur \
    --block-device source_type=image,uuid=c84178c9-eeb0-4dc9-915f-2fc5ee83044e,volume_size=20,volume_type=volumes-nvme,boot_index=0,delete_on_termination=true \
    mmazur-test
  • source_type=image создать блочное устройство (volume!) из image
  • uuid=c84178c9-eeb0-4dc9-915f-2fc5ee83044e id того образа из которого создавать
  • volume_size=20 размер
  • volume_type=volumes-nvme тип (смотреть доступные openstack volume type list)
  • boot_index=0
  • delete_on_termination=true удалить при удалении сервера

Настройка

Тут я не описываю шаги - так как для каждого случая это разные шаги :)
Очистить все лишнее

#!/bin/bash

cloud-init clean --logs
cloud-init clean
rm -rf /var/lib/cloud/*

truncate -s0 /etc/machine-id
rm -f /var/lib/dbus/machine-id
ln -sf /etc/machine-id /var/lib/dbus/machine-id 2>/dev/null || true

rm -f /etc/udev/rules.d/70-persistent-net.rules

Создание временного volume

В моем случае мне нужно было найти образ размером 20Gb (рутовый вольюм) это мой частный случай

for ATTACHED_VOLUME_ID in $(openstack server show  mmazur-test -f yaml  | yq '.volumes[].id' ); 
do 
    echo "Volume: ${ATTACHED_VOLUME_ID}"; 
    SIZE=$(openstack volume show ${ATTACHED_VOLUME_ID} -f yaml | yq '.size');
    if [ "${SIZE}" == "20" ];
    then
      break;
    fi;
done
Volume: 74cf8a7a-6b18-4ecb-b911-80ebcdaf82d0

Создать временный volume так как напрямую создать image с status: in use volume нельзя (это вероятно баг)

openstack volume create --source 74cf8a7a-6b18-4ecb-b911-80ebcdaf82d0  TMP-Vol-mmazur-20250903

output (1)

Исправление известного бага (workaround)

Описание бага

Это известный баг: the volume property signature_verified propagating to images created from volumes
Характерная ошибка в локах:

cinder.volume.flows.manager.create_volume cinder.exception.GlanceMetadataExists: Glance metadata cannot be updated, key signature_verified exists for volume id ...

В моей инсталляции опенстека еще не исправлена

openstack volume show

Проверить информацию о созданном volume

openstack volume show TMP-Vol-mmazur-20250903   -f yaml

output (2)

workaround

Что бы обойти баг, нужно удалить signature_verified

openstack volume show TMP-Vol-mmazur-20250903  -c volume_image_metadata -c id -f yaml
id: 4c587446-fbf0-4895-9c46-85278e24aaae
volume_image_metadata:
  checksum: d4e18699850ed28cc79eac3e2ab9a811
  container_format: bare
  disk_format: qcow2
  image_id: bfe4e997-ea19-440d-be2b-678ddf60699d
  image_name: Ubuntu-2022-vdbench-mmazur-20250902-2
  min_disk: '0'
  min_ram: '0'
  owner_specified.openstack.md5: ''
  owner_specified.openstack.object: images/Ubuntu-22.04
  owner_specified.openstack.sha256: ''
  signature_verified: 'False'
  size: '1374704640'
openstack volume unset --image-property signature_verified TMP-Vol-mmazur-20250903


После чего можно создавать новый image

openstack volume show TMP-Vol-mmazur-20250903  -c volume_image_metadata -c id -f yaml
id: 4c587446-fbf0-4895-9c46-85278e24aaae
volume_image_metadata:
  checksum: d4e18699850ed28cc79eac3e2ab9a811
  container_format: bare
  disk_format: qcow2
  image_id: bfe4e997-ea19-440d-be2b-678ddf60699d
  image_name: Ubuntu-2022-vdbench-mmazur-20250902-2
  min_disk: '0'
  min_ram: '0'
  owner_specified.openstack.md5: ''
  owner_specified.openstack.object: images/Ubuntu-22.04
  owner_specified.openstack.sha256: ''
  size: '1374704640'

Создание образа image

openstack image create \
  --volume 4c587446-fbf0-4895-9c46-85278e24aaae \
  --container-format bare \
  --disk-format qcow2 \
  Ubuntu-2022-vdbench-mmazur-20250904
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| container_format    | bare                                 |
| disk_format         | qcow2                                |
| display_description | None                                 |
| id                  | 4c587446-fbf0-4895-9c46-85278e24aaae |
| image_id            | 78acbdc0-d493-4227-9671-43c1e179892a |
| image_name          | Ubuntu-2022-vdbench-mmazur-20250904  |
| protected           | False                                |
| size                | 20                                   |
| status              | uploading                            |
| updated_at          | 2025-09-04T08:39:01.000000           |
| visibility          | shared                               |
| volume_type         | volumes-nvme                         |
+---------------------+--------------------------------------+
./openstack image show Ubuntu-2022-vdbench-mmazur-20250904 -f yaml
container_format: bare
created_at: '2025-09-04T08:55:16Z'
disk_format: qcow2
file: /v2/images/78acbdc0-d493-4227-9671-43c1e179892a/file
id: 78acbdc0-d493-4227-9671-43c1e179892a
min_disk: 0
min_ram: 0
name: Ubuntu-2022-vdbench-mmazur-20250904
owner: 7837cead1c444779a1bd3f4617b4fdf2
properties:
  locations: []
  os_hidden: false
  owner_specified.openstack.md5: ''
  owner_specified.openstack.object: images/Ubuntu-22.04
  owner_specified.openstack.sha256: ''
protected: false
schema: /v2/schemas/image
status: queued
tags: []
updated_at: '2025-09-04T08:55:16Z'
visibility: shared

server create

./openstack \
    --os-compute-api-version 2.67 \
    server create \
    --flavor m1.xlarge \
    --network fixed-net \
    --security-group allow_all \
    --key-name mmazur \
    --block-device source_type=image,uuid=78acbdc0-d493-4227-9671-43c1e179892a,volume_size=20,volume_type=volumes-nvme,boot_index=0,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    --block-device source_type=blank,destination_type=volume,volume_size=75,volume_type=alletra-volumes,delete_on_termination=true \
    mmazur-test-202509040-vdbench-01