-
Notifications
You must be signed in to change notification settings - Fork 0
/
CFN-Template-Kitchen-Sink-root.yaml
120 lines (119 loc) · 4.02 KB
/
CFN-Template-Kitchen-Sink-root.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Description: CFN-Template-Kitchen-Sink -- Root Stack
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
ProviderVPCCidrBlock:
Type: String
Description: 'The /16 CIDR block for the Provider VPC (Format Example: 10.0.0.0/16)'
MinLength: '9'
MaxLength: '18'
Default: 10.0.0.0/16
AllowedPattern: (\d{1,3})\.(\d{1,3})\.0\.0/16
ConstraintDescription: Must be a valid IP CIDR block with a /16
ConsumerVPCCidrBlock:
Type: String
Description: 'The /16 CIDR block for the Consumer VPC (Format Example: 172.31.0.0/16)'
MinLength: '9'
MaxLength: '18'
Default: 172.31.0.0/16
AllowedPattern: (\d{1,3})\.(\d{1,3})\.0\.0/16
ConstraintDescription: Must be a valid IP CIDR block with a /16
KeyPair:
Type: AWS::EC2::KeyPair::KeyName
Description: The name of an Amazon EC2 key pair in the region in which you are
creating a CloudFormation stack.
Default: VPC_Break-Fix_Project
AmazonLinuxAMIVersion:
Type: String
Default: AmazonLinuxAMI
AllowedValues:
- AmazonLinuxAMI
- AmazonLinux2AMI
CaseId:
Type: Number
Description: The Case ID for this environment
MinValue: '4000000000'
MaxValue: '5000000000'
Default: '4000000000'
ConstraintDescription: Must be a valid 10 digit number between 4000000000 and 5000000000
S3BucketName:
Type: String
S3BucketKey:
Type: String
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
-
Label:
default: VPC Details
Parameters:
- ProviderVPCCidrBlock
- ConsumerVPCCidrBlock
- KeyPair
- AmazonLinuxAMIVersion
- CaseId
-
Label:
default: S3 Bucket Details
Parameters:
- S3BucketName
- S3BucketKey
ParameterLabels:
ProviderVPCCidrBlock:
default: CIDR Block for Provider VPC
ConsumerVPCCidrBlock:
default: CIDR Block for Consumer VPC
AmazonLinuxAMIVersion:
default: Which Amazon Linux Version to Use
CaseId:
default: Case ID used to Tag Resources
S3Bucket:
default: S3 Bucket for Nested Stack Templates
S3Key:
default: S3 Key for Nested Stack Templates
Resources:
CreateProviderVpcResources:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
ProviderVPCCidrBlock: !Ref 'ProviderVPCCidrBlock'
CaseId: !Ref 'CaseId'
TemplateURL: !Sub https://${S3BucketName}.s3.amazonaws.com/${S3BucketKey}/CFN-Template-Kitchen-Sink-Provider-VPC-resources.yaml
CreateConsumerVpcResources:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
ConsumerVPCCidrBlock: !Ref 'ConsumerVPCCidrBlock'
CaseId: !Ref 'CaseId'
TemplateURL: !Sub https://${S3BucketName}.s3.amazonaws.com/${S3BucketKey}/CFN-Template-Kitchen-Sink-Consumer-VPC-resources.yaml
CreateInstances:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
KeyPair: !Ref 'KeyPair'
CaseId: !Ref 'CaseId'
AmazonLinuxAMIVersion: !Ref 'AmazonLinuxAMIVersion'
TemplateURL: !Sub https://${S3BucketName}.s3.amazonaws.com/${S3BucketKey}/CFN-Template-Kitchen-Sink-instances.yaml
DependsOn:
- CreateProviderVpcResources
- CreateConsumerVpcResources
CreatePeeringConnection:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
ProviderVPCCidrBlock: !Ref 'ProviderVPCCidrBlock'
ConsumerVPCCidrBlock: !Ref 'ConsumerVPCCidrBlock'
CaseId: !Ref 'CaseId'
TemplateURL: !Sub https://${S3BucketName}.s3.amazonaws.com/${S3BucketKey}/CFN-Template-Kitchen-Sink-VPC-peering.yaml
DependsOn:
- CreateProviderVpcResources
- CreateConsumerVpcResources
CreateLBs:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
CaseId: !Ref 'CaseId'
TemplateURL: !Sub https://${S3BucketName}.s3.amazonaws.com/${S3BucketKey}/CFN-Template-Kitchen-Sink-Provider-LBs.yaml
DependsOn:
- CreateProviderVpcResources
- CreateConsumerVpcResources
- CreateInstances