techquisitor: (sis)
В обычной ситуации народ подключает дополнительное блочное устройство в веб-интерфейсе Horizon и внутри виртуальной машины появляется новый HDD. Но бывают ситуации, когда в ВМ загрузили образ ВМ, который оказался битым или с него просто необходимо перенести информацию в другую виртуальную машину. Например, когда надо склеить виртуальную машину состоящую из нескольких файлов в одну. После поисков в этой ситуации находится ссылка на запись (в свою очередь ссылающуюся на stackexchange) в блоге компании Mirantis, где описывается один из способов подключения. Но минус данного подхода в том, что он безмерно коряв и требует лишних движений, связанных с прописыванием образа в Glance (что бывает не всегда возможно да и не нужно). Ещё один недостаток описанного по ссылке метода в том, что если нужно подключить данный образ на длительное время, шедулер может такой файл зачистить, так как он может не использоваться какой-то конкретной ВМ. Либо приходится зачем-то держать запущенными инстансы, которые отнимают далеко не бесконечные ресурсы.

Я предпочитаю для решения данной проблемы использовать другой способ.
Для начала, нам необходим ID инстанса и хост, где он выполняется. Для этого по ssh заходим на управляющую ноду и выполянем:

export OS_TENANT_NAME=TENANT_NAME
nova list (если вдруг забыли, как ВМ называется и узнать его ID)
nova show имя_вм

В получившемся выхлопе ищем строку OS-EXT-SRV-ATTR:host где и должно быть указано имя хоста, где запущен гипервизор с нужной нам ВМ. Далее на всё той же ноде выполняем nova rescue VM_ID. В веб-интерфейсе нужная нам ВМ перейдёт в режим rescue. В этом состоянии блокируется запись в libvirt.xml и OpenStack генерит свой, который можно безбоязненно править как нам заблагорассудится.

Далее логинимся по ssh на хост с гипервизором и выполняем virsh edit Instance_ID (instance-00000X). Сразу можно обратить внимание, что в конфигурационном файле прописано два диска: /dev/vda и /dev/vdb. Где vda — копия системы в rescue-режиме, а vdb — исходный образ виртуальной машины куда нам и надо писать необходимые данные.

Далее нам необходимо скопировать на гипервизор файл с образом в поддерживаемом в вашей версии OpenStack формате и написать следующее:

Где source file= путь к образу. После сохранения файла необходимо выполнить virsh destroy instance_id и затем выполнить virsh start instance_id. После данных манипуляций в системе должен появиться третий диск, который мы подключили дополнительно.
Далее уже можно проделывать с ВМ необходимые манипуляции. Следует обратить внимание, что диск vda — это система запущенная в rescue-режиме, то писать ничего на него не надо, иначе потеряете изменения.
После окончания работ необходимо выполнить nova unrescue ВМ_ID и потушить систему. После уже можно стартануть как обычно, через веб-интерфейс.
techquisitor: (sis)
Очередная «шпора», чтобы не забыть. Для переноса образа OpenStack из одного приватного тенанта (он же — «проект», если смотреть в веб-интерфейсе) в другой, необходимо залогиниться, например, на management-ноду OpenStack под пользователем root и посмотреть содержимое /etc/creds. Удостоверимся, что там всё хорошо и прописаны привилегии администратора, основной тенант и адрес keystone.

Выглядит примерно так:

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN
export OS_TENANT_NAME=tenant
export OS_AUTH_URL=http://10.0.0.1:35357/v2.0

Далее выполняем команду export OS_TENANT_NAME=TENANT_NAME. Где TENANT_NAME, имя того тенанта, куда мы хотим поместить образ.

Самый простой способ добавления образа в непубличный тенант — сделать его копию с имеющегося образа.

Соответственно, вводим команду:
glance image-create --name "IMAGE_NAME" --file /var/lib/glance/images/IMAGE_ID --disk-format qcow2 --container-format bare --is-public False --progress
Где IMAGE_NAME — название образа, а IMAGE_ID его идентификатор. Легко посмотреть в свойствах образа как через веб, так и с помощью команды nova image-list.

Всё. Далее заходим в веб-интерфейс и пользуемся. При желании, из старого тенанта образ можно смело удалить.

Публичный образ делается почти точно так же. С тем отличием, что вместо опции --is-public False будет --is-public True.

Profile

techquisitor: (Default)
techquisitor

September 2017

S M T W T F S
     12
34 567 89
10111213141516
171819202122 23
24252627282930

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2017 04:51 pm
Powered by Dreamwidth Studios