-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo.yaml
95 lines (94 loc) · 2.87 KB
/
demo.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
AWSTemplateFormatVersion: 2010-09-09
Description: Lambda @ Edge demo
Parameters:
BaseDomainName:
Type: String
Default: demo.redhead.cloud
Description: Domain name to use for the demo
LoadBalancerBaseDomainName:
Type: String
Default: lb.demo.redhead.cloud
Description: Load balancer domain name
CIDR:
Type: String
Default: 10.0.0.0/16
Description: CIDR of the VPC
KeyPair:
Type: AWS::EC2::KeyPair::KeyName
Description: Key pair
CreateHostedZone:
Default: true
Type: String
AllowedValues:
- true
- false
Conditions:
CreateHostedZone: !Equals [ !Ref CreateHostedZone, "true" ]
Resources:
Network:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
Name: !Sub "${AWS::StackName}-network"
CIDR: !Ref CIDR
TemplateURL: vpc.yaml
AppA:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
Name: !Sub "${AWS::StackName}-app-a"
VPC: !GetAtt Network.Outputs.VPCId
KeyPair: !Ref KeyPair
SubnetA: !GetAtt Network.Outputs.PrivateSubnetA
SubnetB: !GetAtt Network.Outputs.PrivateSubnetB
TemplateURL: app.yaml
AppB:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
Name: !Sub "${AWS::StackName}-app-b"
VPC: !GetAtt Network.Outputs.VPCId
KeyPair: !Ref KeyPair
SubnetA: !GetAtt Network.Outputs.PrivateSubnetA
SubnetB: !GetAtt Network.Outputs.PrivateSubnetB
TemplateURL: app.yaml
AppC:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
Name: !Sub "${AWS::StackName}-app-c"
VPC: !GetAtt Network.Outputs.VPCId
KeyPair: !Ref KeyPair
SubnetA: !GetAtt Network.Outputs.PrivateSubnetA
SubnetB: !GetAtt Network.Outputs.PrivateSubnetB
TemplateURL: app.yaml
AppD:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
Name: !Sub "${AWS::StackName}-app-d"
VPC: !GetAtt Network.Outputs.VPCId
KeyPair: !Ref KeyPair
SubnetA: !GetAtt Network.Outputs.PrivateSubnetA
SubnetB: !GetAtt Network.Outputs.PrivateSubnetB
TemplateURL: app.yaml
LoadBalancer:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
Name: !Sub "${AWS::StackName}-lb"
VPC: !GetAtt Network.Outputs.VPCId
SubnetA: !GetAtt Network.Outputs.PublicSubnetA
SubnetB: !GetAtt Network.Outputs.PublicSubnetB
TargetGroupA: !GetAtt AppA.Outputs.TargetGroup
TargetGroupB: !GetAtt AppB.Outputs.TargetGroup
TargetGroupC: !GetAtt AppC.Outputs.TargetGroup
TargetGroupD: !GetAtt AppD.Outputs.TargetGroup
BaseDomainName: !Ref BaseDomainName
DomainName: !Ref LoadBalancerBaseDomainName
TemplateURL: lb.yaml
Zone:
Condition: CreateHostedZone
Type: AWS::Route53::HostedZone
Properties:
Name: !Ref BaseDomainName