Description: Keystone database username.
Type: String
Default: keystone
+ HeatUser:
+ Description: Heat database username.
+ Type: String
+ Default: heat
+ GlanceUser:
+ Description: Glance database username.
+ Type: String
+ Default: heat
MySQLImage:
Type: String
BootstrapHost:
MySQL:
Type: AWS::EC2::Instance
Metadata:
- OpenStack::ImageBuilder::Elements: [ mysql ]
- OpenStack::Config:
- mysql:
- users:
- root:
- password: {Ref: BootstrapRootPassword}
- dump:
- password: {Ref: BootstrapDumpPassword}
- create-users:
- - database: keystone
- username: {Ref: KeystoneUser}
- userhandle: {Ref: KeystonePasswordHandle}
- bootstrap_host: {Ref: BootstrapHost}
- slave_user: {Ref: BootstrapSlaveUser}
- slave_password: {Ref: BootstrapSlavePassword}
- heat:
- access_key_id:
- Ref: ApiKey
- secret_key:
- Fn::GetAtt: [ ApiKey, SecretAccessKey ]
- stack:
- name: {Ref: 'AWS::StackName'}
- region: {Ref: 'AWS::Region'}
- refresh:
- - resource: MySQL
+ OpenStack::ImageBuilder::Elements: [ mysql-migration ]
+ mysql:
+ create-users:
+ - database: keystone
+ username: {Ref: KeystoneUser}
+ userhandle: {Ref: KeystonePasswordHandle}
+ - database: heat
+ username: {Ref: HeatUser}
+ userhandle: {Ref: HeatPasswordHandle}
+ - database: glance
+ username: {Ref: GlanceUser}
+ userhandle: {Ref: GlancePasswordHandle}
+ mysql-migration:
+ users:
+ root:
+ username: root
+ password: {Ref: BootstrapRootPassword}
+ dump:
+ username: dump
+ password: {Ref: BootstrapDumpPassword}
+ bootstrap_host: {Ref: BootstrapHost}
+ slave_user: {Ref: BootstrapSlaveUser}
+ slave_password: {Ref: BootstrapSlavePassword}
+ 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"
+ GlancePasswordHandle:
+ Type: AWS::CloudFormation::WaitConditionHandle
+ GlancePassword:
+ DependsOn: MySQL
+ Type: AWS::CloudFormation::WaitCondition
+ Properties:
+ Handle: {Ref: GlancePasswordHandle}
+ Timeout: 90
+ HeatPasswordHandle:
+ Type: AWS::CloudFormation::WaitConditionHandle
+ HeatPassword:
+ DependsOn: MySQL
+ Type: AWS::CloudFormation::WaitCondition
+ Properties:
+ Handle: {Ref: HeatPasswordHandle}
+ Timeout: 90
KeystonePasswordHandle:
Type: AWS::CloudFormation::WaitConditionHandle
KeystonePassword:
Type: AWS::CloudFormation::WaitCondition
Properties:
Handle: {Ref: KeystonePasswordHandle}
- Timeout: 60
+ Timeout: 90
Outputs:
MySQLHost:
Fn::GetAtt: [ MySQL , PrivateIp ]
KeystonePassword:
Fn::GetAtt: [ KeystonePassword, Data ]
KeystoneUser: {Ref: KeystoneUser}
+ HeatPassword:
+ Fn::GetAtt: [ HeatPassword, Data ]
+ HeatUser: {Ref: HeatUser}
+ GlancePassword:
+ Fn::GetAtt: [ GlancePassword, Data ]
+ GlanceUser: {Ref: GlanceUser}