为卷和实例分隔热模板

时间:2018-06-14 14:51:15

标签: openstack-heat

我们希望创建一个热模板,其中包含连接到这些服务器的服务器和卷。但我们也希望能够在不破坏卷的情况下销毁所有快速服务器。

所以我们决定最好制作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 - separate templates 通过在末尾添加stack-for-volume.yml:

outputs:
        volume-choca-01-id:
                description: something
                value: { get_attr: [volume-choca-01] }

但是输出并没有给我们任何看起来像卷id的东西。 我们现在卡住了。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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 param:

 parameters:
   volume-choca-01_UUID:
      type: string
      default: <UUID of volume from dashboard>

通过上述过程,将创建服务器并将卷附加到其上。删除堆栈时,将分离卷而不是getting deleted with server