Skip to content

Commit a3d8e66

Browse files
author
Chris Love
authored
Merge pull request #72 from swathiswaminathan/master
Updated TF to 0.12
2 parents ba07555 + e3161a9 commit a3d8e66

File tree

8 files changed

+102
-66
lines changed

8 files changed

+102
-66
lines changed

Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ metadata:
3434
spec:
3535
containers:
3636
- name: ${containerName}
37-
image: gcr.io/pso-helmsman-cicd/jenkins-k8s-node:${env.CONTAINER_VERSION}
37+
image: gcr.io/pso-helmsman-cicd/jenkins-k8s-node:${env.JENKINS_CONTAINER_VERSION}
3838
command: ['cat']
3939
tty: true
4040
volumeMounts:

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ bootstrap:
106106
.PHONY: terraform_preapply
107107
terraform_preapply:
108108
terraform init terraform/
109-
terraform validate -check-variables=false terraform/
109+
terraform validate terraform/
110110
terraform plan -var "project=$(PROJECT)" -out=tfplan terraform/
111111

112112
.PHONY: terraform

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ gcloud init
163163

164164
### Tools
165165

166-
1. [Terraform >= 0.11.7](https://www.terraform.io/downloads.html)
166+
1. [Terraform >= 0.12](https://www.terraform.io/downloads.html)
167167
2. [Google Cloud SDK version >= 204.0.0](https://cloud.google.com/sdk/docs/downloads-versioned-archives)
168168
3. [kubectl matching the latest GKE version](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
169169
4. bash or bash compatible shell

terraform/main.tf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ limitations under the License.
1717
// Provides access to available Google Container Engine versions in a zone for a given project.
1818
// https://www.terraform.io/docs/providers/google/d/google_container_engine_versions.html
1919
data "google_container_engine_versions" "gke_version" {
20-
zone = "${var.zone_on_prem}"
20+
zone = var.zone_on_prem
2121
}
2222

2323
data "external" "account" {
2424
program = ["sh", "${path.module}/../scripts/get-gcloud-account.sh"]
2525
}
26+

terraform/provider.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ limitations under the License.
1616

1717
// Configures the GCP Cloud Provider with default project and region
1818
provider "google" {
19-
version = "~> 1.16.2"
20-
project = "${var.project}"
19+
version = "~> 2.11.0"
20+
project = var.project
2121
}

terraform/staging.tf

Lines changed: 71 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -23,72 +23,76 @@ limitations under the License.
2323
// Reserve regional external (static) IP addresses
2424

2525
locals {
26-
resource_labels = "${merge(var.labels, map("owner", data.external.account.result.gcloud_account))}"
26+
resource_labels = merge(
27+
var.labels,
28+
{
29+
"owner" = data.external.account.result.gcloud_account
30+
},
31+
)
2732
}
2833

2934
resource "google_compute_address" "staging_public_ip_1" {
3035
name = "gke-enterprise-demo-cloud-public-ip-1"
31-
region = "${var.region_cloud}"
36+
region = var.region_cloud
3237
}
3338

3439
resource "google_compute_address" "staging_public_ip_2" {
3540
name = "gke-enterprise-demo-cloud-public-ip-2"
36-
region = "${var.region_on_prem}"
41+
region = var.region_on_prem
3742
}
3843

3944
// STAGING: invokes a module to create a policy based VPN, custom network/subnet, firewall rules as Cloud
4045
module "staging_cloud" {
41-
source = "modules/datacenter"
42-
project = "${var.project}"
46+
source = "./modules/datacenter"
47+
project = var.project
4348
network_name = "gke-enterprise-demo-staging-cloud"
44-
subnet_region = "${var.region_cloud}"
45-
primary_range = "${lookup(var.cloud, "primary_range")}"
46-
secondary_range = "${lookup(var.cloud, "secondary_range")}"
47-
vpn_ip = "${google_compute_address.staging_public_ip_1.address}"
48-
peer_ip = "${google_compute_address.staging_public_ip_2.address}"
49-
destination_range = "${lookup(var.cloud, "destination_range")}"
50-
shared_secret = "${random_string.staging_shared_secret.result}"
49+
subnet_region = var.region_cloud
50+
primary_range = var.cloud["primary_range"]
51+
secondary_range = var.cloud["secondary_range"]
52+
vpn_ip = google_compute_address.staging_public_ip_1.address
53+
peer_ip = google_compute_address.staging_public_ip_2.address
54+
destination_range = var.cloud["destination_range"]
55+
shared_secret = random_string.staging_shared_secret.result
5156
}
5257

5358
// invokes a module to create policy based VPN, custom network/subnet, firewall rules as
5459
// STAGING: on prem data center
5560
module "staging_on_prem" {
56-
source = "modules/datacenter"
57-
project = "${var.project}"
61+
source = "./modules/datacenter"
62+
project = var.project
5863
network_name = "gke-enterprise-demo-staging-on-prem"
59-
subnet_region = "${var.region_on_prem}"
60-
primary_range = "${lookup(var.on_prem, "primary_range")}"
61-
secondary_range = "${lookup(var.on_prem, "secondary_range")}"
62-
vpn_ip = "${google_compute_address.staging_public_ip_2.address}"
63-
peer_ip = "${google_compute_address.staging_public_ip_1.address}"
64-
destination_range = "${lookup(var.on_prem, "destination_range")}"
65-
shared_secret = "${random_string.staging_shared_secret.result}"
64+
subnet_region = var.region_on_prem
65+
primary_range = var.on_prem["primary_range"]
66+
secondary_range = var.on_prem["secondary_range"]
67+
vpn_ip = google_compute_address.staging_public_ip_2.address
68+
peer_ip = google_compute_address.staging_public_ip_1.address
69+
destination_range = var.on_prem["destination_range"]
70+
shared_secret = random_string.staging_shared_secret.result
6671
}
6772

6873
// Creates a Google Kubernetes Engine (GKE) cluster for the on premise data center
6974
// https://www.terraform.io/docs/providers/google/r/container_cluster.html
7075
resource "google_container_cluster" "staging_on_prem_cluster" {
7176
name = "gke-enterprise-staging-on-prem-cluster"
72-
project = "${var.project}"
77+
project = var.project
7378

74-
zone = "${var.zone_on_prem}"
75-
additional_zones = "${var.zone_on_prem_failover}"
79+
zone = var.zone_on_prem
80+
additional_zones = var.zone_on_prem_failover
7681

77-
network = "${module.staging_on_prem.network}"
82+
network = module.staging_on_prem.network
7883

79-
subnetwork = "${module.staging_on_prem.subnetwork}"
84+
subnetwork = module.staging_on_prem.subnetwork
8085
initial_node_count = 1
8186

82-
min_master_version = "${var.gke_master_version}"
87+
min_master_version = var.gke_master_version
8388

84-
resource_labels = "${local.resource_labels}"
89+
resource_labels = local.resource_labels
8590

8691
ip_allocation_policy {
87-
cluster_secondary_range_name = "${module.staging_on_prem.secondary_range_name}"
92+
cluster_secondary_range_name = module.staging_on_prem.secondary_range_name
8893
}
8994

9095
remove_default_node_pool = true
91-
initial_node_count = 1
9296

9397
addons_config {
9498
network_policy_config {
@@ -103,7 +107,11 @@ resource "google_container_cluster" "staging_on_prem_cluster" {
103107

104108
// Lifecycle is used for preventing destruction of the following resources when the terraform apply again
105109
lifecycle {
106-
ignore_changes = ["network", "subnetwork", "ip_allocation_policy.0.services_secondary_range_name"]
110+
ignore_changes = [
111+
network,
112+
subnetwork,
113+
"ip_allocation_policy[0].services_secondary_range_name",
114+
]
107115
}
108116

109117
timeouts {
@@ -115,14 +123,14 @@ resource "google_container_cluster" "staging_on_prem_cluster" {
115123

116124
resource "google_container_node_pool" "staging_on_prem_cluster" {
117125
name = "gke-enterprise-staging-on-prem-node-pool"
118-
project = "${var.project}"
126+
project = var.project
119127

120-
cluster = "${google_container_cluster.staging_on_prem_cluster.name}"
121-
zone = "${var.zone_on_prem}"
128+
cluster = google_container_cluster.staging_on_prem_cluster.name
129+
zone = var.zone_on_prem
122130
node_count = 1
123131

124132
node_config {
125-
machine_type = "${lookup(var.on_prem, "machine_type")}"
133+
machine_type = var.on_prem["machine_type"]
126134

127135
// https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes
128136
// Enable private gcr.io read access for the same project
@@ -134,29 +142,31 @@ resource "google_container_node_pool" "staging_on_prem_cluster" {
134142
}
135143

136144
lifecycle {
137-
ignore_changes = ["id", "node_config.0.metadata"]
145+
ignore_changes = [
146+
id,
147+
"node_config[0].metadata",
148+
]
138149
}
139150
}
140151

141152
// Creates a Google Kubernetes Engine (GKE) cluster for the cloud
142153
// https://www.terraform.io/docs/providers/google/r/container_cluster.html
143154
resource "google_container_cluster" "staging_cloud_cluster" {
144155
name = "gke-enterprise-staging-cloud-cluster"
145-
zone = "${var.zone_cloud}"
146-
network = "${module.staging_cloud.network}"
147-
subnetwork = "${module.staging_cloud.subnetwork}"
156+
zone = var.zone_cloud
157+
network = module.staging_cloud.network
158+
subnetwork = module.staging_cloud.subnetwork
148159
initial_node_count = 1
149160

150-
min_master_version = "${var.gke_master_version}"
161+
min_master_version = var.gke_master_version
151162

152-
resource_labels = "${local.resource_labels}"
163+
resource_labels = local.resource_labels
153164

154165
ip_allocation_policy {
155-
cluster_secondary_range_name = "${module.staging_cloud.secondary_range_name}"
166+
cluster_secondary_range_name = module.staging_cloud.secondary_range_name
156167
}
157168

158169
remove_default_node_pool = true
159-
initial_node_count = 1
160170

161171
addons_config {
162172
network_policy_config {
@@ -170,26 +180,29 @@ resource "google_container_cluster" "staging_cloud_cluster" {
170180
}
171181

172182
lifecycle {
173-
ignore_changes = ["network", "subnetwork", "ip_allocation_policy.0.services_secondary_range_name"]
183+
ignore_changes = [
184+
network,
185+
subnetwork,
186+
"ip_allocation_policy[0].services_secondary_range_name",
187+
]
174188
}
175189

176190
timeouts {
177191
create = "30m"
178192
update = "40m"
179193
delete = "30m"
180194
}
181-
182195
}
183196

184197
resource "google_container_node_pool" "staging_cloud_cluster" {
185198
name = "gke-enterprise-staging-cloud-node-pool"
186-
project = "${var.project}"
187-
cluster = "${google_container_cluster.staging_cloud_cluster.name}"
188-
zone = "${var.zone_cloud}"
199+
project = var.project
200+
cluster = google_container_cluster.staging_cloud_cluster.name
201+
zone = var.zone_cloud
189202
node_count = 1
190203

191204
node_config {
192-
machine_type = "${lookup(var.cloud, "machine_type")}"
205+
machine_type = var.cloud["machine_type"]
193206

194207
// https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes
195208
// Enable private gcr.io read access for the same project
@@ -205,35 +218,38 @@ resource "google_container_node_pool" "staging_cloud_cluster" {
205218
}
206219

207220
lifecycle {
208-
ignore_changes = ["id", "node_config.0.metadata"]
221+
ignore_changes = [
222+
id,
223+
"node_config[0].metadata",
224+
]
209225
}
210226
}
211227

212228
resource "google_bigquery_dataset" "staging-log-sink-dataset" {
213229
dataset_id = "staging_gke_elasticsearch_log_dataset"
214-
project = "${var.project}"
230+
project = var.project
215231
location = "US"
216232
default_table_expiration_ms = "3600000"
217233

218-
labels {
234+
labels = {
219235
env = "default"
220236
}
221237
}
222238

223239
resource "google_logging_project_sink" "staging-bigquery-sink" {
224240
name = "gke-enterprise-demo-staging-gke-elasticsearch-log-sink"
225-
project = "${var.project}"
241+
project = var.project
226242
destination = "bigquery.googleapis.com/projects/${var.project}/datasets/${google_bigquery_dataset.staging-log-sink-dataset.dataset_id}"
227243
filter = "resource.type=container"
228244
unique_writer_identity = true
229245
}
230246

231247
resource "google_project_iam_binding" "staging_bigquery-sink-permissions" {
232-
project = "${var.project}"
248+
project = var.project
233249
role = "roles/bigquery.dataEditor"
234250

235251
members = [
236-
"${google_logging_project_sink.staging-bigquery-sink.writer_identity}",
252+
google_logging_project_sink.staging-bigquery-sink.writer_identity,
237253
]
238254
}
239255

terraform/variables.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ limitations under the License.
1616

1717
// Required variables
1818
variable "project" {
19-
type = "string"
19+
type = string
2020
}
2121

2222
// Optional variables
@@ -33,7 +33,7 @@ variable "zone_on_prem" {
3333
}
3434

3535
variable "zone_on_prem_failover" {
36-
type = "list"
36+
type = list(string)
3737
default = ["us-central1-b", "us-central1-c"]
3838
}
3939

@@ -43,7 +43,7 @@ variable "zone_cloud" {
4343

4444
variable "cloud" {
4545
description = "the cloud"
46-
type = "map"
46+
type = map(string)
4747

4848
default = {
4949
primary_range = "10.1.0.0/17"
@@ -55,7 +55,7 @@ variable "cloud" {
5555

5656
variable "on_prem" {
5757
description = "the on prem dc"
58-
type = "map"
58+
type = map(string)
5959

6060
default = {
6161
primary_range = "10.2.0.0/17"
@@ -71,6 +71,6 @@ variable "gke_master_version" {
7171

7272
// this map should be set should more labels be required to identify the container clusters and node groups
7373
variable "labels" {
74-
type = "map"
74+
type = map(string)
7575
default = {}
7676
}

terraform/versions.tf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
Copyright 2018 Google LLC
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
https://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
terraform {
18+
required_version = ">= 0.12"
19+
}

0 commit comments

Comments
 (0)