等待条件Heat / CloudFormation和实例启动顺序

时间:2014-03-31 14:04:29

标签: openstack amazon-cloudformation

我有一个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执行此实例启动顺序配置?我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

阅读此处提供的this博客,他已对您的问题给出了正确的解释。因为此功能实际上不起作用。您可以使用一种解决方法。

答案 1 :(得分:1)

我对热模板并不熟悉,但立刻突出的是你的curl命令。

更改curl命令

curl -X PUT -H 'Content-Type:' --data-binary '{"Status" : ....

我有各种各样的问题,用表面上的JSON表示AWS,但是不接受带有内容类型的标题:application / json