我有一个OpenStack Heat模板,它大量借用了CloudFormation参数,这就是我添加CF标签的原因。
我的模板包含两个应按特定顺序启动(或至少通过用户数据配置)的实例。我以为我会使用WaitCondition来实现这一点,但看起来他没有完全发挥作用,或者至少没有达到我的预期。
这是一个片段:
resources:
first:
type: OS::Nova::Server
properties:
key_name: { get_param: key_name }
image: fedora19
flavor: { get_param: instance_type }
user_data:
str_replace:
template: |
#!/bin/bash
[configuration code here]
curl -X PUT -H 'Content-Type:application/json' -d '{"Status" : "SUCCES", "Data" : "Application has completed configuration."}' "$wait_handle$"
params:
$wait_handle$: {get_resource: my_wait_handle}
first_wait_handle:
type: AWS::CloudFormation::WaitConditionHandle
first_wait:
type: AWS::CloudFormation::WaitCondition
depends_on: first
properties:
Handle:
get_resource: first_wait_handle
Timeout: 1000
second:
type: OS::Nova::Server
depends_on: first_wait
properties:
key_name: { get_param: key_name }
image: fedora19
flavor: { get_param: instance_type }
user_data: |
#!/bin/bash
[configuration code 2]
目前堆叠正确地停留在“正在创建”状态,而Heat没有收到卷曲信号,这是正确的。问题是,一旦启动堆栈并且配置自动运行,就会创建“第二个”实例。
我在第二个实例中添加了一个depends_on,但看起来它没有效果(或者,再次,不是我认为的效果)。
是否可以使用Heat / Cloud Formation执行此实例启动顺序配置?我错过了什么?
谢谢!
答案 0 :(得分:3)
阅读此处提供的this博客,他已对您的问题给出了正确的解释。因为此功能实际上不起作用。您可以使用一种解决方法。
答案 1 :(得分:1)
我对热模板并不熟悉,但立刻突出的是你的curl命令。
更改curl命令
curl -X PUT -H 'Content-Type:' --data-binary '{"Status" : ....
我有各种各样的问题,用表面上的JSON表示AWS,但是不接受带有内容类型的标题:application / json