Use native server resource in overcloud
[apex-tripleo-heat-templates.git] / mysql.yaml
index f8d9262..f93ae28 100644 (file)
@@ -1,5 +1,5 @@
 HeatTemplateFormatVersion: '2012-12-12'
-Description: 'HEAT Template - Dedicated MySQL server'
+Description: 'Dedicated MySQL server'
 Parameters:
   KeyName: 
     Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
@@ -13,6 +13,18 @@ Parameters:
     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: glance
+  NovaUser:
+    Description: Nova database username.
+    Type: String
+    Default: nova
   MySQLImage:
     Type: String
   BootstrapHost:
@@ -52,37 +64,72 @@ Resources:
   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::Role: stateful
+      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}
+          - database: nova
+            username: {Ref: NovaUser}
+            userhandle: {Ref: NovaPasswordHandle}
+      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"
+  NovaPasswordHandle:
+    Type: AWS::CloudFormation::WaitConditionHandle
+  NovaPassword:
+    DependsOn: MySQL
+    Type: AWS::CloudFormation::WaitCondition
+    Properties:
+      Handle: {Ref: NovaPasswordHandle}
+      Timeout: 90
+  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:
@@ -90,10 +137,19 @@ Resources:
     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}
+    NovaPassword:
+        Fn::GetAtt: [ NovaPassword, Data ]
+    NovaUser: {Ref: NovaUser}