From a6e6afaa5a0bb98ce7862fcdae197357c127203d Mon Sep 17 00:00:00 2001 From: Clint Byrum Date: Thu, 28 Feb 2013 08:33:23 -0800 Subject: Adding keystone and mysql --- base.yaml | 32 +++++++++++++++++++++++ keystone.yaml | 53 +++++++++++++++++++++++++++++++++++++ mysql.yaml | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 base.yaml create mode 100644 keystone.yaml create mode 100644 mysql.yaml diff --git a/base.yaml b/base.yaml new file mode 100644 index 00000000..adff04ed --- /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 index 00000000..b17397a1 --- /dev/null +++ b/keystone.yaml @@ -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 index 00000000..3df3d0e3 --- /dev/null +++ b/mysql.yaml @@ -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 ] -- cgit 1.2.3-korg