Skip to content

Commit 7d77636

Browse files
authored
fix: make dedicated interconnect comply with guide (#913)
1 parent 49347f5 commit 7d77636

File tree

19 files changed

+384
-196
lines changed

19 files changed

+384
-196
lines changed

1-org/envs/shared/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
| dns\_hub\_project\_id | The DNS hub project ID |
3737
| domains\_to\_allow | The list of domains to allow users from in IAM. |
3838
| interconnect\_project\_id | The Dedicated Interconnect project ID |
39+
| interconnect\_project\_number | The Dedicated Interconnect project number |
3940
| logs\_export\_bigquery\_dataset\_name | The log bucket for destination of log exports. See https://cloud.google.com/logging/docs/routing/overview#buckets |
4041
| logs\_export\_logbucket\_name | The log bucket for destination of log exports. See https://cloud.google.com/logging/docs/routing/overview#buckets |
4142
| logs\_export\_pubsub\_topic | The Pub/Sub topic for destination of log exports |

1-org/envs/shared/outputs.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ output "interconnect_project_id" {
5959
description = "The Dedicated Interconnect project ID"
6060
}
6161

62+
output "interconnect_project_number" {
63+
value = module.interconnect.project_number
64+
description = "The Dedicated Interconnect project number"
65+
}
66+
6267
output "scc_notifications_project_id" {
6368
value = module.scc_notifications.project_id
6469
description = "The SCC notifications project ID"

3-networks-dual-svpc/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,11 @@ This step makes use of the **Dual Shared VPC** architecture, and more details ca
9494

9595
If you provisioned the prerequisites listed in the [Dedicated Interconnect README](./modules/dedicated_interconnect/README.md), follow these steps to enable Dedicated Interconnect to access on-premises resources.
9696

97+
1. Rename `interconnect.tf.example` to `interconnect.tf` in the shared envs folder in `3-networks-dual-svpc/envs/shared`
98+
1. Update the file `interconnect.tf` with values that are valid for your environment for the interconnects, locations, candidate subnetworks, vlan_tag8021q and peer info.
9799
1. Rename `interconnect.tf.example` to `interconnect.tf` in base_env folder in `3-networks-dual-svpc/modules/base_env`.
98100
1. Update the file `interconnect.tf` with values that are valid for your environment for the interconnects, locations, candidate subnetworks, vlan_tag8021q and peer info.
101+
1. Set variable `enable_dedicated_interconnect` to `true`
99102
1. The candidate subnetworks and vlan_tag8021q variables can be set to `null` to allow the interconnect module to auto generate these values.
100103

101104
### Using Partner Interconnect

3-networks-dual-svpc/envs/shared/interconnect.tf.example

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,33 @@ module "dns_hub_interconnect" {
1818
source = "../../modules/dedicated_interconnect"
1919

2020
vpc_name = "c-dns-hub"
21-
interconnect_project_id = local.interconnect_project_id
21+
interconnect_project_id = local.dns_hub_project_id
2222

2323
region1 = local.default_region1
2424
region1_router1_name = module.dns_hub_region1_router1.router.name
2525
region1_interconnect1_candidate_subnets = ["169.254.0.0/29"]
2626
region1_interconnect1_vlan_tag8021q = "3931"
27-
region1_interconnect1 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-1"
27+
region1_interconnect1 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-1"
2828
region1_interconnect1_location = "las-zone1-770"
2929
region1_interconnect1_onprem_dc = "onprem-dc1"
3030
region1_router2_name = module.dns_hub_region1_router2.router.name
3131
region1_interconnect2_candidate_subnets = ["169.254.0.8/29"]
3232
region1_interconnect2_vlan_tag8021q = "3932"
33-
region1_interconnect2 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-2"
33+
region1_interconnect2 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-2"
3434
region1_interconnect2_location = "las-zone1-770"
3535
region1_interconnect2_onprem_dc = "onprem-dc2"
3636

3737
region2 = local.default_region2
3838
region2_router1_name = module.dns_hub_region2_router1.router.name
3939
region2_interconnect1_candidate_subnets = ["169.254.0.16/29"]
4040
region2_interconnect1_vlan_tag8021q = "3933"
41-
region2_interconnect1 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-3"
41+
region2_interconnect1 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-3"
4242
region2_interconnect1_location = "lax-zone2-19"
4343
region2_interconnect1_onprem_dc = "onprem-dc3"
4444
region2_router2_name = module.dns_hub_region2_router2.router.name
4545
region2_interconnect2_candidate_subnets = ["169.254.0.24/29"]
4646
region2_interconnect2_vlan_tag8021q = "3934"
47-
region2_interconnect2 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-4"
47+
region2_interconnect2 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-4"
4848
region2_interconnect2_location = "lax-zone1-403"
4949
region2_interconnect2_onprem_dc = "onprem-dc4"
5050

3-networks-dual-svpc/modules/base_env/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
| default\_region2 | Second subnet region. The shared vpc modules only configures two regions. | `string` | n/a | yes |
1414
| domain | The DNS name of peering managed zone, for instance 'example.com.'. Must end with a period. | `string` | n/a | yes |
1515
| egress\_policies | A list of all [egress policies](https://cloud.google.com/vpc-service-controls/docs/ingress-egress-rules#egress-rules-reference), each list object has a `from` and `to` value that describes egress\_from and egress\_to.<br><br>Example: `[{ from={ identities=[], identity_type="ID_TYPE" }, to={ resources=[], operations={ "SRV_NAME"={ OP_TYPE=[] }}}}]`<br><br>Valid Values:<br>`ID_TYPE` = `null` or `IDENTITY_TYPE_UNSPECIFIED` (only allow indentities from list); `ANY_IDENTITY`; `ANY_USER_ACCOUNT`; `ANY_SERVICE_ACCOUNT`<br>`SRV_NAME` = "`*`" (allow all services) or [Specific Services](https://cloud.google.com/vpc-service-controls/docs/supported-products#supported_products)<br>`OP_TYPE` = [methods](https://cloud.google.com/vpc-service-controls/docs/supported-method-restrictions) or [permissions](https://cloud.google.com/vpc-service-controls/docs/supported-method-restrictions) | <pre>list(object({<br> from = any<br> to = any<br> }))</pre> | `[]` | no |
16+
| enable\_dedicated\_interconnect | Enable Dedicated Interconnect in the environment. | `bool` | `false` | no |
1617
| enable\_partner\_interconnect | Enable Partner Interconnect in the environment. | `bool` | `false` | no |
1718
| env | The environment to prepare (ex. development) | `string` | n/a | yes |
1819
| environment\_code | A short form of the folder level resources (environment) within the Google Cloud organization (ex. d). | `string` | n/a | yes |

3-networks-dual-svpc/modules/base_env/interconnect.tf.example

Lines changed: 94 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,105 @@
1414
* limitations under the License.
1515
*/
1616

17+
locals {
18+
base_config = {
19+
"development" = {
20+
region1_interconnect1_candidate_subnets = ["169.254.0.192/29"]
21+
region1_interconnect1_vlan_tag8021q = "3905"
22+
region1_interconnect2_candidate_subnets = ["169.254.0.200/29"]
23+
region1_interconnect2_vlan_tag8021q = "3906"
24+
region2_interconnect1_candidate_subnets = ["169.254.0.208/29"]
25+
region2_interconnect1_vlan_tag8021q = "3907"
26+
region2_interconnect2_candidate_subnets = ["169.254.0.216/29"]
27+
region2_interconnect2_vlan_tag8021q = "3908"
28+
},
29+
"non-production" = {
30+
region1_interconnect1_candidate_subnets = ["169.254.0.128/29"]
31+
region1_interconnect1_vlan_tag8021q = "3915"
32+
region1_interconnect2_candidate_subnets = ["169.254.0.136/29"]
33+
region1_interconnect2_vlan_tag8021q = "3916"
34+
region2_interconnect1_candidate_subnets = ["169.254.0.144/29"]
35+
region2_interconnect1_vlan_tag8021q = "3917"
36+
region2_interconnect2_candidate_subnets = ["169.254.0.152/29"]
37+
region2_interconnect2_vlan_tag8021q = "3918"
38+
},
39+
"production" = {
40+
region1_interconnect1_candidate_subnets = ["169.254.0.64/29"]
41+
region1_interconnect1_vlan_tag8021q = "3925"
42+
region1_interconnect2_candidate_subnets = ["169.254.0.72/29"]
43+
region1_interconnect2_vlan_tag8021q = "3926"
44+
region2_interconnect1_candidate_subnets = ["169.254.0.80/29"]
45+
region2_interconnect1_vlan_tag8021q = "3927"
46+
region2_interconnect2_candidate_subnets = ["169.254.0.88/29"]
47+
region2_interconnect2_vlan_tag8021q = "3928"
48+
},
49+
}
50+
51+
restricted_config = {
52+
"development" = {
53+
region1_interconnect1_candidate_subnets = ["169.254.0.160/29"]
54+
region1_interconnect1_vlan_tag8021q = "3901"
55+
region1_interconnect2_candidate_subnets = ["169.254.0.168/29"]
56+
region1_interconnect2_vlan_tag8021q = "3902"
57+
region2_interconnect1_candidate_subnets = ["169.254.0.176/29"]
58+
region2_interconnect1_vlan_tag8021q = "3903"
59+
region2_interconnect2_candidate_subnets = ["169.254.0.184/29"]
60+
region2_interconnect2_vlan_tag8021q = "3904"
61+
},
62+
"non-production" = {
63+
region1_interconnect1_candidate_subnets = ["169.254.0.96/29"]
64+
region1_interconnect1_vlan_tag8021q = "3911"
65+
region1_interconnect2_candidate_subnets = ["169.254.0.104/29"]
66+
region1_interconnect2_vlan_tag8021q = "3912"
67+
region2_interconnect1_candidate_subnets = ["169.254.0.112/29"]
68+
region2_interconnect1_vlan_tag8021q = "3913"
69+
region2_interconnect2_candidate_subnets = ["169.254.0.120/29"]
70+
region2_interconnect2_vlan_tag8021q = "3914"
71+
},
72+
"production" = {
73+
region1_interconnect1_candidate_subnets = ["169.254.0.32/29"]
74+
region1_interconnect1_vlan_tag8021q = "3921"
75+
region1_interconnect2_candidate_subnets = ["169.254.0.40/29"]
76+
region1_interconnect2_vlan_tag8021q = "3922"
77+
region2_interconnect1_candidate_subnets = ["169.254.0.48/29"]
78+
region2_interconnect1_vlan_tag8021q = "3923"
79+
region2_interconnect2_candidate_subnets = ["169.254.0.56/29"]
80+
region2_interconnect2_vlan_tag8021q = "3924"
81+
},
82+
}
83+
}
84+
1785
module "shared_restricted_interconnect" {
1886
source = "../dedicated_interconnect"
1987

2088
vpc_name = "${var.environment_code}-shared-restricted"
21-
interconnect_project_id = local.interconnect_project_id
89+
interconnect_project_id = local.restricted_project_id
2290

2391
region1 = var.default_region1
2492
region1_router1_name = module.restricted_shared_vpc.region1_router1.router.name
25-
region1_interconnect1_candidate_subnets = ["169.254.0.160/29"]
26-
region1_interconnect1_vlan_tag8021q = "3901"
27-
region1_interconnect1 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-1"
93+
region1_interconnect1_candidate_subnets = local.restricted_config[var.env]["region1_interconnect1_candidate_subnets"]
94+
region1_interconnect1_vlan_tag8021q = local.restricted_config[var.env]["region1_interconnect1_vlan_tag8021q"]
95+
region1_interconnect1 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-1"
2896
region1_interconnect1_location = "las-zone1-770"
2997
region1_interconnect1_onprem_dc = "onprem-dc1"
3098
region1_router2_name = module.restricted_shared_vpc.region1_router2.router.name
31-
region1_interconnect2_candidate_subnets = ["169.254.0.168/29"]
32-
region1_interconnect2_vlan_tag8021q = "3902"
33-
region1_interconnect2 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-2"
99+
region1_interconnect2_candidate_subnets = local.restricted_config[var.env]["region1_interconnect2_candidate_subnets"]
100+
region1_interconnect2_vlan_tag8021q = local.restricted_config[var.env]["region1_interconnect2_vlan_tag8021q"]
101+
region1_interconnect2 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-2"
34102
region1_interconnect2_location = "las-zone1-770"
35103
region1_interconnect2_onprem_dc = "onprem-dc2"
36104

37105
region2 = var.default_region2
38106
region2_router1_name = module.restricted_shared_vpc.region2_router1.router.name
39-
region2_interconnect1_candidate_subnets = ["169.254.0.176/29"]
40-
region2_interconnect1_vlan_tag8021q = "3903"
41-
region2_interconnect1 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-3"
107+
region2_interconnect1_candidate_subnets = local.restricted_config[var.env]["region2_interconnect1_candidate_subnets"]
108+
region2_interconnect1_vlan_tag8021q = local.restricted_config[var.env]["region2_interconnect1_vlan_tag8021q"]
109+
region2_interconnect1 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-3"
42110
region2_interconnect1_location = "lax-zone2-19"
43111
region2_interconnect1_onprem_dc = "onprem-dc3"
44112
region2_router2_name = module.restricted_shared_vpc.region2_router2.router.name
45-
region2_interconnect2_candidate_subnets = ["169.254.0.184/29"]
46-
region2_interconnect2_vlan_tag8021q = "3904"
47-
region2_interconnect2 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-4"
113+
region2_interconnect2_candidate_subnets = local.restricted_config[var.env]["region2_interconnect2_candidate_subnets"]
114+
region2_interconnect2_vlan_tag8021q = local.restricted_config[var.env]["region2_interconnect2_vlan_tag8021q"]
115+
region2_interconnect2 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-4"
48116
region2_interconnect2_location = "lax-zone1-403"
49117
region2_interconnect2_onprem_dc = "onprem-dc4"
50118

@@ -67,33 +135,33 @@ module "shared_base_interconnect" {
67135
source = "../dedicated_interconnect"
68136

69137
vpc_name = "${var.environment_code}-shared-base"
70-
interconnect_project_id = local.interconnect_project_id
138+
interconnect_project_id = local.base_project_id
71139

72140
region1 = var.default_region1
73141
region1_router1_name = module.base_shared_vpc.region1_router1.router.name
74-
region1_interconnect1_candidate_subnets = ["169.254.0.192/29"]
75-
region1_interconnect1_vlan_tag8021q = "3905"
76-
region1_interconnect1 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-1"
142+
region1_interconnect1_candidate_subnets = local.base_config[var.env]["region1_interconnect1_candidate_subnets"]
143+
region1_interconnect1_vlan_tag8021q = local.base_config[var.env]["region1_interconnect1_vlan_tag8021q"]
144+
region1_interconnect1 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-1"
77145
region1_interconnect1_location = "las-zone1-770"
78146
region1_interconnect1_onprem_dc = "onprem-dc1"
79147
region1_router2_name = module.base_shared_vpc.region1_router2.router.name
80-
region1_interconnect2_candidate_subnets = ["169.254.0.200/29"]
81-
region1_interconnect2_vlan_tag8021q = "3906"
82-
region1_interconnect2 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-2"
148+
region1_interconnect2_candidate_subnets = local.base_config[var.env]["region1_interconnect2_candidate_subnets"]
149+
region1_interconnect2_vlan_tag8021q = local.base_config[var.env]["region1_interconnect2_vlan_tag8021q"]
150+
region1_interconnect2 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-2"
83151
region1_interconnect2_location = "las-zone1-770"
84152
region1_interconnect2_onprem_dc = "onprem-dc2"
85153

86154
region2 = var.default_region2
87155
region2_router1_name = module.base_shared_vpc.region2_router1.router.name
88-
region2_interconnect1_candidate_subnets = ["169.254.0.208/29"]
89-
region2_interconnect1_vlan_tag8021q = "3907"
90-
region2_interconnect1 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-3"
156+
region2_interconnect1_candidate_subnets = local.base_config[var.env]["region2_interconnect1_candidate_subnets"]
157+
region2_interconnect1_vlan_tag8021q = local.base_config[var.env]["region2_interconnect1_vlan_tag8021q"]
158+
region2_interconnect1 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-3"
91159
region2_interconnect1_location = "lax-zone2-19"
92160
region2_interconnect1_onprem_dc = "onprem-dc3"
93161
region2_router2_name = module.base_shared_vpc.region2_router2.router.name
94-
region2_interconnect2_candidate_subnets = ["169.254.0.216/29"]
95-
region2_interconnect2_vlan_tag8021q = "3908"
96-
region2_interconnect2 = "https://www.googleapis.com/compute/v1/projects/example-interconnect-project/global/interconnects/example-interconnect-4"
162+
region2_interconnect2_candidate_subnets = local.base_config[var.env]["region2_interconnect2_candidate_subnets"]
163+
region2_interconnect2_vlan_tag8021q = local.base_config[var.env]["region2_interconnect2_vlan_tag8021q"]
164+
region2_interconnect2 = "https://www.googleapis.com/compute/v1/projects/${local.interconnect_project_id}/global/interconnects/example-interconnect-4"
97165
region2_interconnect2_location = "lax-zone1-403"
98166
region2_interconnect2_onprem_dc = "onprem-dc4"
99167

0 commit comments

Comments
 (0)