Adding keystone and mysql

This commit is contained in:
Clint Byrum 2013-02-28 08:33:23 -08:00
parent a6889c1cd3
commit a6e6afaa5a
3 changed files with 169 additions and 0 deletions

32
base.yaml Normal file

@ -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'

53
keystone.yaml Normal file

@ -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'

84
mysql.yaml Normal file

@ -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 ]