OpenStack Boot Volume Пример

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску


Загрузка с 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)

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

openstack volume show TMP-Vol-mmazur-20250903   -f yaml
==output (1)==
{{#spoiler:show=openstack volume show (не интересно)|
attachments: []
availability_zone: nova
bootable: 'true'
consistencygroup_id: null
created_at: '2025-09-04T08:39:00.000000'
description: null
encrypted: false
id: 4c587446-fbf0-4895-9c46-85278e24aaae
migration_status: null
multiattach: false
name: TMP-Vol-mmazur-20250903
os-vol-host-attr:host: cinder-volume-3@volumes-nvme#volumes-nvme
os-vol-mig-status-attr:migstat: null
os-vol-mig-status-attr:name_id: null
os-vol-tenant-attr:tenant_id: 7837cead1c444779a1bd3f4617b4fdf2
properties: {}
replication_status: null
size: 20
snapshot_id: null
source_volid: 74cf8a7a-6b18-4ecb-b911-80ebcdaf82d0
status: available
type: volumes-nvme
updated_at: '2025-09-04T08:39:01.000000'
user_id: cf919c1f6830468b887746cde925872b
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'

}}