aws-must-templates 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +390 -0
  3. data/lib/aws-must-templates.rb +2 -0
  4. data/lib/tasks/cross-ref.rb +78 -0
  5. data/lib/tasks/suite.rake +292 -0
  6. data/lib/test-suites/test_suites.rb +115 -0
  7. data/mustache/commonCfnSignal.mustache +34 -0
  8. data/mustache/commonCreationPolicy.mustache +33 -0
  9. data/mustache/commonDependsOn.mustache +25 -0
  10. data/mustache/commonInstanceType.mustache +27 -0
  11. data/mustache/commonKeyValue.mustache +28 -0
  12. data/mustache/commonStackRef.mustache +23 -0
  13. data/mustache/commonValue.mustache +34 -0
  14. data/mustache/initializeCFinit.mustache +27 -0
  15. data/mustache/initializeCFtools.mustache +27 -0
  16. data/mustache/initializeCfnInitHupFiles.mustache +85 -0
  17. data/mustache/initializeInstallAwsCli.mustache +32 -0
  18. data/mustache/initializeInstallChef.mustache +37 -0
  19. data/mustache/initializeProvisionChefZero.mustache +36 -0
  20. data/mustache/initializeStartCfnHup.mustache +25 -0
  21. data/mustache/mapping.mustache +27 -0
  22. data/mustache/mappingSubnetConfig.mustache +27 -0
  23. data/mustache/mappings.mustache +71 -0
  24. data/mustache/output.mustache +38 -0
  25. data/mustache/parameter.mustache +35 -0
  26. data/mustache/resource.mustache +51 -0
  27. data/mustache/resourceInstance.mustache +52 -0
  28. data/mustache/resourceInstanceInitialize.mustache +120 -0
  29. data/mustache/resourceInstanceMetadata.mustache +65 -0
  30. data/mustache/resourceInstanceProfile.mustache +34 -0
  31. data/mustache/resourceInternetGateway.mustache +87 -0
  32. data/mustache/resourcePolicy.mustache +50 -0
  33. data/mustache/resourceProvisionChef.mustache +38 -0
  34. data/mustache/resourceRole.mustache +40 -0
  35. data/mustache/resourceS3Bucket.mustache +39 -0
  36. data/mustache/resourceSecurityGroup.mustache +46 -0
  37. data/mustache/resourceStack.mustache +45 -0
  38. data/mustache/resourceSubnet.mustache +41 -0
  39. data/mustache/resourceUser.mustache +58 -0
  40. data/mustache/resourceVPC.mustache +44 -0
  41. data/mustache/resourceWait.mustache +39 -0
  42. data/mustache/resources.mustache +65 -0
  43. data/mustache/root.mustache +244 -0
  44. data/mustache/tag.mustache +27 -0
  45. data/pics/test-suites.jpg +0 -0
  46. metadata +146 -0
@@ -0,0 +1,65 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+ ## <a id="resourceInstanceMetadata.mustache"></a>resourceInstanceMetadata.mustache <a class='navigator' href='#top'>[top]</a>
7
+
8
+ The Metadata attribute enables you to associate structured data with a
9
+ resource. By adding a Metadata attribute to a resource, you can add
10
+ data in JSON format to the resource declaration.
11
+
12
+ **Attributes**:
13
+
14
+ * `Initialize`: array of
15
+ * `StartCfnHup`: see [initializeCfnInitHupFiles](#initializeCfnInitHupFiles.mustache)
16
+
17
+ +++close+++
18
+
19
+ }}
20
+ {{! +++fold-on+++ }}
21
+
22
+ {{! NOTICE: check for 'resourceInstanceInitialize.mustache' for using
23
+ '#Initialize' array to setup `UserData` -script }}
24
+
25
+ {{# Initialize.length }}
26
+ "AWS::CloudFormation::Init":{
27
+ "config" : {
28
+ "packages" : {
29
+ },
30
+ "groups" : {
31
+ },
32
+ "users" : {
33
+ },
34
+ "sources" : {
35
+ },
36
+ "files" : {
37
+ "/tmp/cfn-init.txt": {
38
+ "content":{
39
+ "Fn::Join":["", [ "Installed in cfn-init", "\n" ]]
40
+ }
41
+ , "mode":"000444"
42
+ , "owner":"root"
43
+ , "group":"root"
44
+ }
45
+ {{# Initialize }}{{# StartCfnHup }}, {{> initializeCfnInitHupFiles }}{{/ StartCfnHup }}{{/ Initialize }}
46
+ },
47
+ "commands" : {
48
+ },
49
+ "services" : {
50
+ }
51
+ }
52
+
53
+ } {{! AWS::CloudFormation::Init" }}
54
+ {{/ Initialize.length }}
55
+
56
+ {{! Add a metadata field, which, when updated, triggers cfn-hup. c.f. initializeCfnInitHupFiles }}
57
+ {{# Initialize }}{{# StartCfnHup }}
58
+ , "CfnHup": "updating this field causes cfn-hup to trigger"
59
+ {{/ StartCfnHup }}{{/ Initialize }}
60
+
61
+
62
+
63
+
64
+
65
+ {{! +++fold-off+++ }}
@@ -0,0 +1,34 @@
1
+ {{!
2
+
3
+ +++start+++
4
+
5
+
6
+ ## <a id="resourceInstanceProfile.mustache"></a>resourceInstanceProfile.mustache <a class='navigator' href='#top'>[top]</a>
7
+
8
+ a container for an IAM role and enables you to pass role information to an Amazon EC2 instance when the instance starts
9
+
10
+ **Attributes**: context= `./resources/Instance`
11
+
12
+ * `Name`: name of the InstanceProfile to create
13
+
14
+
15
+
16
+ +++close+++
17
+
18
+ }}
19
+
20
+ {{! +++fold-on+++ }}
21
+
22
+
23
+ "{{Name}}" : {
24
+ "Type" : "AWS::IAM::InstanceProfile",
25
+ "Properties" : {
26
+ "Path" : "/",
27
+ "Roles" : [{{# Roles}}{ "Ref": "{{Ref}}"}{{_comma}}{{/ Roles}} ]
28
+ }
29
+ },
30
+
31
+
32
+
33
+
34
+ {{! +++fold-off+++ }}
@@ -0,0 +1,87 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+
7
+ ## <a id="resourceInternetGateway.mustache"></a>resourceInternetGateway.mustache <a class='navigator' href='#top'>[top]</a>
8
+
9
+ Creates a new Internet gateway in your AWS account. After creating the
10
+ Internet gateway, attach it to a VPC, and create/attach a routetable
11
+ to `Vpc`, and add a routetable entry entry to enable internet
12
+ access on `Vpc` && `Subnet`
13
+
14
+ **Attributes**: context= `./resources/InstanceSecurityGroup`
15
+
16
+ * `Name` : of the Internet Gateway
17
+ * `Vpc`: reference to VPC where to atttace
18
+ * `Subnet`: reference to VPC where to attach route to InternetGateway
19
+ * `Tags`: (optional) as [commonKeyValue.mustache](#commonKeyValue.mustache)
20
+
21
+
22
+ +++close+++
23
+
24
+ }}
25
+
26
+ {{! +++fold-on+++ }}
27
+
28
+
29
+ {{! Create internet gateway }}
30
+ "{{Name}}" : {
31
+ "Type" : "AWS::EC2::InternetGateway",
32
+ "Properties" : {
33
+ "Tags" : [ {{# Tags }}{{> commonKeyValue }}{{_comma}}{{/ Tags }}]
34
+ }
35
+ },
36
+
37
+ {{! Attache the internet gateway created to VPC }}
38
+ "Attach{{Vpc}}" : {
39
+ "Type" : "AWS::EC2::VPCGatewayAttachment",
40
+ "Properties" : {
41
+ "VpcId" : { "Ref" : "{{Vpc}}" },
42
+ "InternetGatewayId" : { "Ref" : "{{Name}}" }
43
+ }
44
+ },
45
+
46
+
47
+ {{! Create a route table for VPC }}
48
+
49
+ "RouteTable{{Vpc}}" : {
50
+ "Type" : "AWS::EC2::RouteTable",
51
+ "Properties" : {
52
+ "VpcId" : { "Ref" : "{{ Vpc }}" },
53
+ "Tags" : [
54
+ {"Key": "Name", "Value" : "RouteTable{{Vpc}}" }
55
+ , {"Key" : "Application", "Value" : { "Ref" : "AWS::StackId"} }
56
+ ]
57
+ }
58
+ },
59
+
60
+
61
+ {{! Add a route to internet gateway created }}
62
+
63
+ "Route{{Vpc}}" : {
64
+ "Type" : "AWS::EC2::Route",
65
+ "DependsOn" : "Attach{{Vpc}}",
66
+ "Properties" : {
67
+ "RouteTableId" : { "Ref" : "RouteTable{{Vpc}}" }
68
+ , "DestinationCidrBlock" : "0.0.0.0/0"
69
+ , "GatewayId" : { "Ref" : "{{Name}}" }
70
+ }
71
+ },
72
+
73
+ {{! Associates a subnet with a route table. }}
74
+
75
+ "RouteTableAssociation{{Subnet}}" : {
76
+ "Type" : "AWS::EC2::SubnetRouteTableAssociation"
77
+ , "Properties" : {
78
+ "SubnetId" : { "Ref" : "{{Subnet}}" }
79
+ , "RouteTableId" : { "Ref" : "RouteTable{{Vpc}}" }
80
+ }
81
+ }
82
+
83
+ {{_comma}}
84
+
85
+
86
+
87
+ {{! +++fold-off+++ }}
@@ -0,0 +1,50 @@
1
+ {{!
2
+
3
+ +++start+++
4
+
5
+
6
+ ## <a id="resourcePolicy.mustache"></a>resourcePolicy.mustache <a class='navigator' href='#top'>[top]</a>
7
+
8
+ To assign permissions to a user, group, role, or resource, you create
9
+ a policy, which is a document that explicitly lists permissions.
10
+
11
+ **Attributes**: context= `./resources/Policy`
12
+
13
+ * `Name`: name of the Role to create
14
+ * `Statements` array of
15
+ * `Effect`: Allow/Deny
16
+ * `Actions`: list of actions for the policy
17
+ * `Resource`: array of [commonValues](#commonValue.mustache) concatenated to create resource reference
18
+
19
+
20
+ +++close+++
21
+
22
+ }}
23
+
24
+ {{! +++fold-on+++ }}
25
+
26
+ "{{Name}}" : {
27
+ "Type" : "AWS::IAM::Policy",
28
+ "Properties" : {
29
+ "PolicyName" : "{{Name}}",
30
+ "Roles" : [ { "Ref" : "{{RoleRef}}" } ],
31
+ "PolicyDocument" : {
32
+ "Statement" : [
33
+ {{# Statements }}
34
+ {
35
+ "Effect" : "{{Effect}}",
36
+ "Action" : [ {{{Actions}}} ],
37
+ "Resource" :
38
+ {{^ Resource.length }} "{{ Resource }}" {{/ Resource.length }}
39
+ {{# Resource.length }} { "Fn::Join" : [ "", [ {{/ Resource.length }}
40
+ {{# Resource }}{{> commonValue }}{{ _comma }} {{/ Resource}}
41
+ {{# Resource.length }}] ] } {{/ Resource.length }}
42
+ }{{_comma}}
43
+ {{/ Statements }}
44
+ ]
45
+ }
46
+ }
47
+ }{{_comma}}
48
+
49
+
50
+ {{! +++fold-off+++ }}
@@ -0,0 +1,38 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+
7
+ ## <a id="initializeProvisionChef.mustache"></a>initializeProvisionChef.mustache<a class='navigator' href='#top'> [top]</a>
8
+
9
+ UserData -script to provision Chef
10
+
11
+ **Attributes**: context= `./resources/Instance/InstallChef`
12
+
13
+ * `Node`: Chef node to provision
14
+ * `ChefZeroHost` : host where ChefZero can be accessed
15
+
16
+
17
+ +++close+++
18
+
19
+ }}
20
+
21
+ {{! +++fold-on+++ }}
22
+
23
+
24
+ , "NODE={{Node}}\n"
25
+ {{#ChefZeroHost}}
26
+ , "CHEF_ZERO_HOST='", {{> commonValue }}, "'\n"
27
+ {{/ChefZeroHost}}
28
+ , "CHEF_ZERO_HOST=$(echo $CHEF_ZERO_HOST)\n" {{! Removes new-line, which Ref -contruct creates }}
29
+ , "echo $(date): Create directory /etc/chef - to store client.pem Q\n"
30
+ , "[ -d /etc/chef ] || sudo mkdir /etc/chef \n"
31
+ , "echo $(date): Generating /tmp/fake.pem \n"
32
+ , "openssl genrsa -passout pass:'' -out /tmp/fake.pem 2048\n"
33
+ , "echo $(date): start chef provision on node $NODE \n"
34
+ , "sudo chef-client --validation_key /tmp/fake.pem --server http://$CHEF_ZERO_HOST:8889 --node-name $NODE --log_level info\n"
35
+ , "echo $(date): chef provisioned node $NODE successfully \n"
36
+
37
+
38
+ {{! +++fold-off+++ }}
@@ -0,0 +1,40 @@
1
+ {{!
2
+
3
+ +++start+++
4
+
5
+
6
+ ## <a id="resourceRole.mustache"></a>resourceRole.mustache <a class='navigator' href='#top'>[top]</a>
7
+
8
+ AWS Identity and Access Management (IAM) role.
9
+
10
+ **Attributes**: context= `./resources/Instance`
11
+
12
+ * `Name`: name of the Role to create
13
+ * `Resource`: resources you allow the action on
14
+
15
+
16
+
17
+ +++close+++
18
+
19
+ }}
20
+
21
+ {{! +++fold-on+++ }}
22
+
23
+
24
+ "{{Name}}" : {
25
+ "Type" : "AWS::IAM::Role"
26
+ , "Properties" : {
27
+ "Path" : "/",
28
+ "AssumeRolePolicyDocument" : {
29
+ "Statement" : [ {
30
+ "Effect" : "Allow",
31
+ "Principal" : {
32
+ "Service" : [ "ec2.amazonaws.com" ]
33
+ },
34
+ "Action" : [ "sts:AssumeRole" ]
35
+ } ]
36
+ }
37
+ }
38
+ }{{_comma}}
39
+
40
+ {{! +++fold-off+++ }}
@@ -0,0 +1,39 @@
1
+ {{!
2
+
3
+ +++start+++
4
+
5
+
6
+ ## <a id="resourceS3Bucket.mustache"></a>resourceS3Bucket.mustache <a class='navigator' href='#top'>[top]</a>
7
+
8
+ Create an S3 Bucket.
9
+
10
+ **Attributes**: context= `./resources/Instance`
11
+
12
+ * `Name`: name of the S3 resource to create
13
+ * `BucketName`: A name for the bucket. If you don't specify a name,
14
+ AWS CloudFormation generates a unique physical ID and uses that ID
15
+ for the bucket name.
16
+ * `DeletionPolicy`: attribute you can preserve or (in some cases) backup
17
+ a resource when its stack is deleted. Valid values `Delete`,
18
+ `Retain` (default), `Snapshot`
19
+
20
+ +++close+++
21
+
22
+ }}
23
+
24
+ {{! +++fold-on+++ }}
25
+
26
+
27
+ "{{Name}}" : {
28
+ "Type" : "AWS::S3::Bucket"
29
+ {{> commonCreationPolicy }}
30
+ , "DeletionPolicy" : "{{# DeletionPolicy }}{{DeletionPolicy}}{{/ DeletionPolicy}}{{^ DeletionPolicy }}Retain{{/ DeletionPolicy}}"
31
+ , "Properties" : {
32
+ {{# BucketName }} "BucketName" : "{{BucketName}}" {{/ BucketName }}
33
+ {{!
34
+ ,"LifecycleConfiguration": { "Rules" : [ ] }
35
+ }}
36
+ }
37
+ }{{_comma}}
38
+
39
+ {{! +++fold-off+++ }}
@@ -0,0 +1,46 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+
7
+ ## <a id="resourceSecurityGroup.mustache"></a>resourceSecurityGroup.mustache <a class='navigator' href='#top'>[top]</a>
8
+
9
+ Create an EC2 Security Group
10
+
11
+ **Attributes**: context= `./resources/SecurityGroup`
12
+
13
+ * `Name` : of the security group
14
+ * `VpcId`: The Reference name physical ID of the VPC. given as commonValue, [commonValue.mustache](#commonValue.mustache)
15
+ * `SecurityGroupIngress`: Arrays in a SecurityGroupIngr
16
+ * `IpProtocol`: default tcp
17
+ * `FromPort`: default to `Port`
18
+ * `ToPort`: defaults to `Port`
19
+ * CidrIp given as commonValue, [commonValue.mustache](#commonValue.mustache)
20
+
21
+
22
+ +++close+++
23
+
24
+ }}
25
+
26
+ {{! +++fold-on+++ }}
27
+
28
+ "{{Name}}" : {
29
+ "Type" : "AWS::EC2::SecurityGroup",
30
+ "Properties" : {
31
+ "GroupDescription" : "Enable SSH access via port 22"
32
+ {{# VpcId }}, "VpcId": {{> commonValue }} {{/ VpcId }}
33
+ , "SecurityGroupIngress" : [
34
+ {{# SecurityGroupIngress }}
35
+ {
36
+ "IpProtocol" : {{#IpProtocol}}"{{IpProtocol}}"{{/IpProtocol}}{{^IpProtocol}}"tcp"{{/IpProtocol}},
37
+ "FromPort" : "{{#FromPort}}{{FromPort}}{{/FromPort}}{{^FromPort}}{{Port}}{{/FromPort}}",
38
+ "ToPort" : "{{#ToPort}}{{ToPort}}{{/ToPort}}{{^ToPort}}{{Port}}{{/ToPort}}",
39
+ "CidrIp" : {{> commonValue }}
40
+ } {{_comma}}
41
+ {{/ SecurityGroupIngress }}
42
+ ]
43
+ }
44
+ }{{_comma}}
45
+
46
+ {{! +++fold-off+++ }}
@@ -0,0 +1,45 @@
1
+ {{!
2
+
3
+ +++start+++
4
+
5
+
6
+ ## <a id="resourceStack.mustache"></a>resourceStack.mustache<a class='navigator' href='#top'>[top]</a>
7
+
8
+ Nests a stack as a resource in a top-level template.
9
+
10
+ **Attributes**: context= `./resources/Policy`
11
+
12
+ * `Name`: resource name given to the nested stack
13
+ * `TemplateFile`: local path used to create `TemplateUrl` for AWS::CloudFormation::Stack
14
+ * `DependsOn`: With the DependsOn attribute you can specify that the
15
+ creation of a specific resource follows another
16
+ * `Parameters` Array of sub documents
17
+ `Key`
18
+ `Value`
19
+
20
+
21
+
22
+ +++close+++
23
+
24
+ }}
25
+
26
+ {{! +++fold-on+++ }}
27
+
28
+ "{{Name}}" : {
29
+ "Type" : "AWS::CloudFormation::Stack"
30
+ {{> commonDependsOn }}
31
+ , "Properties" : {
32
+ "TemplateURL": "{{TemplateURL}}"
33
+ , "Parameters" : {
34
+ {{# Parameters }}
35
+ "{{Key}}" : {{> commonValue }}{{_comma}}
36
+ {{/ Parameters }}
37
+ }
38
+ }
39
+ }{{_comma}}
40
+
41
+
42
+ {{! +++fold-off+++ }}
43
+
44
+
45
+
@@ -0,0 +1,41 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+
7
+ ## <a id="resourceSubnet.mustache"></a>resourceSubnet.mustache <a class='navigator' href='#top'>[top]</a>
8
+
9
+ Creates a subnet in an existing VPC.
10
+
11
+ **Attributes**:
12
+
13
+ * `Name` : of the VPC resource
14
+ * `CidrBlock` or as [commonKeyValue.mustache](#commonKeyValue.mustache)
15
+ * `VpcId`: resource name of VPC
16
+ * `MapPublicIpOnLaunch`: Indicates whether instances that are
17
+ launched in this subnet receive a public IP address. By default,
18
+ the value is `false`.
19
+ * `Tags`: (optional) as [commonKeyValue.mustache](#commonKeyValue.mustache)
20
+
21
+
22
+ +++close+++
23
+
24
+ }}
25
+
26
+ {{! +++fold-on+++ }}
27
+
28
+
29
+ "{{Name}}" : {
30
+ "Type" : "AWS::EC2::Subnet"
31
+ {{> commonDependsOn }}
32
+ , "Properties" : {
33
+ "CidrBlock" : "{{CidrBlock}}"
34
+ , "Tags" : [ {{# Tags }}{{> commonKeyValue }}{{_comma}}{{/ Tags }}]
35
+ , "MapPublicIpOnLaunch" : {{^MapPublicIpOnLaunch}}false{{/ MapPublicIpOnLaunch}}{{# MapPublicIpOnLaunch}}{{MapPublicIpOnLaunch}}{{/ MapPublicIpOnLaunch}}
36
+ , "VpcId" : { "Ref" : "{{VpcId}}" }
37
+ }
38
+ }{{_comma}}
39
+
40
+
41
+ {{! +++fold-off+++ }}
@@ -0,0 +1,58 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+ ## <a id="resourceUser.mustache"></a>resourceUser.mustache <a class='navigator' href='#top'>[top]</a>
7
+
8
+ Creates User and AccessKey resources. User resource is associated with a fixed policy.
9
+
10
+
11
+ **Attributes**:
12
+
13
+ * `Name`: of the user resource, derives
14
+ * `KeyName`: also AccessKey resource for `Name` user
15
+
16
+ +++close+++
17
+
18
+ }}
19
+
20
+ {{! +++fold-on+++ }}
21
+
22
+
23
+
24
+ "{{Name}}":{
25
+ "Type":"AWS::IAM::User",
26
+ "Properties":{
27
+ "Path":"/",
28
+ "Policies":[
29
+ {
30
+ "PolicyName":"root",
31
+ "PolicyDocument":{
32
+ "Statement":[
33
+ {
34
+ "Effect":"Allow",
35
+ "Action":"cloudformation:DescribeStackResource",
36
+ "Resource":"*"
37
+ }
38
+ ]
39
+ }
40
+ }
41
+ ]
42
+ }
43
+ }
44
+
45
+ {{# KeyName }}
46
+ , "{{KeyName}}":{
47
+ "Type":"AWS::IAM::AccessKey",
48
+ "Properties":{
49
+ "UserName":{
50
+ "Ref":"{{Name}}"
51
+ }
52
+ }
53
+ }
54
+ {{/ KeyName }}
55
+
56
+ {{_comma}}
57
+
58
+ {{! +++fold-off+++ }}
@@ -0,0 +1,44 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+
7
+ ## <a id="resourceVPC.mustache"></a>resourceVPC.mustache <a class='navigator' href='#top'>[top]</a>
8
+
9
+ Creates a Virtual Private Cloud (VPC) with the CIDR block that you specify.
10
+
11
+ **Attributes**: context= `./resources/InstanceSecurityGroup`
12
+
13
+ * `Name` : of the VPC resource
14
+ * `CidrBlock` or as [commonKeyValue.mustache](#commonKeyValue.mustache)
15
+ * `EnableDnsSupport`: (= **true**) Specifies whether DNS resolution
16
+ is supported for the VPC. If this attribute is true, the Amazon
17
+ DNS server resolves DNS hostnames for your instances to their
18
+ corresponding IP addresses; otherwise, it does not.
19
+ * `EnableDnsHostnames`: (= **true**) Specifies whether the
20
+ instances launched in the VPC get DNS hostnames. If this
21
+ attribute is true, instances in the VPC get DNS hostnames;
22
+ otherwise, they do not. You can only set EnableDnsHostnames to
23
+ true if you also set the EnableDnsSupport attribute to true.
24
+ * `Tags`: (optional) as [commonKeyValue.mustache](#commonKeyValue.mustache)
25
+
26
+
27
+ +++close+++
28
+
29
+ }}
30
+
31
+ {{! +++fold-on+++ }}
32
+
33
+
34
+ "{{Name}}" : {
35
+ "Type" : "AWS::EC2::VPC",
36
+ "Properties" : {
37
+ "CidrBlock" : "{{ CidrBlock }}"
38
+ , "EnableDnsSupport": true
39
+ , "EnableDnsHostnames": true
40
+ , "Tags" : [ {{# Tags }}{{> commonKeyValue }}{{_comma}}{{/ Tags }}]
41
+ }
42
+ }{{_comma}}
43
+
44
+ {{! +++fold-off+++ }}
@@ -0,0 +1,39 @@
1
+ {{!
2
+
3
+
4
+ +++start+++
5
+
6
+
7
+ ## <a id="resourceWait.mustache"></a>resourceWait.mustache<a class='navigator' href='#top'> [top]</a>
8
+
9
+ Creates a WaitHandle, and a WaitCondition on a resource `DependsOn`.
10
+
11
+ **Attributes**:
12
+
13
+ * `Name`:
14
+ * `DependsOn`: Resource on which depents
15
+ * `Timeout`: The length of time (in seconds) to wait for the number of
16
+ signals that the Count property specifies.
17
+
18
+ +++close+++
19
+
20
+ }}
21
+
22
+ {{! +++fold-on+++ }}
23
+
24
+
25
+ "{{Name}}" : {
26
+ "Type" : "AWS::CloudFormation::WaitConditionHandle"
27
+ },
28
+
29
+ "{{Name}}Condition" : {
30
+ "Type" : "AWS::CloudFormation::WaitCondition"
31
+ {{> commonDependsOn }}
32
+ , "Properties" : {
33
+ "Handle" : { "Ref" : "{{Name}}" }
34
+ , "Timeout" : "{{Timeout}}"
35
+ }
36
+ }{{_comma}}
37
+
38
+
39
+ {{! +++fold-off+++ }}