HeatTemplateFormatVersion: '2012-12-12' Description: 'HEAT Template - Dedicated MySQL server' Parameters: KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instances Type: String Default: default InstanceType: Description: Use this flavor Type: String Default: m1.small MySQLImage: Type: String Resources: ApiAccessPolicy: Type: OS::Heat::AccessPolicy Properties: AllowedResources: [ MySQL0 ] ApiUser: Type: AWS::IAM::User Properties: Policies: [ { Ref: ApiAccessPolicy } ] MySQL0: Type: AWS::EC2::Instance Metadata: OpenStack::ImageBuilder::Elements: [ mysql ] OpenStack::MySQL: masterhandle: {Ref: MySQLMasterHandle} keystone: userhandle: {Ref: KeystonePasswordHandle} OpenStack::Heat::CFNTools: AWSAccessKeyId: Ref: ApiKey AWSSecretAccessKey: Fn::GetAtt: [ ApiKey, SecretAccessKey ] Properties: ImageId: {Ref: MySQLImage} InstanceType: {Ref: InstanceType} KeyName: {Ref: KeyName} MySQL1: Type: AWS::EC2::Instance DependsOn: MySQL0 Metadata: OpenStack::ImageBuilder::Elements: [ mysql ] OpenStack::MySQL: masterinfo: {Fn::GetAtt: [ MySQLMaster, Data ]} consumers: {Ref: Consumers} keystone: userhandle: {Ref: KeystonePasswordHandle} OpenStack::Heat::CFNTools: AWSAccessKeyId: Ref: ApiKey AWSSecretAccessKey: Fn::GetAtt: [ ApiKey, SecretAccessKey ] Properties: ImageId: {Ref: MySQLImage} InstanceType: {Ref: InstanceType} KeyName: {Ref: KeyName} MySQLMasterHandle: Type: AWS::CloudFormation::WaitConditionHandle MySQLMaster: DependsOn: MySQL0 Type: AWS::CloudFormation::WaitCondition Properties: Handle: {Ref: MySQLMasterHandle} Timeout: 60 KeystonePasswordHandle: Type: AWS::CloudFormation:WaitConditionHandle Properties: KeystonePassword: DependsOn: MySQL1 Type: AWS::CloudFormation::WaitCondition Properties: Handle: {Ref: KeystonePasswordHandle} Timeout: 60 Outputs: MySQLHost: Fn::GetAtt: [ MySQL0 , PrivateIp ] MySQLSlaves: Fn::GetAtt: [ MySQL1, PrivateIp ] KeystonePassword: Fn::GetAtt: [ KeystonePassword, Data ]