Allow usage of predefined Network Stack
Some organisations already have predefined Network Stack.
aws-gerrit should be able to use them instead of creating
new one.
Feature: Issue 13161
Change-Id: I5f1ab54391916b29ac6b42ff55d22edac9c07456
diff --git a/Configuration.md b/Configuration.md
index 9003d14..57ae5eb 100644
--- a/Configuration.md
+++ b/Configuration.md
@@ -43,6 +43,8 @@
If not set, create a new Internet Gateway
* `VPC_ID`: Optional. Id of the existing VPC.
If not set, create a new VPC.
+* `SUBNET_ID`: Optional. Id of the existing Subnet.
+ If not set, create a new Network Stack.
#### LDAP
diff --git a/common-templates/cf-gerrit-network-stack.yml b/common-templates/cf-gerrit-network-stack.yml
index f856091..8017fb2 100644
--- a/common-templates/cf-gerrit-network-stack.yml
+++ b/common-templates/cf-gerrit-network-stack.yml
@@ -10,6 +10,10 @@
Type: String
Default: ""
Description: VPC id. If empty VPC will be created
+ SubnetIdProp:
+ Type: String
+ Default: ""
+ Description: Subnet id. If empty Network Stack will be created
Mappings:
# Hard values for the subnet masks. These masks define
# the range of internal IP addresses that can be assigned.
@@ -24,8 +28,11 @@
CIDR: '10.0.0.0/24'
Conditions:
- CreateInternetGateway: !Equals [!Ref InternetGatewayIdProp, ""]
CreateVPC: !Equals [!Ref VPCIdProp, ""]
+ CreateNetworkStack: !Equals [!Ref SubnetIdProp, ""]
+ CreateInternetGateway: !And
+ - !Equals [!Ref InternetGatewayIdProp, ""]
+ - !Condition CreateNetworkStack
Resources:
VPC:
Condition: CreateVPC
@@ -37,6 +44,7 @@
# Public subnets, where containers can have public IP addresses
PublicSubnetOne:
+ Condition: CreateNetworkStack
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone:
@@ -54,15 +62,18 @@
Condition: CreateInternetGateway
Type: AWS::EC2::InternetGateway
GatewayAttachement:
+ Condition: CreateNetworkStack
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !If [CreateVPC, !Ref 'VPC', !Ref 'VPCIdProp' ]
InternetGatewayId: !If [CreateInternetGateway, !Ref 'InternetGateway', !Ref 'InternetGatewayIdProp' ]
PublicRouteTable:
+ Condition: CreateNetworkStack
Type: AWS::EC2::RouteTable
Properties:
VpcId: !If [CreateVPC, !Ref 'VPC', !Ref 'VPCIdProp' ]
PublicRoute:
+ Condition: CreateNetworkStack
Type: AWS::EC2::Route
DependsOn: GatewayAttachement
Properties:
@@ -70,6 +81,7 @@
DestinationCidrBlock: '0.0.0.0/0'
GatewayId: !If [CreateInternetGateway, !Ref 'InternetGateway', !Ref 'InternetGatewayIdProp' ]
PublicSubnetOneRouteTableAssociation:
+ Condition: CreateNetworkStack
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnetOne
@@ -78,6 +90,6 @@
VPCRef:
Value: !If [CreateVPC, !Ref 'VPC', !Ref 'VPCIdProp' ]
PublicSubnetOneRef:
- Value: !Ref PublicSubnetOne
+ Value: !If [CreateNetworkStack, !Ref 'PublicSubnetOne', !Ref 'SubnetIdProp' ]
PublicOneCIDR:
Value: !FindInMap ['SubnetConfig', 'PublicOne', 'CIDR']
diff --git a/dual-master/Makefile b/dual-master/Makefile
index 007158d..15d2b86 100644
--- a/dual-master/Makefile
+++ b/dual-master/Makefile
@@ -40,6 +40,7 @@
ParameterKey=ECSKeyName,ParameterValue=$(CLUSTER_KEYS) \
ParameterKey=InternetGatewayIdProp,ParameterValue=$(INTERNET_GATEWAY_ID) \
ParameterKey=VPCIdProp,ParameterValue=$(VPC_ID) \
+ ParameterKey=SubnetIdProp,ParameterValue=$(SUBNET_ID) \
$(OPTIONAL_PARAMS)
service-master-1:
diff --git a/dual-master/cf-cluster.yml b/dual-master/cf-cluster.yml
index ccc78ee..6eec872 100644
--- a/dual-master/cf-cluster.yml
+++ b/dual-master/cf-cluster.yml
@@ -33,6 +33,10 @@
Type: String
Default: ""
Description: VPC id. If empty VPC will be created
+ SubnetIdProp:
+ Type: String
+ Default: ""
+ Description: Subnet id. If empty Network Stack will be created
ECSKeyName:
Type: String
Default: gerrit-cluster-keys
@@ -261,6 +265,7 @@
Parameters:
InternetGatewayIdProp: !Ref 'InternetGatewayIdProp'
VPCIdProp: !Ref 'VPCIdProp'
+ SubnetIdProp: !Ref 'SubnetIdProp'
Outputs:
ClusterName:
diff --git a/master-slave/Makefile b/master-slave/Makefile
index 9b6b70c..b9a382f 100644
--- a/master-slave/Makefile
+++ b/master-slave/Makefile
@@ -37,6 +37,7 @@
ParameterKey=ECSKeyName,ParameterValue=$(CLUSTER_KEYS) \
ParameterKey=InternetGatewayIdProp,ParameterValue=$(INTERNET_GATEWAY_ID) \
ParameterKey=VPCIdProp,ParameterValue=$(VPC_ID) \
+ ParameterKey=SubnetIdProp,ParameterValue=$(SUBNET_ID) \
$(OPTIONAL_PARAMS)
service-master:
diff --git a/master-slave/cf-cluster.yml b/master-slave/cf-cluster.yml
index d3a24fd..c3c64f0 100644
--- a/master-slave/cf-cluster.yml
+++ b/master-slave/cf-cluster.yml
@@ -33,6 +33,10 @@
Type: String
Default: ""
Description: VPC id. If empty VPC will be created
+ SubnetIdProp:
+ Type: String
+ Default: ""
+ Description: Subnet id. If empty Network Stack will be created
ECSKeyName:
Type: String
Default: gerrit-cluster-keys
@@ -205,6 +209,7 @@
Parameters:
InternetGatewayIdProp: !Ref 'InternetGatewayIdProp'
VPCIdProp: !Ref 'VPCIdProp'
+ SubnetIdProp: !Ref 'SubnetIdProp'
Outputs:
ClusterName:
diff --git a/single-master/Makefile b/single-master/Makefile
index 95a1f98..96d133c 100644
--- a/single-master/Makefile
+++ b/single-master/Makefile
@@ -33,6 +33,7 @@
ParameterKey=ECSKeyName,ParameterValue=$(CLUSTER_KEYS) \
ParameterKey=InternetGatewayIdProp,ParameterValue=$(INTERNET_GATEWAY_ID) \
ParameterKey=VPCIdProp,ParameterValue=$(VPC_ID) \
+ ParameterKey=SubnetIdProp,ParameterValue=$(SUBNET_ID) \
$(OPTIONAL_PARAMS)
service:
diff --git a/single-master/cf-cluster.yml b/single-master/cf-cluster.yml
index 4072f04..239ed31 100644
--- a/single-master/cf-cluster.yml
+++ b/single-master/cf-cluster.yml
@@ -33,6 +33,10 @@
Type: String
Default: ""
Description: VPC id. If empty VPC will be created
+ SubnetIdProp:
+ Type: String
+ Default: ""
+ Description: Subnet id. If empty Network Stack will be created
ECSKeyName:
Type: String
Default: gerrit-cluster-keys
@@ -181,6 +185,7 @@
Parameters:
InternetGatewayIdProp: !Ref 'InternetGatewayIdProp'
VPCIdProp: !Ref 'VPCIdProp'
+ SubnetIdProp: !Ref 'SubnetIdProp'
Outputs:
ClusterName: