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: bm.small MySQLImage: Type: String BootstrapUrl: Description: Fetch a mysql dump file from this URL and load it Type: String Default: '' BootstrapRootCnfUrl: Description: Fetch a mysql config file from this URL to setup local root with bootstrapped database Type: String Default: '' Resources: ApiAccessPolicy: Type: OS::Heat::AccessPolicy Properties: AllowedResources: [ MySQL ] ApiUser: Type: AWS::IAM::User Properties: Policies: [ { Ref: ApiAccessPolicy } ] ApiKey: Type: AWS::IAM::AccessKey Properties: UserName: Ref: ApiUser MySQL: Type: AWS::EC2::Instance Metadata: OpenStack::ImageBuilder::Elements: [ mysql ] OpenStack::Config: mysql: users: - database: keystone bootstrap_url: {Ref: BootstrapUrl} root_cnf_url: {Ref: BootstrapRootCnfUrl} heat: access_key_id: Ref: ApiKey secret_key: Fn::GetAtt: [ ApiKey, SecretAccessKey ] stack: name: {Ref: 'AWS::StackName'} region: {Ref: 'AWS::Region'} refresh: - resource: MySQL Properties: ImageId: {Ref: MySQLImage} InstanceType: {Ref: InstanceType} KeyName: {Ref: KeyName} UserData: "#!/bin/bash\ntouch /tmp/userdata-finished\necho Userdata finished $(date)\n" Outputs: MySQLHost: Fn::GetAtt: [ MySQL , PrivateIp ]