Skip to content

Commit af2d616

Browse files
Scott WinklerScott Winkler
authored andcommitted
update code for chapter 7
1 parent ca99f5f commit af2d616

File tree

24 files changed

+146
-217
lines changed

24 files changed

+146
-217
lines changed
Lines changed: 33 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
locals {
2-
services = [
2+
services = [ #A
33
"sourcerepo.googleapis.com",
44
"cloudbuild.googleapis.com",
55
"run.googleapis.com",
@@ -12,12 +12,12 @@ resource "google_project_service" "enabled_service" {
1212
project = var.project_id
1313
service = each.key
1414

15-
provisioner "local-exec" {
15+
provisioner "local-exec" { #B
1616
command = "sleep 60"
1717
}
1818

19-
provisioner "local-exec" {
20-
when = "destroy"
19+
provisioner "local-exec" { #C
20+
when = destroy
2121
command = "sleep 15"
2222
}
2323
}
@@ -27,17 +27,12 @@ resource "google_sourcerepo_repository" "repo" {
2727
google_project_service.enabled_service["sourcerepo.googleapis.com"]
2828
]
2929

30-
name = "${var.namespace}-repo"
30+
name = "${var.namespace}-repo"
3131
}
3232

33-
locals {
33+
locals { #A
3434
image = "gcr.io/${var.project_id}/${var.namespace}"
3535
steps = [
36-
{
37-
name = "gcr.io/cloud-builders/go"
38-
args = ["install", "."]
39-
env = ["PROJECT_ROOT=${var.namespace}"]
40-
},
4136
{
4237
name = "gcr.io/cloud-builders/go"
4338
args = ["test"]
@@ -50,11 +45,12 @@ locals {
5045
{
5146
name = "gcr.io/cloud-builders/docker"
5247
args = ["push", local.image]
53-
},
48+
},
5449
{
5550
name = "gcr.io/cloud-builders/gcloud"
56-
args = ["beta", "run", "deploy", google_cloud_run_service.service.name, "--image", local.image, "--region", var.region, "--platform", "managed", "-q"]
57-
}
51+
args = ["run", "deploy", google_cloud_run_service.service.name, "--image", local.image, "--region", var.region, "--platform", "managed", "-q"]
52+
}
53+
5854
]
5955
}
6056

@@ -74,7 +70,7 @@ resource "google_cloudbuild_trigger" "trigger" {
7470
content {
7571
name = step.value.name
7672
args = step.value.args
77-
env = lookup(step.value, "env", null)
73+
env = lookup(step.value, "env", null) #B
7874
}
7975
}
8076
}
@@ -83,47 +79,41 @@ resource "google_cloudbuild_trigger" "trigger" {
8379
data "google_project" "project" {}
8480

8581
resource "google_project_iam_member" "cloudbuild_roles" {
86-
depends_on = [google_cloudbuild_trigger.trigger]
87-
for_each = toset(["roles/run.admin", "roles/iam.serviceAccountUser"])
82+
depends_on = [google_cloudbuild_trigger.trigger]
83+
for_each = toset(["roles/run.admin", "roles/iam.serviceAccountUser"])#A
8884
project = var.project_id
8985
role = each.key
9086
member = "serviceAccount:${data.google_project.project.number}@cloudbuild.gserviceaccount.com"
9187
}
9288

9389
resource "google_cloud_run_service" "service" {
9490
depends_on = [
95-
google_project_service.enabled_service["cloudrun.googleapis.com"]
91+
google_project_service.enabled_service["run.googleapis.com"]
9692
]
97-
98-
provider = "google-beta"
99-
location = var.region
10093
name = var.namespace
101-
metadata {
102-
namespace = var.project_id
103-
}
104-
spec {
105-
containers {
106-
image = "${local.image}:latest"
94+
location = var.region
95+
96+
template {
97+
spec {
98+
containers {
99+
image = "${local.image}:latest" #A
100+
}
107101
}
108102
}
109103
}
110104

111-
resource "null_resource" "cloud_run_allow" {
112-
provisioner "local-exec" {
113-
command = <<EOF
114-
cd ${path.module}
115-
gcloud beta run services set-iam-policy ${google_cloud_run_service.service.name} --region ${var.region} policy.yaml -q --project ${var.project_id} --platform managed
116-
EOF
105+
data "google_iam_policy" "admin" {
106+
binding {
107+
role = "roles/run.invoker"
108+
members = [
109+
"allUsers",
110+
]
117111
}
118112
}
119113

120-
data "shell_script" "cloud_run_url" {
121-
working_directory = path.module
122-
lifecycle_commands {
123-
read = <<EOF
124-
sleep 10
125-
URL=$(gcloud beta run services describe ${google_cloud_run_service.service.name} --platform managed --region ${var.region} --project ${var.project_id} --format "value(status.url)")
126-
echo '{"url": "'"$URL"'"}' >&3
127-
EOF
128-
}
129-
}
114+
resource "google_cloud_run_service_iam_policy" "policy" {
115+
location = var.region
116+
project = var.project_id
117+
service = google_cloud_run_service.service.name
118+
policy_data = data.google_iam_policy.admin.policy_data
119+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
output "urls" {
22
value = {
3-
app = data.shell_script.cloud_run_url.output["url"]
43
repo = google_sourcerepo_repository.repo.url
4+
app = google_cloud_run_service.service.status[0].url
55
}
66
}

chapter7/complete/infrastructure/policy.yaml

Lines changed: 0 additions & 4 deletions
This file was deleted.

chapter7/complete/infrastructure/providers.tf

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,4 @@ provider "google" {
22
credentials = file("account.json")
33
project = var.project_id
44
region = var.region
5-
}
6-
7-
provider "google-beta" {
8-
credentials = file("account.json")
9-
project = var.project_id
10-
region = var.region
115
}
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
terraform {
22
required_version = "~> 0.12"
33
required_providers {
4-
null = "~> 2.1"
5-
google = "~> 2.13"
6-
google-beta = "~> 2.13"
7-
shell = ">= 0.1"
4+
google = "~> 3.10"
85
}
9-
}
6+
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
output "urls" {
22
value = {
3-
app = data.shell_script.cloud_run_url.output["url"]
43
repo = google_sourcerepo_repository.repo.url
4+
app = google_cloud_run_service.service.status[0].url
55
}
6-
}
6+
}

chapter7/listing7.10/policy.yaml

Lines changed: 0 additions & 4 deletions
This file was deleted.

chapter7/listing7.11/main.tf

Lines changed: 0 additions & 10 deletions
This file was deleted.

chapter7/listing7.11/versions.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
terraform {
2+
required_version = "~> 0.12"
3+
required_providers {
4+
google = "~> 3.10"
5+
}
6+
}
Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
locals {
2-
services = [
2+
services = [ #A
33
"sourcerepo.googleapis.com",
44
"cloudbuild.googleapis.com",
55
"run.googleapis.com",
@@ -12,12 +12,12 @@ resource "google_project_service" "enabled_service" {
1212
project = var.project_id
1313
service = each.key
1414

15-
provisioner "local-exec" {
15+
provisioner "local-exec" { #B
1616
command = "sleep 60"
1717
}
1818

19-
provisioner "local-exec" {
20-
when = "destroy"
19+
provisioner "local-exec" { #C
20+
when = destroy
2121
command = "sleep 15"
2222
}
2323
}
@@ -30,14 +30,9 @@ resource "google_sourcerepo_repository" "repo" {
3030
name = "${var.namespace}-repo"
3131
}
3232

33-
locals {
33+
locals { #A
3434
image = "gcr.io/${var.project_id}/${var.namespace}"
3535
steps = [
36-
{
37-
name = "gcr.io/cloud-builders/go"
38-
args = ["install", "."]
39-
env = ["PROJECT_ROOT=${var.namespace}"]
40-
},
4136
{
4237
name = "gcr.io/cloud-builders/go"
4338
args = ["test"]
@@ -53,8 +48,9 @@ locals {
5348
},
5449
{
5550
name = "gcr.io/cloud-builders/gcloud"
56-
args = ["beta", "run", "deploy", google_cloud_run_service.service.name, "--image", local.image, "--region", var.region, "--platform", "managed", "-q"]
51+
args = ["run", "deploy", google_cloud_run_service.service.name, "--image", local.image, "--region", var.region, "--platform", "managed", "-q"]
5752
}
53+
5854
]
5955
}
6056

@@ -74,7 +70,7 @@ resource "google_cloudbuild_trigger" "trigger" {
7470
content {
7571
name = step.value.name
7672
args = step.value.args
77-
env = lookup(step.value, "env", null)
73+
env = lookup(step.value, "env", null) #B
7874
}
7975
}
8076
}
@@ -84,46 +80,40 @@ data "google_project" "project" {}
8480

8581
resource "google_project_iam_member" "cloudbuild_roles" {
8682
depends_on = [google_cloudbuild_trigger.trigger]
87-
for_each = toset(["roles/run.admin", "roles/iam.serviceAccountUser"])
83+
for_each = toset(["roles/run.admin", "roles/iam.serviceAccountUser"]) #A
8884
project = var.project_id
8985
role = each.key
9086
member = "serviceAccount:${data.google_project.project.number}@cloudbuild.gserviceaccount.com"
9187
}
9288

9389
resource "google_cloud_run_service" "service" {
9490
depends_on = [
95-
google_project_service.enabled_service["cloudrun.googleapis.com"]
91+
google_project_service.enabled_service["run.googleapis.com"]
9692
]
97-
98-
provider = "google-beta"
99-
location = var.region
10093
name = var.namespace
101-
metadata {
102-
namespace = var.project_id
103-
}
104-
spec {
105-
containers {
106-
image = "${local.image}:latest"
94+
location = var.region
95+
96+
template {
97+
spec {
98+
containers {
99+
image = "${local.image}:latest" #A
100+
}
107101
}
108102
}
109103
}
110104

111-
resource "null_resource" "cloud_run_allow" {
112-
provisioner "local-exec" {
113-
command = <<EOF
114-
cd ${path.module}
115-
gcloud beta run services set-iam-policy ${google_cloud_run_service.service.name} --region ${var.region} policy.yaml -q --project ${var.project_id} --platform managed
116-
EOF
105+
data "google_iam_policy" "admin" {
106+
binding {
107+
role = "roles/run.invoker"
108+
members = [
109+
"allUsers",
110+
]
117111
}
118112
}
119113

120-
data "shell_script" "cloud_run_url" {
121-
working_directory = path.module
122-
lifecycle_commands {
123-
read = <<EOF
124-
sleep 10
125-
URL=$(gcloud beta run services describe ${google_cloud_run_service.service.name} --platform managed --region ${var.region} --project ${var.project_id} --format "value(status.url)")
126-
echo '{"url": "'"$URL"'"}' >&3
127-
EOF
128-
}
114+
resource "google_cloud_run_service_iam_policy" "policy" {
115+
location = var.region
116+
project = var.project_id
117+
service = google_cloud_run_service.service.name
118+
policy_data = data.google_iam_policy.admin.policy_data
129119
}

0 commit comments

Comments
 (0)