Отдельный тепловой шаблон для объемов и экземпляров
Мы хотим создать тепловые шаблоны с серверами и томами, подключенными к этим серверам. Но мы также хотим иметь возможность быстро уничтожать все серверы, не разрушая тома.
Поэтому мы решили, что было бы лучше сделать 2 тепловых шаблона вместо одного: - один для томов - один для серверов и вложенных томов
Мы хотели бы что-то вроде этого:
стек для-volume.yml
description: project
heat_template_version: '2015-10-15'
resources:
volume-choca-01:
type: OS::Cinder::Volume
properties:
name: volume-choca-01
size: 15
стек-для-серверов, и-attachments.yml
description: project
heat_template_version: '2015-10-15'
resources:
vm-choca-01:
type: OS::Nova::Server
properties:
flavor: CO.2
image: Centos 7
key_name: choca
name: vm-choca-01
networks:
- {network: net-ext}
security_groups: [default]
volume-attachment-01:
type: OS::Cinder::VolumeAttachment
properties:
instance_uuid: { get_resource: vm-choca-01 }
volume_id: { get_resource: volume-choca-01 }
Конечно, поскольку все ресурсы не находятся в одном файле:volume_id: { get_resource: volume-choca-01 }
не могу работать
Мы попытались получить volume_id с помощью решения, опубликованного здесь: Openstack Heat - отдельные шаблоны, добавив в конце stack-for-volume.yml:
outputs:
volume-choca-01-id:
description: something
value: { get_attr: [volume-choca-01] }
Но вывод не дал нам ничего похожего на идентификатор тома. Мы застряли прямо сейчас.
Любая идея?
1 ответ
OpenStack Heat:
Когда стек создается с ресурсами, определенными в шаблоне / вложенных шаблонах, все ресурсы завершаются / удаляются, когда стек удаляется пользователем.
Итак, согласно вашему требованию / вопросу, вы можете попробовать вот так:
Шаг 1: Создайте объем, используя тепловой шаблон
Шаг 2: Получить UUID тома из панели инструментов / горизонта и назначить volume_id
в OS::Cinder::VolumeAttachment
ресурс как:
volume-attachment-01:
type: OS::Cinder::VolumeAttachment
properties:
instance_uuid: { get_resource: vm-choca-01 }
volume_id: { get_param: volume-choca-01_UUID }
И в параметрах определить volume-choca-01_UUID
пары:
parameters:
volume-choca-01_UUID:
type: string
default: <UUID of volume from dashboard>
С помощью описанного выше процесса создается сервер и к нему подключается том. При удалении стека том отделяется вместо getting deleted with server