heat-tempest-plugin/heat_tempest_plugin/tests/scenario/templates/test_server_cfn_init.yaml

102 lines
2.7 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
SignalExtraArgs:
Type: String
Default: ""
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}
SignalExtraArgs: {Ref: SignalExtraArgs}
- |
#!/bin/bash -v
/usr/bin/cfn-init
/usr/bin/cfn-signal SignalExtraArgs -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