天天看點

Heat中的AWS::WaitCondition的使用

在heat中,一個instance的建立成功信号是在這個instance狀态成為active之後發出的,這時候user-data可能還沒有執行。但是heat已經認為這個resource建立成功了,開始排程下一個resource的建立。

如果我們要建立一個webserver,這個webserver需要在databaseServer執行完user-data之後才開始建立,就需要使用AWS的waitcondition通訊機制。

整個流程如下:

Create WaitHandler -> 

WaitHandler Done -> 

Create "Database" (Dependon WaitHandler) -> 

Database Done -> 

Create "WaitCondition" (Dependon Database) -> 

Wait for Database signal ->

Database send signal to WaitHandler ->

WaitCondition Done ->

Create WebServer (Dependon WaitCondition)->

WebServer Done

Template例子:

 WaitHandle: {Type: ‘AWS::CloudFormation::WaitConditionHandle‘}

 WaitCondition:

    Type: AWS::CloudFormation::WaitCondition

    DependsOn: WikiDatabase

    Properties:

      Handle: {Ref: WaitHandle}

      Count: ‘1‘

      Timeout: ‘600‘

Database:

    Type: AWS::EC2::Instance

    Properties:

      UserData:

        Fn::Base64:

          Fn::Join:

            - /opt/aws/bin/cfn-signal -e 0 -r "Wiki server setup complete" ‘

            - {Ref: WaitHandle}

            - ‘‘‘

              ‘

WebServer:

    DependsOn: WaitCondition

Heat中的AWS::WaitCondition的使用

繼續閱讀