我们希望创建一个热模板,其中包含连接到这些服务器的服务器和卷。但我们也希望能够在不破坏卷的情况下销毁所有快速服务器。
所以我们决定最好制作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的东西。 我们现在卡住了。
有什么想法吗?
答案 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