c4d6d66e69
Change-Id: Ie37fd388ba3d6c7bc5ec03609d7d27c84ab474cc Closes-Bug: #1269551
98 lines
2.6 KiB
YAML
98 lines
2.6 KiB
YAML
HeatTemplateFormatVersion: '2012-12-12'
|
|
Description: |
|
|
Template which uses a wait condition to confirm that a minimal
|
|
cfn-init and cfn-signal has worked
|
|
Parameters:
|
|
key_name:
|
|
Type: String
|
|
flavor:
|
|
Type: String
|
|
image:
|
|
Type: String
|
|
subnet:
|
|
Type: String
|
|
timeout:
|
|
Type: Number
|
|
Resources:
|
|
CfnUser:
|
|
Type: AWS::IAM::User
|
|
SmokeSecurityGroup:
|
|
Type: AWS::EC2::SecurityGroup
|
|
Properties:
|
|
GroupDescription: Enable only ping and SSH access
|
|
SecurityGroupIngress:
|
|
- {CidrIp: 0.0.0.0/0, FromPort: '-1', IpProtocol: icmp, ToPort: '-1'}
|
|
- {CidrIp: 0.0.0.0/0, FromPort: '22', IpProtocol: tcp, ToPort: '22'}
|
|
SmokeKeys:
|
|
Type: AWS::IAM::AccessKey
|
|
Properties:
|
|
UserName: {Ref: CfnUser}
|
|
|
|
ElasticIp:
|
|
Type: AWS::EC2::EIP
|
|
Properties:
|
|
Domain: vpc
|
|
|
|
SmokeServerElasticIp:
|
|
Type: AWS::EC2::EIPAssociation
|
|
Properties:
|
|
EIP: {Ref: ElasticIp}
|
|
InstanceId: {Ref: SmokeServer}
|
|
|
|
SmokeServer:
|
|
Type: AWS::EC2::Instance
|
|
Metadata:
|
|
AWS::CloudFormation::Init:
|
|
config:
|
|
files:
|
|
/tmp/smoke-status:
|
|
content: smoke test complete
|
|
/etc/cfn/cfn-credentials:
|
|
content:
|
|
Fn::Replace:
|
|
- SmokeKeys: {Ref: SmokeKeys}
|
|
SecretAccessKey:
|
|
'Fn::GetAtt': [SmokeKeys, SecretAccessKey]
|
|
- |
|
|
AWSAccessKeyId=SmokeKeys
|
|
AWSSecretKey=SecretAccessKey
|
|
mode: '000400'
|
|
owner: root
|
|
group: root
|
|
Properties:
|
|
ImageId: {Ref: image}
|
|
InstanceType: {Ref: flavor}
|
|
KeyName: {Ref: key_name}
|
|
SubnetId: {Ref: subnet}
|
|
SecurityGroups:
|
|
- {Ref: SmokeSecurityGroup}
|
|
UserData:
|
|
Fn::Replace:
|
|
- WaitHandle: {Ref: WaitHandle}
|
|
- |
|
|
#!/bin/bash -v
|
|
/opt/aws/bin/cfn-init
|
|
/opt/aws/bin/cfn-signal -e 0 --data "`cat /tmp/smoke-status`" \
|
|
--id smoke_status "WaitHandle"
|
|
WaitHandle:
|
|
Type: AWS::CloudFormation::WaitConditionHandle
|
|
WaitCondition:
|
|
Type: AWS::CloudFormation::WaitCondition
|
|
DependsOn: SmokeServer
|
|
Properties:
|
|
Handle: {Ref: WaitHandle}
|
|
Timeout: {Ref: timeout}
|
|
Outputs:
|
|
WaitConditionStatus:
|
|
Description: Contents of /tmp/smoke-status on SmokeServer
|
|
Value:
|
|
Fn::GetAtt: [WaitCondition, Data]
|
|
ElasticIp_Id:
|
|
Description: Elastic ip allocation id
|
|
Value:
|
|
Fn::GetAtt: [ElasticIp, AllocationId]
|
|
SmokeServerElasticIp:
|
|
Description: Elastic ip address of server
|
|
Value:
|
|
Ref: ElasticIp
|