Adding keystone and mysql
authorClint Byrum <clint@fewbar.com>
Thu, 28 Feb 2013 16:33:23 +0000 (08:33 -0800)
committerClint Byrum <clint@fewbar.com>
Thu, 28 Feb 2013 16:33:23 +0000 (08:33 -0800)
base.yaml [new file with mode: 0644]
keystone.yaml [new file with mode: 0644]
mysql.yaml [new file with mode: 0644]

diff --git a/base.yaml b/base.yaml
new file mode 100644 (file)
index 0000000..adff04e
--- /dev/null
+++ b/base.yaml
@@ -0,0 +1,32 @@
+HeatTemplateFormatVersion: '2012-12-12'
+Description: 'HEAT Template - Tie OpenStack components together'
+Parameters:
+  TemplateRoot:
+    Description: URL Base where all of our templates are available
+    Type: String
+Resources:
+  MySQL:
+    Type: AWS::CloudFormation::Stack
+    TemplateURL:
+      Fn::Join:
+        - {Ref: TemplateRoot}
+        - mysql.yaml
+    Parameters:
+      InstanceType: m1.small
+      KeyName: default
+      MySQLImage: image-mysql
+  Keystone:
+    Type: AWS::CloudFormation::Stack
+    TemplateURL:
+      Fn::Join:
+        - {Ref: TemplateRoot}
+        - keystone.yaml
+    Parameters:
+      KeyName: default
+      KeystoneDSN:
+        Fn::Join:
+          - 'mysql://keystone:'
+          - {Fn::GetAtt: [ MySQL , KeystonePassword ]}
+          - '@'
+          - {Fn::GetAtt: [ MySQL , MySQLHost ]}
+          - '/keystone'
diff --git a/keystone.yaml b/keystone.yaml
new file mode 100644 (file)
index 0000000..b17397a
--- /dev/null
@@ -0,0 +1,53 @@
+HeatTemplateFormatVersion: '2012-12-12'
+Description: 'HEAT Template - Keystone'
+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
+  KeystoneDSN:
+    Description: DSN for connecting to keystone
+    Type: String
+  KeystoneImage:
+    Type: String
+Resources:
+  ApiAccessPolicy:
+    Type: OS::Heat::AccessPolicy
+    Properties:
+      AllowedResources: [ KeystoneLaunch, Keystone ]
+  ApiUser:
+    Type: AWS::IAM::User
+    Properties:
+      Policies: [ { Ref: ApiAccessPolicy } ]
+  ApiKey:
+    Type: AWS::IAM::AccessKey
+    Properties:
+      UserName:
+        Ref: ApiUser
+  KeystoneLaunch:
+    Type: AWS::AutoScaling::LaunchConfiguration
+    Properties:
+      ImageId:
+        {Ref: KeystoneImage}
+      InstanceType: {Ref: InstanceType}
+      KeyName: {Ref: KeyName}
+    Metadata:
+      OpenStack::Heat::CFNTools:
+        AWSAccessKeyId:
+          Ref: ApiKey
+        AWSSecretAccessKey:
+          Fn::GetAtt: [ ApiKey, SecretAccessKey ]
+      OpenStack::ImageBuilder::Elements: [ keystone ]
+      OpenStack:
+        keystone:
+          db: {Ref: KeystoneDSN}
+  Keystone:
+    Type: OS::Heat::InstanceGroup
+    Properties:
+      LaunchConfigurationName: { Ref: KeystoneLaunch }
+      AvailabilityZones: [ 1 ]
+      Size: '1'
diff --git a/mysql.yaml b/mysql.yaml
new file mode 100644 (file)
index 0000000..3df3d0e
--- /dev/null
@@ -0,0 +1,84 @@
+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 ]