Отдельный тепловой шаблон для объемов и экземпляров

Мы хотим создать тепловые шаблоны с серверами и томами, подключенными к этим серверам. Но мы также хотим иметь возможность быстро уничтожать все серверы, не разрушая тома.

Поэтому мы решили, что было бы лучше сделать 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

Другие вопросы по тегам