Skip to content

Commit 1958866

Browse files
authored
Merge branch 'master' into fix/add-local-deployment-instructions
2 parents 7fc1bc9 + 72e227c commit 1958866

File tree

77 files changed

+387
-83
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+387
-83
lines changed

0-bootstrap/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,12 +523,14 @@ The following steps will guide you through deploying without using Cloud Build.
523523
| default\_region\_2 | Secondary default region to create resources where applicable. | `string` | `"us-west1"` | no |
524524
| default\_region\_gcs | Case-Sensitive default region to create gcs resources where applicable. | `string` | `"US"` | no |
525525
| default\_region\_kms | Secondary default region to create kms resources where applicable. | `string` | `"us"` | no |
526+
| folder\_deletion\_protection | Prevent Terraform from destroying or recreating the folder. | `string` | `true` | no |
526527
| folder\_prefix | Name prefix to use for folders created. Should be the same in all steps. | `string` | `"fldr"` | no |
527528
| groups | Contain the details of the Groups to be created. | <pre>object({<br> create_required_groups = optional(bool, false)<br> create_optional_groups = optional(bool, false)<br> billing_project = optional(string, null)<br> required_groups = object({<br> group_org_admins = string<br> group_billing_admins = string<br> billing_data_users = string<br> audit_data_users = string<br> })<br> optional_groups = optional(object({<br> gcp_security_reviewer = optional(string, "")<br> gcp_network_viewer = optional(string, "")<br> gcp_scc_admin = optional(string, "")<br> gcp_global_secrets_admin = optional(string, "")<br> gcp_kms_admin = optional(string, "")<br> }), {})<br> })</pre> | n/a | yes |
528529
| initial\_group\_config | Define the group configuration when it is initialized. Valid values are: WITH\_INITIAL\_OWNER, EMPTY and INITIAL\_GROUP\_CONFIG\_UNSPECIFIED. | `string` | `"WITH_INITIAL_OWNER"` | no |
529530
| org\_id | GCP Organization ID | `string` | n/a | yes |
530531
| org\_policy\_admin\_role | Additional Org Policy Admin role for admin group. You can use this for testing purposes. | `bool` | `false` | no |
531532
| parent\_folder | Optional - for an organization with existing projects or for development/validation. It will place all the example foundation resources under the provided folder instead of the root organization. The value is the numeric folder ID. The folder must already exist. | `string` | `""` | no |
533+
| project\_deletion\_policy | The deletion policy for the project created. | `string` | `"PREVENT"` | no |
532534
| project\_prefix | Name prefix to use for projects created. Should be the same in all steps. Max size is 3 characters. | `string` | `"prj"` | no |
533535

534536
## Outputs

0-bootstrap/cb.tf

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,25 @@ resource "random_string" "suffix" {
6666
upper = false
6767
}
6868

69+
module "gcp_projects_state_bucket" {
70+
source = "terraform-google-modules/cloud-storage/google//modules/simple_bucket"
71+
version = "~> 8.0"
72+
73+
name = "${var.bucket_prefix}-${module.seed_bootstrap.seed_project_id}-gcp-projects-tfstate"
74+
project_id = module.seed_bootstrap.seed_project_id
75+
location = var.default_region
76+
force_destroy = var.bucket_force_destroy
77+
78+
encryption = {
79+
default_kms_key_name = local.state_bucket_kms_key
80+
}
81+
82+
depends_on = [module.seed_bootstrap.gcs_bucket_tfstate]
83+
}
84+
6985
module "tf_source" {
7086
source = "terraform-google-modules/bootstrap/google//modules/tf_cloudbuild_source"
71-
version = "~> 8.0"
87+
version = "~> 9.0"
7288

7389
org_id = var.org_id
7490
folder_id = google_folder.bootstrap.id
@@ -78,6 +94,8 @@ module "tf_source" {
7894
group_org_admins = var.groups.required_groups.group_org_admins
7995
buckets_force_destroy = var.bucket_force_destroy
8096

97+
project_deletion_policy = var.project_deletion_policy
98+
8199
activate_apis = [
82100
"serviceusage.googleapis.com",
83101
"servicenetworking.googleapis.com",
@@ -116,6 +134,15 @@ module "tf_source" {
116134
depends_on = [module.seed_bootstrap]
117135
}
118136

137+
resource "google_project_service_identity" "workflows_identity" {
138+
provider = google-beta
139+
140+
project = module.tf_source.cloudbuild_project_id
141+
service = "workflows.googleapis.com"
142+
143+
depends_on = [module.tf_source]
144+
}
145+
119146
module "tf_private_pool" {
120147
source = "./modules/cb-private-pool"
121148

@@ -137,7 +164,7 @@ module "tf_private_pool" {
137164

138165
module "tf_cloud_builder" {
139166
source = "terraform-google-modules/bootstrap/google//modules/tf_cloudbuild_builder"
140-
version = "~> 8.0"
167+
version = "~> 9.0"
141168

142169
project_id = module.tf_source.cloudbuild_project_id
143170
dockerfile_repo_uri = module.tf_source.csr_repos[local.cloudbuilder_repo].url
@@ -188,7 +215,7 @@ module "build_terraform_image" {
188215

189216
module "tf_workspace" {
190217
source = "terraform-google-modules/bootstrap/google//modules/tf_cloudbuild_workspace"
191-
version = "~> 8.0"
218+
version = "~> 9.0"
192219
for_each = local.granular_sa
193220

194221
project_id = module.tf_source.cloudbuild_project_id

0-bootstrap/github.tf.example

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ locals {
7070

7171
module "gh_cicd" {
7272
source = "terraform-google-modules/project-factory/google"
73-
version = "~> 15.0"
73+
version = "~> 17.0"
7474

7575
name = "${var.project_prefix}-b-cicd-wif-gh"
7676
random_project_id = true
@@ -87,6 +87,8 @@ module "gh_cicd" {
8787
"cloudresourcemanager.googleapis.com",
8888
"iamcredentials.googleapis.com",
8989
]
90+
91+
deletion_policy = var.project_deletion_policy
9092
}
9193

9294
module "gh_oidc" {

0-bootstrap/gitlab.tf.example

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ provider "gitlab" {
8181

8282
module "gitlab_cicd" {
8383
source = "terraform-google-modules/project-factory/google"
84-
version = "~> 15.0"
84+
version = "~> 17.0"
8585

8686
name = "${var.project_prefix}-b-cicd-wif-gl"
8787
random_project_id = true
@@ -100,8 +100,9 @@ module "gitlab_cicd" {
100100
"sts.googleapis.com",
101101
"dns.googleapis.com",
102102
"secretmanager.googleapis.com",
103-
104103
]
104+
105+
deletion_policy = var.project_deletion_policy
105106
}
106107

107108
module "gitlab_oidc" {

0-bootstrap/groups.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ data "google_organization" "org" {
3434

3535
module "required_group" {
3636
source = "terraform-google-modules/group/google"
37-
version = "~> 0.6"
37+
version = "~> 0.7"
3838
for_each = local.required_groups_to_create
3939

4040
id = each.value
@@ -46,7 +46,7 @@ module "required_group" {
4646

4747
module "optional_group" {
4848
source = "terraform-google-modules/group/google"
49-
version = "~> 0.6"
49+
version = "~> 0.7"
5050
for_each = local.optional_groups_to_create
5151

5252
id = each.value

0-bootstrap/jenkins.tf.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ module "jenkins_bootstrap" {
4646
tunnel0_bgp_session_range = var.tunnel0_bgp_session_range
4747
tunnel1_bgp_peer_address = var.tunnel1_bgp_peer_address
4848
tunnel1_bgp_session_range = var.tunnel1_bgp_session_range
49+
project_deletion_policy = var.project_deletion_policy
4950
}
5051

5152
resource "google_organization_iam_member" "org_jenkins_sa_browser" {

0-bootstrap/main.tf

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,14 @@ locals {
3838
}
3939

4040
resource "google_folder" "bootstrap" {
41-
display_name = "${var.folder_prefix}-bootstrap"
42-
parent = local.parent
41+
display_name = "${var.folder_prefix}-bootstrap"
42+
parent = local.parent
43+
deletion_protection = var.folder_deletion_protection
4344
}
4445

4546
module "seed_bootstrap" {
4647
source = "terraform-google-modules/bootstrap/google"
47-
version = "~> 8.0"
48+
version = "~> 9.0"
4849

4950
org_id = var.org_id
5051
folder_id = google_folder.bootstrap.id
@@ -64,6 +65,7 @@ module "seed_bootstrap" {
6465
encrypt_gcs_bucket_tfstate = true
6566
key_rotation_period = "7776000s"
6667
kms_prevent_destroy = !var.bucket_tfstate_kms_force_destroy
68+
project_deletion_policy = var.project_deletion_policy
6769

6870
project_labels = {
6971
environment = "bootstrap"

0-bootstrap/modules/gitlab-oidc/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ terraform {
2020

2121
google = {
2222
source = "hashicorp/google"
23-
version = ">= 3.64, < 6"
23+
version = ">= 3.64, < 7"
2424
}
2525
}
2626

0-bootstrap/modules/jenkins-agent/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ module "jenkins_bootstrap" {
6868
| on\_prem\_vpn\_public\_ip\_address | The public IP Address of the Jenkins Controller. | `string` | n/a | yes |
6969
| on\_prem\_vpn\_public\_ip\_address2 | The secondpublic IP Address of the Jenkins Controller. | `string` | n/a | yes |
7070
| org\_id | GCP Organization ID | `string` | n/a | yes |
71+
| project\_deletion\_policy | The deletion policy for the project created. | `string` | `"PREVENT"` | no |
7172
| project\_labels | Labels to apply to the project. | `map(string)` | `{}` | no |
7273
| project\_prefix | Name prefix to use for projects created. | `string` | `"prj"` | no |
7374
| router\_asn | BGP ASN for cloud routes. | `number` | `"64515"` | no |

0-bootstrap/modules/jenkins-agent/main.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ resource "random_id" "suffix" {
2929
*******************************************/
3030
module "cicd_project" {
3131
source = "terraform-google-modules/project-factory/google"
32-
version = "~> 15.0"
32+
version = "~> 17.0"
3333

3434
name = local.cicd_project_name
3535
random_project_id = true
@@ -40,6 +40,8 @@ module "cicd_project" {
4040
billing_account = var.billing_account
4141
activate_apis = local.activate_apis
4242
labels = var.project_labels
43+
44+
deletion_policy = var.project_deletion_policy
4345
}
4446

4547
/******************************************

0 commit comments

Comments
 (0)