aboutsummaryrefslogtreecommitdiffstats
path: root/heat.yaml
diff options
context:
space:
mode:
authorClint Byrum <clint@fewbar.com>2013-04-18 11:17:08 -0700
committerClint Byrum <clint@fewbar.com>2013-04-18 11:17:08 -0700
commit67533a2d9dc87454ca2cbfe4778aa280e1a6392e (patch)
treee5b4a6079aa4884642a5672f3007dd9ca4de136a /heat.yaml
parenta15ca0394cb8427d11070ba6a0512b3e87ece833 (diff)
Add stack for deploying Heat.
Diffstat (limited to 'heat.yaml')
-rw-r--r--heat.yaml111
1 files changed, 111 insertions, 0 deletions
diff --git a/heat.yaml b/heat.yaml
new file mode 100644
index 00000000..351feae5
--- /dev/null
+++ b/heat.yaml
@@ -0,0 +1,111 @@
+HeatTemplateFormatVersion: '2012-12-12'
+Description: 'HEAT Template - Heat Engine and API'
+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
+ HeatUser:
+ Description: Heat database username.
+ Type: String
+ Default: heat
+ HeatEngineImage:
+ Type: String
+ HeatApiImage:
+ Type: String
+ RabbitMQHost:
+ Description: Host for RabbitMQ
+ Type: String
+ RabbitMQPassword:
+ Description: Password for RabbitMQ
+ Type: String
+ ApiGroupSize:
+ Description: How many API nodes to run
+ Type: Integer
+ Default: 1
+ AvailabilityZones:
+ Type: List
+ Default: [ 1 ]
+Resources:
+ EngineAccessPolicy:
+ Type: OS::Heat::AccessPolicy
+ Properties:
+ AllowedResources: [ HeatEngine ]
+ EngineUser:
+ Type: AWS::IAM::User
+ Properties:
+ Policies: [ { Ref: EngineAccessPolicy } ]
+ EngineKey:
+ Type: AWS::IAM::AccessKey
+ Properties:
+ UserName:
+ Ref: EngineUser
+ ApiAccessPolicy:
+ Type: OS::Heat::AccessPolicy
+ Properties:
+ AllowedResources: [ HeatAPILaunch ]
+ ApiUser:
+ Type: AWS::IAM::User
+ Properties:
+ Policies: [ { Ref: ApiAccessPolicy } ]
+ ApiKey:
+ Type: AWS::IAM::AccessKey
+ Properties:
+ UserName:
+ Ref: ApiUser
+ HeatAPILaunch:
+ Type: AWS::AutoScaling::LaunchConfiguration
+ Metadata:
+ OpenStack::ImageBuilder::Elements: [ heat-api ]
+ OpenStack::Config:
+ heat:
+ rpc_backend: heat.openstack.common.rpc.impl_kombu
+ rabbit:
+ host: {Ref: RabbitMQHost}
+ password: {Ref: RabbitMQPassword}
+ access_key_id:
+ Ref: ApiKey
+ secret_key:
+ Fn::GetAtt: [ ApiKey, SecretAccessKey ]
+ stack:
+ name: {Ref: 'AWS::StackName'}
+ region: {Ref: 'AWS::Region'}
+ refresh:
+ - resource: HeatAPILaunch
+ Properties:
+ ImageId:
+ {Ref: HeatApiImage}
+ InstanceType: {Ref: InstanceType}
+ KeyName: {Ref: KeyName}
+ UserData: "#!/bin/bash\ntouch /tmp/userdata-finished\necho Userdata finished $(date)\n"
+ HeatAPI:
+ Type: OS::Heat::InstanceGroup
+ Properties:
+ LaunchConfiguration: {Ref: HeatApiLaunch}
+ Size: {Ref: ApiGroupSize}
+ AvailabilityZones: {Ref: AvailabilityZones}
+ HeatEngine:
+ Type: AWS::EC2::Instance
+ Properties:
+ ImageId:
+ {Ref: HeatEngineImage}
+ Metadata:
+ OpenStack::Config:
+ heat:
+ rpc_backend: heat.openstack.common.rpc.impl_kombu
+ rabbit:
+ host: {Ref: RabbitMQHost}
+ password: {Ref: RabbitMQPassword}
+ access_key_id:
+ Ref: EngineKey
+ secret_key:
+ Fn::GetAtt: [ EngineKey, SecretAccessKey ]
+ stack:
+ name: {Ref: 'AWS::StackName'}
+ region: {Ref: 'AWS::Region'}
+ refresh:
+ - resource: HeatEngine