From 8a2320311d10957529badc1005b0ef1c2d12874e Mon Sep 17 00:00:00 2001 From: Julio Castillo Date: Tue, 21 Jan 2025 23:48:36 +0100 Subject: [PATCH] Add `bucket_create` to `modules/gcs` (#2827) * Add `bucket_create` to `modules/gcs` * Create local with bucket name * Update variable description * Fix bucket output * Fix tests * Fix tests * Bump OpenTofu to 1.9.0 (needed for multi-var validations) --- .github/workflows/tests.yml | 4 +- .../patterns/autopilot-cluster/versions.tofu | 2 +- blueprints/gke/patterns/batch/versions.tofu | 2 +- blueprints/gke/patterns/kafka/versions.tofu | 2 +- .../gke/patterns/kong-cloudrun/versions.tofu | 2 +- blueprints/gke/patterns/mysql/versions.tofu | 2 +- .../gke/patterns/redis-cluster/versions.tofu | 2 +- .../secops/secops-gke-forwarder/versions.tofu | 2 +- default-versions.tofu | 2 +- .../alloydb-instance/versions.tofu | 2 +- .../net-neg/versions.tofu | 2 +- .../project-iam-magic/versions.tofu | 2 +- modules/alloydb/versions.tofu | 2 +- modules/analytics-hub/versions.tofu | 2 +- modules/api-gateway/versions.tofu | 2 +- modules/apigee/versions.tofu | 2 +- modules/artifact-registry/versions.tofu | 2 +- modules/bigquery-dataset/versions.tofu | 2 +- modules/bigtable-instance/versions.tofu | 2 +- modules/billing-account/versions.tofu | 2 +- modules/binauthz/versions.tofu | 2 +- .../versions.tofu | 2 +- modules/certificate-manager/versions.tofu | 2 +- .../__need_fixing/onprem/versions.tofu | 2 +- .../__need_fixing/squid/versions.tofu | 2 +- .../bindplane/versions.tofu | 2 +- .../coredns/versions.tofu | 2 +- .../cos-generic-metadata/versions.tofu | 2 +- .../envoy-sni-dyn-fwd-proxy/versions.tofu | 2 +- .../envoy-traffic-director/versions.tofu | 2 +- .../mysql/versions.tofu | 2 +- .../nginx-tls/versions.tofu | 2 +- .../nginx/versions.tofu | 2 +- .../simple-nva/versions.tofu | 2 +- modules/cloud-function-v1/versions.tofu | 2 +- modules/cloud-function-v2/versions.tofu | 2 +- modules/cloud-identity-group/versions.tofu | 2 +- modules/cloud-run-v2/versions.tofu | 2 +- modules/cloud-run/versions.tofu | 2 +- modules/cloudsql-instance/versions.tofu | 2 +- modules/compute-mig/versions.tofu | 2 +- modules/compute-vm/versions.tofu | 2 +- modules/container-registry/versions.tofu | 2 +- modules/data-catalog-policy-tag/versions.tofu | 2 +- .../data-catalog-tag-template/versions.tofu | 2 +- modules/data-catalog-tag/versions.tofu | 2 +- modules/dataform-repository/versions.tofu | 2 +- modules/datafusion/versions.tofu | 2 +- modules/dataplex-datascan/versions.tofu | 2 +- modules/dataplex/versions.tofu | 2 +- modules/dataproc/versions.tofu | 2 +- modules/dns-response-policy/versions.tofu | 2 +- modules/dns/versions.tofu | 2 +- modules/endpoints/versions.tofu | 2 +- modules/firestore/versions.tofu | 2 +- modules/folder/versions.tofu | 2 +- modules/gcs/README.md | 63 +++---- modules/gcs/iam.tf | 8 +- modules/gcs/main.tf | 27 ++- modules/gcs/managed-folders.tf | 10 +- modules/gcs/outputs.tf | 10 +- modules/gcs/tags.tf | 4 +- modules/gcs/variables.tf | 14 +- modules/gcs/versions.tofu | 2 +- modules/gcve-private-cloud/versions.tofu | 2 +- modules/gke-cluster-autopilot/versions.tofu | 2 +- modules/gke-cluster-standard/versions.tofu | 2 +- modules/gke-hub/versions.tofu | 2 +- modules/gke-nodepool/versions.tofu | 2 +- modules/iam-service-account/versions.tofu | 2 +- modules/kms/versions.tofu | 2 +- modules/logging-bucket/versions.tofu | 2 +- modules/looker-core/versions.tofu | 2 +- modules/ncc-spoke-ra/versions.tofu | 2 +- modules/net-address/versions.tofu | 2 +- modules/net-cloudnat/versions.tofu | 2 +- modules/net-firewall-policy/versions.tofu | 2 +- .../net-ipsec-over-interconnect/versions.tofu | 2 +- modules/net-lb-app-ext-regional/versions.tofu | 2 +- modules/net-lb-app-ext/versions.tofu | 2 +- .../net-lb-app-int-cross-region/versions.tofu | 2 +- modules/net-lb-app-int/versions.tofu | 2 +- modules/net-lb-ext/versions.tofu | 2 +- modules/net-lb-int/versions.tofu | 2 +- modules/net-lb-proxy-int/versions.tofu | 2 +- modules/net-swp/versions.tofu | 2 +- modules/net-vlan-attachment/versions.tofu | 2 +- modules/net-vpc-firewall/versions.tofu | 2 +- modules/net-vpc-peering/versions.tofu | 2 +- modules/net-vpc/versions.tofu | 2 +- modules/net-vpn-dynamic/versions.tofu | 2 +- modules/net-vpn-ha/versions.tofu | 2 +- modules/net-vpn-static/versions.tofu | 2 +- modules/organization/versions.tofu | 2 +- modules/project/versions.tofu | 2 +- modules/projects-data-source/versions.tofu | 2 +- modules/pubsub/versions.tofu | 2 +- modules/secret-manager/versions.tofu | 2 +- .../versions.tofu | 2 +- modules/service-directory/versions.tofu | 2 +- modules/source-repository/versions.tofu | 2 +- modules/spanner-instance/versions.tofu | 2 +- modules/vpc-sc/versions.tofu | 2 +- modules/workstation-cluster/versions.tofu | 2 +- tests/examples_e2e/setup_module/versions.tofu | 2 +- tests/fast/stages/s1_resman/simple.yaml | 154 ++++++++++++++++-- tests/modules/folder/examples/logging.yaml | 4 +- tests/modules/gcs/examples/cmek.yaml | 4 +- tests/modules/gcs/examples/hns.yaml | 4 +- .../gcs/examples/iam-authoritative.yaml | 4 +- .../gcs/examples/iam-bindings-additive.yaml | 4 +- tests/modules/gcs/examples/iam-bindings.yaml | 4 +- tests/modules/gcs/examples/lifecycle.yaml | 4 +- .../modules/gcs/examples/managed-folders.yaml | 4 +- tests/modules/gcs/examples/notification.yaml | 4 +- tests/modules/gcs/examples/object-upload.yaml | 4 +- .../gcs/examples/retention-logging.yaml | 4 +- tests/modules/gcs/examples/simple.yaml | 4 +- tests/modules/gcs/examples/tags.yaml | 4 +- .../organization/examples/logging.yaml | 4 +- tests/modules/project/examples/data.yaml | 4 +- tests/modules/project/examples/logging.yaml | 4 +- .../project_factory/examples/example.yaml | 4 +- tools/lockfile/versions.tofu | 2 +- 124 files changed, 358 insertions(+), 200 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ac445f785..5ad388036 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ env: TFTEST_COPY: 1 DEFAULT_TERRAFORM_FLAVOUR: terraform DEFAULT_TERRAFORM_VERSION: ${{ inputs.terraform_version || '1.10.2' }} - DEFAULT_TOFU_VERSION: "1.8.0" + DEFAULT_TOFU_VERSION: "1.9.0" jobs: compute-matrix: diff --git a/blueprints/gke/patterns/autopilot-cluster/versions.tofu b/blueprints/gke/patterns/autopilot-cluster/versions.tofu index 095928e5d..ea84f769d 100644 --- a/blueprints/gke/patterns/autopilot-cluster/versions.tofu +++ b/blueprints/gke/patterns/autopilot-cluster/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/blueprints/gke/patterns/batch/versions.tofu b/blueprints/gke/patterns/batch/versions.tofu index 773e004e9..92f1cfc09 100644 --- a/blueprints/gke/patterns/batch/versions.tofu +++ b/blueprints/gke/patterns/batch/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/blueprints/gke/patterns/kafka/versions.tofu b/blueprints/gke/patterns/kafka/versions.tofu index 83fe9eb12..d3a5f3973 100644 --- a/blueprints/gke/patterns/kafka/versions.tofu +++ b/blueprints/gke/patterns/kafka/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/blueprints/gke/patterns/kong-cloudrun/versions.tofu b/blueprints/gke/patterns/kong-cloudrun/versions.tofu index 4ae742a70..1eb1d159a 100644 --- a/blueprints/gke/patterns/kong-cloudrun/versions.tofu +++ b/blueprints/gke/patterns/kong-cloudrun/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/blueprints/gke/patterns/mysql/versions.tofu b/blueprints/gke/patterns/mysql/versions.tofu index e9dc50169..02a859fbb 100644 --- a/blueprints/gke/patterns/mysql/versions.tofu +++ b/blueprints/gke/patterns/mysql/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/blueprints/gke/patterns/redis-cluster/versions.tofu b/blueprints/gke/patterns/redis-cluster/versions.tofu index 00c5cd27f..557fb34da 100644 --- a/blueprints/gke/patterns/redis-cluster/versions.tofu +++ b/blueprints/gke/patterns/redis-cluster/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/blueprints/secops/secops-gke-forwarder/versions.tofu b/blueprints/secops/secops-gke-forwarder/versions.tofu index 857dc9a51..a803dad13 100644 --- a/blueprints/secops/secops-gke-forwarder/versions.tofu +++ b/blueprints/secops/secops-gke-forwarder/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/default-versions.tofu b/default-versions.tofu index 2cc33448f..b9c6880e0 100644 --- a/default-versions.tofu +++ b/default-versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/__experimental_deprecated/alloydb-instance/versions.tofu b/modules/__experimental_deprecated/alloydb-instance/versions.tofu index e432a4e07..a8f6c582a 100644 --- a/modules/__experimental_deprecated/alloydb-instance/versions.tofu +++ b/modules/__experimental_deprecated/alloydb-instance/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/__experimental_deprecated/net-neg/versions.tofu b/modules/__experimental_deprecated/net-neg/versions.tofu index 0dd002ef8..35760010d 100644 --- a/modules/__experimental_deprecated/net-neg/versions.tofu +++ b/modules/__experimental_deprecated/net-neg/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/__experimental_deprecated/project-iam-magic/versions.tofu b/modules/__experimental_deprecated/project-iam-magic/versions.tofu index 2f2d914ea..b76e2e48a 100644 --- a/modules/__experimental_deprecated/project-iam-magic/versions.tofu +++ b/modules/__experimental_deprecated/project-iam-magic/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/alloydb/versions.tofu b/modules/alloydb/versions.tofu index 055371408..61a96cca3 100644 --- a/modules/alloydb/versions.tofu +++ b/modules/alloydb/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/analytics-hub/versions.tofu b/modules/analytics-hub/versions.tofu index a73dccbaf..10afbd0bf 100644 --- a/modules/analytics-hub/versions.tofu +++ b/modules/analytics-hub/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/api-gateway/versions.tofu b/modules/api-gateway/versions.tofu index 1238a154b..f0fb5427d 100644 --- a/modules/api-gateway/versions.tofu +++ b/modules/api-gateway/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/apigee/versions.tofu b/modules/apigee/versions.tofu index ca235cb27..4813019b9 100644 --- a/modules/apigee/versions.tofu +++ b/modules/apigee/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/artifact-registry/versions.tofu b/modules/artifact-registry/versions.tofu index fc9cda2d3..dc53910f9 100644 --- a/modules/artifact-registry/versions.tofu +++ b/modules/artifact-registry/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/bigquery-dataset/versions.tofu b/modules/bigquery-dataset/versions.tofu index f75e7f8c9..203555967 100644 --- a/modules/bigquery-dataset/versions.tofu +++ b/modules/bigquery-dataset/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/bigtable-instance/versions.tofu b/modules/bigtable-instance/versions.tofu index 8f68cf5cf..34141396f 100644 --- a/modules/bigtable-instance/versions.tofu +++ b/modules/bigtable-instance/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/billing-account/versions.tofu b/modules/billing-account/versions.tofu index 02215b425..b0277c5d1 100644 --- a/modules/billing-account/versions.tofu +++ b/modules/billing-account/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/binauthz/versions.tofu b/modules/binauthz/versions.tofu index ca3a723f3..e96596658 100644 --- a/modules/binauthz/versions.tofu +++ b/modules/binauthz/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/certificate-authority-service/versions.tofu b/modules/certificate-authority-service/versions.tofu index 65310f7c7..5b7b13adc 100644 --- a/modules/certificate-authority-service/versions.tofu +++ b/modules/certificate-authority-service/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/certificate-manager/versions.tofu b/modules/certificate-manager/versions.tofu index 9d5253c37..a53bf6f35 100644 --- a/modules/certificate-manager/versions.tofu +++ b/modules/certificate-manager/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/__need_fixing/onprem/versions.tofu b/modules/cloud-config-container/__need_fixing/onprem/versions.tofu index 600be04dd..b4e1524c6 100644 --- a/modules/cloud-config-container/__need_fixing/onprem/versions.tofu +++ b/modules/cloud-config-container/__need_fixing/onprem/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/__need_fixing/squid/versions.tofu b/modules/cloud-config-container/__need_fixing/squid/versions.tofu index 81d044632..fe440a375 100644 --- a/modules/cloud-config-container/__need_fixing/squid/versions.tofu +++ b/modules/cloud-config-container/__need_fixing/squid/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/bindplane/versions.tofu b/modules/cloud-config-container/bindplane/versions.tofu index 047bc4610..37d01736f 100644 --- a/modules/cloud-config-container/bindplane/versions.tofu +++ b/modules/cloud-config-container/bindplane/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/coredns/versions.tofu b/modules/cloud-config-container/coredns/versions.tofu index b836948d0..858f5f3b3 100644 --- a/modules/cloud-config-container/coredns/versions.tofu +++ b/modules/cloud-config-container/coredns/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/cos-generic-metadata/versions.tofu b/modules/cloud-config-container/cos-generic-metadata/versions.tofu index 35c570fde..28a8ac82d 100644 --- a/modules/cloud-config-container/cos-generic-metadata/versions.tofu +++ b/modules/cloud-config-container/cos-generic-metadata/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tofu b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tofu index b83abd63a..5ec0e41cb 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tofu +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/envoy-traffic-director/versions.tofu b/modules/cloud-config-container/envoy-traffic-director/versions.tofu index f4ac1b245..a8fa8b30a 100644 --- a/modules/cloud-config-container/envoy-traffic-director/versions.tofu +++ b/modules/cloud-config-container/envoy-traffic-director/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/mysql/versions.tofu b/modules/cloud-config-container/mysql/versions.tofu index d42fed224..37e86e8f8 100644 --- a/modules/cloud-config-container/mysql/versions.tofu +++ b/modules/cloud-config-container/mysql/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/nginx-tls/versions.tofu b/modules/cloud-config-container/nginx-tls/versions.tofu index c6dacac30..ad57d5306 100644 --- a/modules/cloud-config-container/nginx-tls/versions.tofu +++ b/modules/cloud-config-container/nginx-tls/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/nginx/versions.tofu b/modules/cloud-config-container/nginx/versions.tofu index f16b93a48..7686e3c60 100644 --- a/modules/cloud-config-container/nginx/versions.tofu +++ b/modules/cloud-config-container/nginx/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-config-container/simple-nva/versions.tofu b/modules/cloud-config-container/simple-nva/versions.tofu index 32003c4e0..6ad2f61fa 100644 --- a/modules/cloud-config-container/simple-nva/versions.tofu +++ b/modules/cloud-config-container/simple-nva/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-function-v1/versions.tofu b/modules/cloud-function-v1/versions.tofu index 1eb12e3f9..92f308c67 100644 --- a/modules/cloud-function-v1/versions.tofu +++ b/modules/cloud-function-v1/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-function-v2/versions.tofu b/modules/cloud-function-v2/versions.tofu index d428d1478..e75e46a0a 100644 --- a/modules/cloud-function-v2/versions.tofu +++ b/modules/cloud-function-v2/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-identity-group/versions.tofu b/modules/cloud-identity-group/versions.tofu index 1a46f3dd0..a31bfc2f9 100644 --- a/modules/cloud-identity-group/versions.tofu +++ b/modules/cloud-identity-group/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-run-v2/versions.tofu b/modules/cloud-run-v2/versions.tofu index fd494e585..2901cc954 100644 --- a/modules/cloud-run-v2/versions.tofu +++ b/modules/cloud-run-v2/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloud-run/versions.tofu b/modules/cloud-run/versions.tofu index 9982aeb58..78c5da406 100644 --- a/modules/cloud-run/versions.tofu +++ b/modules/cloud-run/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/cloudsql-instance/versions.tofu b/modules/cloudsql-instance/versions.tofu index 2fe00e220..712efbe14 100644 --- a/modules/cloudsql-instance/versions.tofu +++ b/modules/cloudsql-instance/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/compute-mig/versions.tofu b/modules/compute-mig/versions.tofu index 38d3e669d..483287162 100644 --- a/modules/compute-mig/versions.tofu +++ b/modules/compute-mig/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/compute-vm/versions.tofu b/modules/compute-vm/versions.tofu index bdea574a9..9096198b9 100644 --- a/modules/compute-vm/versions.tofu +++ b/modules/compute-vm/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/container-registry/versions.tofu b/modules/container-registry/versions.tofu index 2fd678eb7..0fb0da018 100644 --- a/modules/container-registry/versions.tofu +++ b/modules/container-registry/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/data-catalog-policy-tag/versions.tofu b/modules/data-catalog-policy-tag/versions.tofu index 39c263350..4b7d92deb 100644 --- a/modules/data-catalog-policy-tag/versions.tofu +++ b/modules/data-catalog-policy-tag/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/data-catalog-tag-template/versions.tofu b/modules/data-catalog-tag-template/versions.tofu index dea102d5b..607e86971 100644 --- a/modules/data-catalog-tag-template/versions.tofu +++ b/modules/data-catalog-tag-template/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/data-catalog-tag/versions.tofu b/modules/data-catalog-tag/versions.tofu index 27586a0e4..64106482b 100644 --- a/modules/data-catalog-tag/versions.tofu +++ b/modules/data-catalog-tag/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/dataform-repository/versions.tofu b/modules/dataform-repository/versions.tofu index 81af770e2..7dac7c824 100644 --- a/modules/dataform-repository/versions.tofu +++ b/modules/dataform-repository/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/datafusion/versions.tofu b/modules/datafusion/versions.tofu index afdf7272d..cfe3f2bd6 100644 --- a/modules/datafusion/versions.tofu +++ b/modules/datafusion/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/dataplex-datascan/versions.tofu b/modules/dataplex-datascan/versions.tofu index ba723efc3..5ba991916 100644 --- a/modules/dataplex-datascan/versions.tofu +++ b/modules/dataplex-datascan/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/dataplex/versions.tofu b/modules/dataplex/versions.tofu index 49edb496a..522f72df4 100644 --- a/modules/dataplex/versions.tofu +++ b/modules/dataplex/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/dataproc/versions.tofu b/modules/dataproc/versions.tofu index 7e8b1f232..171665a6b 100644 --- a/modules/dataproc/versions.tofu +++ b/modules/dataproc/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/dns-response-policy/versions.tofu b/modules/dns-response-policy/versions.tofu index e020e9aa1..e157addf2 100644 --- a/modules/dns-response-policy/versions.tofu +++ b/modules/dns-response-policy/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/dns/versions.tofu b/modules/dns/versions.tofu index be66575e9..48f3dd8bb 100644 --- a/modules/dns/versions.tofu +++ b/modules/dns/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/endpoints/versions.tofu b/modules/endpoints/versions.tofu index 7084ddd35..2d9793cff 100644 --- a/modules/endpoints/versions.tofu +++ b/modules/endpoints/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/firestore/versions.tofu b/modules/firestore/versions.tofu index 2794b407c..45413d6ce 100644 --- a/modules/firestore/versions.tofu +++ b/modules/firestore/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/folder/versions.tofu b/modules/folder/versions.tofu index 2d7d6de22..9abd59155 100644 --- a/modules/folder/versions.tofu +++ b/modules/folder/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/gcs/README.md b/modules/gcs/README.md index 3ead1cfb1..1ec281264 100644 --- a/modules/gcs/README.md +++ b/modules/gcs/README.md @@ -324,38 +324,39 @@ module "bucket" { | name | description | type | required | default | |---|---|:---:|:---:|:---:| -| [location](variables.tf#L168) | Bucket location. | string | ✓ | | -| [name](variables.tf#L211) | Bucket name suffix. | string | ✓ | | -| [project_id](variables.tf#L269) | Bucket project id. | string | ✓ | | +| [name](variables.tf#L221) | Bucket name suffix. | string | ✓ | | +| [project_id](variables.tf#L279) | Bucket project id. | string | ✓ | | | [autoclass](variables.tf#L17) | Enable autoclass to automatically transition objects to appropriate storage classes based on their access pattern. If set to true, storage_class must be set to STANDARD. Defaults to false. | bool | | null | -| [cors](variables.tf#L23) | CORS configuration for the bucket. Defaults to null. | object({…}) | | null | -| [custom_placement_config](variables.tf#L34) | The bucket's custom location configuration, which specifies the individual regions that comprise a dual-region bucket. If the bucket is designated as REGIONAL or MULTI_REGIONAL, the parameters are empty. | list(string) | | null | -| [default_event_based_hold](variables.tf#L40) | Enable event based hold to new objects added to specific bucket, defaults to false. | bool | | null | -| [enable_hierarchical_namespace](variables.tf#L46) | Enables hierarchical namespace. | bool | | null | -| [enable_object_retention](variables.tf#L52) | Enables object retention on a storage bucket. | bool | | null | -| [encryption_key](variables.tf#L58) | KMS key that will be used for encryption. | string | | null | -| [force_destroy](variables.tf#L64) | Optional map to set force destroy keyed by name, defaults to false. | bool | | false | -| [iam](variables.tf#L70) | IAM bindings in {ROLE => [MEMBERS]} format. | map(list(string)) | | {} | -| [iam_bindings](variables.tf#L76) | Authoritative IAM bindings in {KEY => {role = ROLE, members = [], condition = {}}}. Keys are arbitrary. | map(object({…})) | | {} | -| [iam_bindings_additive](variables.tf#L91) | Individual additive IAM bindings. Keys are arbitrary. | map(object({…})) | | {} | -| [iam_by_principals](variables.tf#L106) | Authoritative IAM binding in {PRINCIPAL => [ROLES]} format. Principals need to be statically defined to avoid cycle errors. Merged internally with the `iam` variable. | map(list(string)) | | {} | -| [labels](variables.tf#L113) | Labels to be attached to all buckets. | map(string) | | {} | -| [lifecycle_rules](variables.tf#L119) | Bucket lifecycle rule. | map(object({…})) | | {} | -| [logging_config](variables.tf#L174) | Bucket logging configuration. | object({…}) | | null | -| [managed_folders](variables.tf#L183) | Managed folders to create within the bucket in {PATH => CONFIG} format. | map(object({…})) | | {} | -| [notification_config](variables.tf#L216) | GCS Notification configuration. | object({…}) | | null | -| [objects_to_upload](variables.tf#L233) | Objects to be uploaded to bucket. | map(object({…})) | | {} | -| [prefix](variables.tf#L259) | Optional prefix used to generate the bucket name. | string | | null | -| [public_access_prevention](variables.tf#L274) | Prevents public access to the bucket. | string | | null | -| [requester_pays](variables.tf#L284) | Enables Requester Pays on a storage bucket. | bool | | null | -| [retention_policy](variables.tf#L290) | Bucket retention policy. | object({…}) | | null | -| [rpo](variables.tf#L299) | Bucket recovery point objective. | string | | null | -| [soft_delete_retention](variables.tf#L309) | The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Set to 0 to override the default and disable. | number | | null | -| [storage_class](variables.tf#L315) | Bucket storage class. | string | | "STANDARD" | -| [tag_bindings](variables.tf#L325) | Tag bindings for this folder, in key => tag value id format. | map(string) | | {} | -| [uniform_bucket_level_access](variables.tf#L332) | Allow using object ACLs (false) or not (true, this is the recommended behavior) , defaults to true (which is the recommended practice, but not the behavior of storage API). | bool | | true | -| [versioning](variables.tf#L338) | Enable versioning, defaults to false. | bool | | null | -| [website](variables.tf#L344) | Bucket website. | object({…}) | | null | +| [bucket_create](variables.tf#L23) | Create bucket. | bool | | true | +| [cors](variables.tf#L29) | CORS configuration for the bucket. Defaults to null. | object({…}) | | null | +| [custom_placement_config](variables.tf#L40) | The bucket's custom location configuration, which specifies the individual regions that comprise a dual-region bucket. If the bucket is designated as REGIONAL or MULTI_REGIONAL, the parameters are empty. | list(string) | | null | +| [default_event_based_hold](variables.tf#L46) | Enable event based hold to new objects added to specific bucket, defaults to false. | bool | | null | +| [enable_hierarchical_namespace](variables.tf#L52) | Enables hierarchical namespace. | bool | | null | +| [enable_object_retention](variables.tf#L58) | Enables object retention on a storage bucket. | bool | | null | +| [encryption_key](variables.tf#L64) | KMS key that will be used for encryption. | string | | null | +| [force_destroy](variables.tf#L70) | Optional map to set force destroy keyed by name, defaults to false. | bool | | false | +| [iam](variables.tf#L76) | IAM bindings in {ROLE => [MEMBERS]} format. | map(list(string)) | | {} | +| [iam_bindings](variables.tf#L82) | Authoritative IAM bindings in {KEY => {role = ROLE, members = [], condition = {}}}. Keys are arbitrary. | map(object({…})) | | {} | +| [iam_bindings_additive](variables.tf#L97) | Individual additive IAM bindings. Keys are arbitrary. | map(object({…})) | | {} | +| [iam_by_principals](variables.tf#L112) | Authoritative IAM binding in {PRINCIPAL => [ROLES]} format. Principals need to be statically defined to avoid cycle errors. Merged internally with the `iam` variable. | map(list(string)) | | {} | +| [labels](variables.tf#L119) | Labels to be attached to all buckets. | map(string) | | {} | +| [lifecycle_rules](variables.tf#L125) | Bucket lifecycle rule. | map(object({…})) | | {} | +| [location](variables.tf#L174) | Bucket location. | string | | null | +| [logging_config](variables.tf#L184) | Bucket logging configuration. | object({…}) | | null | +| [managed_folders](variables.tf#L193) | Managed folders to create within the bucket in {PATH => CONFIG} format. | map(object({…})) | | {} | +| [notification_config](variables.tf#L226) | GCS Notification configuration. | object({…}) | | null | +| [objects_to_upload](variables.tf#L243) | Objects to be uploaded to bucket. | map(object({…})) | | {} | +| [prefix](variables.tf#L269) | Optional prefix used to generate the bucket name. | string | | null | +| [public_access_prevention](variables.tf#L284) | Prevents public access to the bucket. | string | | null | +| [requester_pays](variables.tf#L294) | Enables Requester Pays on a storage bucket. | bool | | null | +| [retention_policy](variables.tf#L300) | Bucket retention policy. | object({…}) | | null | +| [rpo](variables.tf#L309) | Bucket recovery point objective. | string | | null | +| [soft_delete_retention](variables.tf#L319) | The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Set to 0 to override the default and disable. | number | | null | +| [storage_class](variables.tf#L325) | Bucket storage class. | string | | "STANDARD" | +| [tag_bindings](variables.tf#L335) | Tag bindings for this folder, in key => tag value id format. | map(string) | | {} | +| [uniform_bucket_level_access](variables.tf#L342) | Allow using object ACLs (false) or not (true, this is the recommended behavior) , defaults to true (which is the recommended practice, but not the behavior of storage API). | bool | | true | +| [versioning](variables.tf#L348) | Enable versioning, defaults to false. | bool | | null | +| [website](variables.tf#L354) | Bucket website. | object({…}) | | null | ## Outputs diff --git a/modules/gcs/iam.tf b/modules/gcs/iam.tf index 87a975871..69a4f62ac 100644 --- a/modules/gcs/iam.tf +++ b/modules/gcs/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,14 +35,14 @@ locals { resource "google_storage_bucket_iam_binding" "authoritative" { for_each = local.iam - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name role = each.key members = each.value } resource "google_storage_bucket_iam_binding" "bindings" { for_each = var.iam_bindings - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name role = each.value.role members = each.value.members dynamic "condition" { @@ -57,7 +57,7 @@ resource "google_storage_bucket_iam_binding" "bindings" { resource "google_storage_bucket_iam_member" "bindings" { for_each = var.iam_bindings_additive - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name role = each.value.role member = each.value.member dynamic "condition" { diff --git a/modules/gcs/main.tf b/modules/gcs/main.tf index 077a2730a..f67d5f791 100644 --- a/modules/gcs/main.tf +++ b/modules/gcs/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,13 +15,32 @@ */ locals { + _name = "${local.prefix}${lower(var.name)}" prefix = var.prefix == null ? "" : "${var.prefix}-" notification = try(var.notification_config.enabled, false) topic_create = try(var.notification_config.create_topic, null) != null + bucket = ( + var.bucket_create ? { + name = try(google_storage_bucket.bucket[0].name, null) + id = try(google_storage_bucket.bucket[0].id, null) + url = try(google_storage_bucket.bucket[0].url, null) + } + : { + name = local._name + id = local._name + url = "gs://${local._name}" + } + ) +} + +moved { + from = google_storage_bucket.bucket + to = google_storage_bucket.bucket[0] } resource "google_storage_bucket" "bucket" { - name = "${local.prefix}${lower(var.name)}" + count = var.bucket_create ? 1 : 0 + name = local._name project = var.project_id location = var.location storage_class = var.storage_class @@ -142,7 +161,7 @@ resource "google_storage_bucket" "bucket" { resource "google_storage_bucket_object" "objects" { for_each = var.objects_to_upload - bucket = google_storage_bucket.bucket.id + bucket = local.bucket.id name = each.value.name metadata = each.value.metadata content = each.value.content @@ -170,7 +189,7 @@ resource "google_storage_bucket_object" "objects" { resource "google_storage_notification" "notification" { count = local.notification ? 1 : 0 - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name payload_format = var.notification_config.payload_format topic = try( google_pubsub_topic.topic[0].id, var.notification_config.topic_name diff --git a/modules/gcs/managed-folders.tf b/modules/gcs/managed-folders.tf index 326615d74..b042c66ac 100644 --- a/modules/gcs/managed-folders.tf +++ b/modules/gcs/managed-folders.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -58,7 +58,7 @@ locals { resource "google_storage_managed_folder" "folder" { for_each = local.managed_folders - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name name = each.key force_destroy = each.value.force_destroy } @@ -70,7 +70,7 @@ resource "google_storage_managed_folder_iam_binding" "authoritative" { } role = each.value.role members = each.value.members - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name managed_folder = google_storage_managed_folder.folder[each.value.managed_folder].name } @@ -78,7 +78,7 @@ resource "google_storage_managed_folder_iam_binding" "bindings" { for_each = local.managed_folder_iam_bindings role = each.value.role members = each.value.members - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name managed_folder = google_storage_managed_folder.folder[each.value.managed_folder].name dynamic "condition" { @@ -95,7 +95,7 @@ resource "google_storage_managed_folder_iam_member" "members" { for_each = local.managed_folder_iam_bindings_additive role = each.value.role member = each.value.member - bucket = google_storage_bucket.bucket.name + bucket = local.bucket.name managed_folder = google_storage_managed_folder.folder[each.value.managed_folder].name dynamic "condition" { diff --git a/modules/gcs/outputs.tf b/modules/gcs/outputs.tf index ed2f6c212..8ee19644a 100644 --- a/modules/gcs/outputs.tf +++ b/modules/gcs/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ output "bucket" { description = "Bucket resource." - value = google_storage_bucket.bucket + value = one(google_storage_bucket.bucket) } # We add `id` as an alias to `name` to simplify log sink handling. @@ -27,7 +27,7 @@ output "bucket" { output "id" { description = "Fully qualified bucket id." - value = "${local.prefix}${lower(var.name)}" + value = local._name depends_on = [ google_storage_bucket.bucket, google_storage_bucket_iam_binding.bindings, @@ -38,7 +38,7 @@ output "id" { output "name" { description = "Bucket name." - value = "${local.prefix}${lower(var.name)}" + value = local._name depends_on = [ google_storage_bucket.bucket, google_storage_bucket_iam_binding.bindings, @@ -71,5 +71,5 @@ output "topic" { output "url" { description = "Bucket URL." - value = google_storage_bucket.bucket.url + value = local.bucket.url } diff --git a/modules/gcs/tags.tf b/modules/gcs/tags.tf index 895605432..9432411ca 100644 --- a/modules/gcs/tags.tf +++ b/modules/gcs/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ resource "google_tags_location_tag_binding" "binding" { for_each = var.tag_bindings - parent = "//storage.googleapis.com/projects/_/buckets/${local.prefix}${lower(var.name)}" + parent = "//storage.googleapis.com/projects/_/buckets/${local._name}" tag_value = each.value location = var.location depends_on = [ diff --git a/modules/gcs/variables.tf b/modules/gcs/variables.tf index 5c66d2e51..da26b163a 100644 --- a/modules/gcs/variables.tf +++ b/modules/gcs/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,12 @@ variable "autoclass" { default = null } +variable "bucket_create" { + description = "Create bucket." + type = bool + default = true +} + variable "cors" { description = "CORS configuration for the bucket. Defaults to null." type = object({ @@ -168,7 +174,11 @@ variable "lifecycle_rules" { variable "location" { description = "Bucket location." type = string - # default = "EU" + default = null + validation { + condition = ((var.bucket_create == true) == (var.location != null)) + error_message = "Bucket location is required if and only if bucket_create is true." + } } variable "logging_config" { diff --git a/modules/gcs/versions.tofu b/modules/gcs/versions.tofu index a07a693c5..80d3b0657 100644 --- a/modules/gcs/versions.tofu +++ b/modules/gcs/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/gcve-private-cloud/versions.tofu b/modules/gcve-private-cloud/versions.tofu index 0f87ad771..4f69bdc8a 100644 --- a/modules/gcve-private-cloud/versions.tofu +++ b/modules/gcve-private-cloud/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/gke-cluster-autopilot/versions.tofu b/modules/gke-cluster-autopilot/versions.tofu index d082ffaa7..4763f0b25 100644 --- a/modules/gke-cluster-autopilot/versions.tofu +++ b/modules/gke-cluster-autopilot/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/gke-cluster-standard/versions.tofu b/modules/gke-cluster-standard/versions.tofu index ce98b621d..2cc70cd8a 100644 --- a/modules/gke-cluster-standard/versions.tofu +++ b/modules/gke-cluster-standard/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/gke-hub/versions.tofu b/modules/gke-hub/versions.tofu index e91414b98..a99a33a1e 100644 --- a/modules/gke-hub/versions.tofu +++ b/modules/gke-hub/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/gke-nodepool/versions.tofu b/modules/gke-nodepool/versions.tofu index d450be994..736437af9 100644 --- a/modules/gke-nodepool/versions.tofu +++ b/modules/gke-nodepool/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/iam-service-account/versions.tofu b/modules/iam-service-account/versions.tofu index 7a1bf594b..e2e1a8fe1 100644 --- a/modules/iam-service-account/versions.tofu +++ b/modules/iam-service-account/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/kms/versions.tofu b/modules/kms/versions.tofu index 14c374258..8c321d074 100644 --- a/modules/kms/versions.tofu +++ b/modules/kms/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/logging-bucket/versions.tofu b/modules/logging-bucket/versions.tofu index 3edc00187..8836297bd 100644 --- a/modules/logging-bucket/versions.tofu +++ b/modules/logging-bucket/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/looker-core/versions.tofu b/modules/looker-core/versions.tofu index fc74ed218..f6c039e2e 100644 --- a/modules/looker-core/versions.tofu +++ b/modules/looker-core/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/ncc-spoke-ra/versions.tofu b/modules/ncc-spoke-ra/versions.tofu index f4cbbcc41..32caa078a 100644 --- a/modules/ncc-spoke-ra/versions.tofu +++ b/modules/ncc-spoke-ra/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-address/versions.tofu b/modules/net-address/versions.tofu index d2a5038a3..588e45845 100644 --- a/modules/net-address/versions.tofu +++ b/modules/net-address/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-cloudnat/versions.tofu b/modules/net-cloudnat/versions.tofu index 44f51d0d3..597d0fc4b 100644 --- a/modules/net-cloudnat/versions.tofu +++ b/modules/net-cloudnat/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-firewall-policy/versions.tofu b/modules/net-firewall-policy/versions.tofu index 5e5e07f67..fe14e5c98 100644 --- a/modules/net-firewall-policy/versions.tofu +++ b/modules/net-firewall-policy/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-ipsec-over-interconnect/versions.tofu b/modules/net-ipsec-over-interconnect/versions.tofu index 63616bb0b..6796a220a 100644 --- a/modules/net-ipsec-over-interconnect/versions.tofu +++ b/modules/net-ipsec-over-interconnect/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-app-ext-regional/versions.tofu b/modules/net-lb-app-ext-regional/versions.tofu index efaf21c48..945a0c8c2 100644 --- a/modules/net-lb-app-ext-regional/versions.tofu +++ b/modules/net-lb-app-ext-regional/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-app-ext/versions.tofu b/modules/net-lb-app-ext/versions.tofu index 728eb6f82..7735078f3 100644 --- a/modules/net-lb-app-ext/versions.tofu +++ b/modules/net-lb-app-ext/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-app-int-cross-region/versions.tofu b/modules/net-lb-app-int-cross-region/versions.tofu index ba2cd42d8..db2017f5f 100644 --- a/modules/net-lb-app-int-cross-region/versions.tofu +++ b/modules/net-lb-app-int-cross-region/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-app-int/versions.tofu b/modules/net-lb-app-int/versions.tofu index 52c9c29a7..344a9c9ec 100644 --- a/modules/net-lb-app-int/versions.tofu +++ b/modules/net-lb-app-int/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-ext/versions.tofu b/modules/net-lb-ext/versions.tofu index 8a9d852c1..ec89ebfbd 100644 --- a/modules/net-lb-ext/versions.tofu +++ b/modules/net-lb-ext/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-int/versions.tofu b/modules/net-lb-int/versions.tofu index 5c194f8e3..5ce287c2a 100644 --- a/modules/net-lb-int/versions.tofu +++ b/modules/net-lb-int/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-lb-proxy-int/versions.tofu b/modules/net-lb-proxy-int/versions.tofu index 1c8924fed..e373ab530 100644 --- a/modules/net-lb-proxy-int/versions.tofu +++ b/modules/net-lb-proxy-int/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-swp/versions.tofu b/modules/net-swp/versions.tofu index 71839a9e9..51cbdbd50 100644 --- a/modules/net-swp/versions.tofu +++ b/modules/net-swp/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vlan-attachment/versions.tofu b/modules/net-vlan-attachment/versions.tofu index 436677e75..a64bd08b7 100644 --- a/modules/net-vlan-attachment/versions.tofu +++ b/modules/net-vlan-attachment/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vpc-firewall/versions.tofu b/modules/net-vpc-firewall/versions.tofu index 679b31935..2908b3204 100644 --- a/modules/net-vpc-firewall/versions.tofu +++ b/modules/net-vpc-firewall/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vpc-peering/versions.tofu b/modules/net-vpc-peering/versions.tofu index a0f159c15..e2f8768a9 100644 --- a/modules/net-vpc-peering/versions.tofu +++ b/modules/net-vpc-peering/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vpc/versions.tofu b/modules/net-vpc/versions.tofu index d470d93e8..d176a2e89 100644 --- a/modules/net-vpc/versions.tofu +++ b/modules/net-vpc/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vpn-dynamic/versions.tofu b/modules/net-vpn-dynamic/versions.tofu index 7e436c9a1..fac1b8b2b 100644 --- a/modules/net-vpn-dynamic/versions.tofu +++ b/modules/net-vpn-dynamic/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vpn-ha/versions.tofu b/modules/net-vpn-ha/versions.tofu index e241379e1..03582078a 100644 --- a/modules/net-vpn-ha/versions.tofu +++ b/modules/net-vpn-ha/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/net-vpn-static/versions.tofu b/modules/net-vpn-static/versions.tofu index 6b1d3eb23..8ed2e84c8 100644 --- a/modules/net-vpn-static/versions.tofu +++ b/modules/net-vpn-static/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/organization/versions.tofu b/modules/organization/versions.tofu index a78fa4971..31f9df0df 100644 --- a/modules/organization/versions.tofu +++ b/modules/organization/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/project/versions.tofu b/modules/project/versions.tofu index 49760f588..645b9c8c4 100644 --- a/modules/project/versions.tofu +++ b/modules/project/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/projects-data-source/versions.tofu b/modules/projects-data-source/versions.tofu index 097cd6da5..476e94f8f 100644 --- a/modules/projects-data-source/versions.tofu +++ b/modules/projects-data-source/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/pubsub/versions.tofu b/modules/pubsub/versions.tofu index a65a01389..308f95516 100644 --- a/modules/pubsub/versions.tofu +++ b/modules/pubsub/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/secret-manager/versions.tofu b/modules/secret-manager/versions.tofu index 41bde2b65..bc3fc24ee 100644 --- a/modules/secret-manager/versions.tofu +++ b/modules/secret-manager/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/secure-source-manager-instance/versions.tofu b/modules/secure-source-manager-instance/versions.tofu index f6fd8452b..d6a05f672 100644 --- a/modules/secure-source-manager-instance/versions.tofu +++ b/modules/secure-source-manager-instance/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/service-directory/versions.tofu b/modules/service-directory/versions.tofu index b79d12205..0a72b91b1 100644 --- a/modules/service-directory/versions.tofu +++ b/modules/service-directory/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/source-repository/versions.tofu b/modules/source-repository/versions.tofu index 2f805e03c..10aa31499 100644 --- a/modules/source-repository/versions.tofu +++ b/modules/source-repository/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/spanner-instance/versions.tofu b/modules/spanner-instance/versions.tofu index c9e9bcd58..f946bb7ff 100644 --- a/modules/spanner-instance/versions.tofu +++ b/modules/spanner-instance/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/vpc-sc/versions.tofu b/modules/vpc-sc/versions.tofu index 277941ed5..47292f3d8 100644 --- a/modules/vpc-sc/versions.tofu +++ b/modules/vpc-sc/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/modules/workstation-cluster/versions.tofu b/modules/workstation-cluster/versions.tofu index 1148e4f41..19d6a1b46 100644 --- a/modules/workstation-cluster/versions.tofu +++ b/modules/workstation-cluster/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/tests/examples_e2e/setup_module/versions.tofu b/tests/examples_e2e/setup_module/versions.tofu index 24c09fe68..4a6e051b6 100644 --- a/tests/examples_e2e/setup_module/versions.tofu +++ b/tests/examples_e2e/setup_module/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google" diff --git a/tests/fast/stages/s1_resman/simple.yaml b/tests/fast/stages/s1_resman/simple.yaml index 0f7d2058d..b469fb0c7 100644 --- a/tests/fast/stages/s1_resman/simple.yaml +++ b/tests/fast/stages/s1_resman/simple.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,6 +16,9 @@ values: google_storage_bucket_object.providers["1-resman-folder-sandbox"]: bucket: fast2-prod-iac-core-outputs name: providers/1-resman-folder-sandbox-providers.tf + google_storage_bucket_object.providers["1-resman-folder-shared"]: + bucket: fast2-prod-iac-core-outputs + name: providers/1-resman-folder-shared-providers.tf google_storage_bucket_object.providers["1-resman-folder-tenants"]: bucket: fast2-prod-iac-core-outputs name: providers/1-resman-folder-tenants-providers.tf @@ -98,6 +101,8 @@ values: description: null disabled: false display_name: CI/CD 2-net prod service account (read-only). + email: fast2-prod-resman-net-1r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-net-1r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.cicd-sa-ro["networking"].google_service_account_iam_binding.authoritative["roles/iam.workloadIdentityUser"]: @@ -119,6 +124,8 @@ values: description: null disabled: false display_name: CI/CD 2-sec prod service account (read-only). + email: fast2-prod-resman-sec-1r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-sec-1r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.cicd-sa-ro["security"].google_service_account_iam_binding.authoritative["roles/iam.workloadIdentityUser"]: @@ -140,6 +147,8 @@ values: description: null disabled: false display_name: CI/CD 2-net prod service account. + email: fast2-prod-resman-net-1@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-net-1@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.cicd-sa-rw["networking"].google_service_account_iam_binding.authoritative["roles/iam.workloadIdentityUser"]: @@ -161,6 +170,8 @@ values: description: null disabled: false display_name: CI/CD 2-sec prod service account. + email: fast2-prod-resman-sec-1@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-sec-1@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.cicd-sa-rw["security"].google_service_account_iam_binding.authoritative["roles/iam.workloadIdentityUser"]: @@ -172,7 +183,7 @@ values: : bucket: fast2-prod-iac-core-outputs condition: [] role: roles/storage.objectViewer - module.net-bucket[0].google_storage_bucket.bucket: + module.net-bucket[0].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -403,6 +414,8 @@ values: description: null disabled: false display_name: Terraform resman networking service account (read-only). + email: fast2-prod-resman-net-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-net-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.net-sa-ro[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -424,6 +437,8 @@ values: description: null disabled: false display_name: Terraform resman networking service account. + email: fast2-prod-resman-net-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-net-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.net-sa-rw[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -435,7 +450,7 @@ values: bucket: fast2-prod-iac-core-outputs condition: [] role: roles/storage.objectAdmin - module.nsec-bucket[0].google_storage_bucket.bucket: + module.nsec-bucket[0].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -482,6 +497,8 @@ values: description: null disabled: false display_name: Terraform resman network security main service account (read-only). + email: fast2-resman-nsec-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-resman-nsec-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.nsec-sa-ro[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -502,6 +519,8 @@ values: description: null disabled: false display_name: Terraform resman network security main service account. + email: fast2-resman-nsec-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-resman-nsec-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.nsec-sa-rw[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -662,6 +681,10 @@ values: description: Managed by the Terraform organization module. short_name: security timeouts: null + module.organization[0].google_tags_tag_value.default["context/shared"]: + description: Managed by the Terraform organization module. + short_name: shared + timeouts: null module.organization[0].google_tags_tag_value.default["context/tenants"]: description: Managed by the Terraform organization module. short_name: tenants @@ -706,7 +729,7 @@ values: - serviceAccount:fast2-prod-resman-sec-0r@fast2-prod-automation.iam.gserviceaccount.com - serviceAccount:fast2-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com role: roles/resourcemanager.tagViewer - module.pf-bucket[0].google_storage_bucket.bucket: + module.pf-bucket[0].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -753,6 +776,8 @@ values: description: null disabled: false display_name: Terraform resman project factory main service account (read-only). + email: fast2-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.pf-sa-ro[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -773,6 +798,8 @@ values: description: null disabled: false display_name: Terraform resman project factory main service account. + email: fast2-resman-pf-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-resman-pf-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.pf-sa-rw[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -783,7 +810,7 @@ values: bucket: fast2-prod-iac-core-outputs condition: [] role: roles/storage.objectAdmin - module.sec-bucket[0].google_storage_bucket.bucket: + module.sec-bucket[0].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -905,6 +932,8 @@ values: description: null disabled: false display_name: Terraform resman security service account (read-only). + email: fast2-prod-resman-sec-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-sec-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.sec-sa-ro[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -926,6 +955,8 @@ values: description: null disabled: false display_name: Terraform resman security service account. + email: fast2-prod-resman-sec-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-sec-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.sec-sa-rw[0].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -937,7 +968,7 @@ values: bucket: fast2-prod-iac-core-outputs condition: [] role: roles/storage.objectAdmin - module.stage3-bucket["gcve-dev"].google_storage_bucket.bucket: + module.stage3-bucket["gcve-dev"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -974,7 +1005,7 @@ values: members: - serviceAccount:fast2-dev-resman-gcve-0r@fast2-prod-automation.iam.gserviceaccount.com role: roles/storage.objectViewer - module.stage3-bucket["gcve-prod"].google_storage_bucket.bucket: + module.stage3-bucket["gcve-prod"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1011,7 +1042,7 @@ values: members: - serviceAccount:fast2-prod-resman-gcve-0r@fast2-prod-automation.iam.gserviceaccount.com role: roles/storage.objectViewer - module.stage3-bucket["gke-dev"].google_storage_bucket.bucket: + module.stage3-bucket["gke-dev"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1048,7 +1079,7 @@ values: members: - serviceAccount:fast2-dev-resman-gke-0r@fast2-prod-automation.iam.gserviceaccount.com role: roles/storage.objectViewer - module.stage3-bucket["gke-prod"].google_storage_bucket.bucket: + module.stage3-bucket["gke-prod"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1085,7 +1116,7 @@ values: members: - serviceAccount:fast2-prod-resman-gke-0r@fast2-prod-automation.iam.gserviceaccount.com role: roles/storage.objectViewer - module.stage3-bucket["project-factory-dev"].google_storage_bucket.bucket: + module.stage3-bucket["project-factory-dev"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1122,7 +1153,7 @@ values: members: - serviceAccount:fast2-dev-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com role: roles/storage.objectViewer - module.stage3-bucket["project-factory-prod"].google_storage_bucket.bucket: + module.stage3-bucket["project-factory-prod"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1333,6 +1364,8 @@ values: description: null disabled: false display_name: Terraform resman gcve-dev service account (read-only). + email: fast2-dev-resman-gcve-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-gcve-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-ro["gcve-dev"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1353,6 +1386,8 @@ values: description: null disabled: false display_name: Terraform resman gcve-prod service account (read-only). + email: fast2-prod-resman-gcve-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-gcve-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-ro["gcve-prod"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1373,6 +1408,8 @@ values: description: null disabled: false display_name: Terraform resman gke-dev service account (read-only). + email: fast2-dev-resman-gke-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-gke-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-ro["gke-dev"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1393,6 +1430,8 @@ values: description: null disabled: false display_name: Terraform resman gke-prod service account (read-only). + email: fast2-prod-resman-gke-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-gke-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-ro["gke-prod"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1413,6 +1452,8 @@ values: description: null disabled: false display_name: Terraform resman project-factory-dev service account (read-only). + email: fast2-dev-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null ? module.stage3-sa-ro["project-factory-dev"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"] @@ -1433,6 +1474,8 @@ values: description: null disabled: false display_name: Terraform resman project-factory-prod service account (read-only). + email: fast2-prod-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-pf-0r@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null ? module.stage3-sa-ro["project-factory-prod"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"] @@ -1453,6 +1496,8 @@ values: description: null disabled: false display_name: Terraform resman gcve-dev service account. + email: fast2-dev-resman-gcve-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-gcve-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-rw["gcve-dev"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1473,6 +1518,8 @@ values: description: null disabled: false display_name: Terraform resman gcve-prod service account. + email: fast2-prod-resman-gcve-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-gcve-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-rw["gcve-prod"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1493,6 +1540,8 @@ values: description: null disabled: false display_name: Terraform resman gke-dev service account. + email: fast2-dev-resman-gke-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-gke-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-rw["gke-dev"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1513,6 +1562,8 @@ values: description: null disabled: false display_name: Terraform resman gke-prod service account. + email: fast2-prod-resman-gke-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-gke-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.stage3-sa-rw["gke-prod"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1533,6 +1584,8 @@ values: description: null disabled: false display_name: Terraform resman project-factory-dev service account. + email: fast2-dev-resman-pf-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-pf-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null ? module.stage3-sa-rw["project-factory-dev"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"] @@ -1553,6 +1606,8 @@ values: description: null disabled: false display_name: Terraform resman project-factory-prod service account. + email: fast2-prod-resman-pf-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-pf-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null ? module.stage3-sa-rw["project-factory-prod"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"] @@ -1563,7 +1618,7 @@ values: : bucket: fast2-prod-iac-core-outputs condition: [] role: roles/storage.objectAdmin - module.top-level-bucket["sandbox"].google_storage_bucket.bucket: + module.top-level-bucket["sandbox"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1600,7 +1655,7 @@ values: members: - serviceAccount:fast2-dev-resman-sbox-0@fast2-prod-automation.iam.gserviceaccount.com role: roles/storage.objectViewer - module.top-level-bucket["tenants"].google_storage_bucket.bucket: + module.top-level-bucket["shared"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] @@ -1610,6 +1665,45 @@ values: enable_object_retention: null encryption: [] force_destroy: false + hierarchical_namespace: [] + labels: null + lifecycle_rule: [] + location: EU + logging: [] + name: fast2-prod-resman-shared-0 + project: fast2-prod-automation + requester_pays: null + retention_policy: [] + storage_class: STANDARD + terraform_labels: + goog-terraform-provisioned: 'true' + timeouts: null + uniform_bucket_level_access: true + versioning: + - enabled: true + module.top-level-bucket["shared"].google_storage_bucket_iam_binding.authoritative["roles/storage.objectAdmin"]: + bucket: fast2-prod-resman-shared-0 + condition: [] + members: + - serviceAccount:fast2-prod-resman-shared-0@fast2-prod-automation.iam.gserviceaccount.com + role: roles/storage.objectAdmin + module.top-level-bucket["shared"].google_storage_bucket_iam_binding.authoritative["roles/storage.objectViewer"]: + bucket: fast2-prod-resman-shared-0 + condition: [] + members: + - serviceAccount:fast2-prod-resman-shared-0@fast2-prod-automation.iam.gserviceaccount.com + role: roles/storage.objectViewer + module.top-level-bucket["tenants"].google_storage_bucket.bucket[0]: + autoclass: [] + cors: [] + custom_placement_config: [] + default_event_based_hold: null + effective_labels: + goog-terraform-provisioned: 'true' + enable_object_retention: null + encryption: [] + force_destroy: false + hierarchical_namespace: [] labels: null lifecycle_rule: [] location: EU @@ -1681,6 +1775,14 @@ values: timeouts: null module.top-level-folder["sandbox"].google_tags_tag_binding.binding["context"]: timeouts: null + module.top-level-folder["shared"].google_folder.folder[0]: + deletion_protection: false + display_name: Shared Infrastructure + parent: organizations/123456789012 + tags: null + timeouts: null + module.top-level-folder["shared"].google_tags_tag_binding.binding["context"]: + timeouts: null module.top-level-folder["teams"].google_folder.folder[0]: deletion_protection: false display_name: Teams @@ -1745,6 +1847,8 @@ values: description: null disabled: false display_name: Terraform resman sandbox folder service account. + email: fast2-dev-resman-sbox-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-dev-resman-sbox-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.top-level-sa["sandbox"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: @@ -1752,6 +1856,28 @@ values: members: null role: roles/iam.serviceAccountTokenCreator ? module.top-level-sa["sandbox"].google_storage_bucket_iam_member.bucket-roles["fast2-prod-iac-core-outputs-roles/storage.objectAdmin"] + : bucket: fast2-prod-iac-core-outputs + condition: [] + role: roles/storage.objectAdmin + ? module.top-level-sa["shared"].google_project_iam_member.project-roles["fast2-prod-automation-roles/serviceusage.serviceUsageConsumer"] + : condition: [] + project: fast2-prod-automation + role: roles/serviceusage.serviceUsageConsumer + module.top-level-sa["shared"].google_service_account.service_account[0]: + account_id: fast2-prod-resman-shared-0 + create_ignore_already_exists: null + description: null + disabled: false + display_name: Terraform resman shared folder service account. + email: fast2-prod-resman-shared-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-shared-0@fast2-prod-automation.iam.gserviceaccount.com + project: fast2-prod-automation + timeouts: null + module.top-level-sa["shared"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: + condition: [] + members: null + role: roles/iam.serviceAccountTokenCreator + ? module.top-level-sa["shared"].google_storage_bucket_iam_member.bucket-roles["fast2-prod-iac-core-outputs-roles/storage.objectAdmin"] : bucket: fast2-prod-iac-core-outputs condition: [] role: roles/storage.objectAdmin @@ -1765,6 +1891,8 @@ values: description: null disabled: false display_name: Terraform resman tenants folder service account. + email: fast2-prod-resman-tenants-0@fast2-prod-automation.iam.gserviceaccount.com + member: serviceAccount:fast2-prod-resman-tenants-0@fast2-prod-automation.iam.gserviceaccount.com project: fast2-prod-automation timeouts: null module.top-level-sa["tenants"].google_service_account_iam_binding.authoritative["roles/iam.serviceAccountTokenCreator"]: diff --git a/tests/modules/folder/examples/logging.yaml b/tests/modules/folder/examples/logging.yaml index 17379adcf..e48227619 100644 --- a/tests/modules/folder/examples/logging.yaml +++ b/tests/modules/folder/examples/logging.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -120,7 +120,7 @@ values: bucket: test-gcs_sink condition: [] role: roles/storage.objectCreator - module.gcs.google_storage_bucket.bucket: + module.gcs.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/gcs/examples/cmek.yaml b/tests/modules/gcs/examples/cmek.yaml index 1f20a9ef6..b467edc4c 100644 --- a/tests/modules/gcs/examples/cmek.yaml +++ b/tests/modules/gcs/examples/cmek.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: # encryption: __missing__ # - default_kms_key_name: name: test-my-bucket diff --git a/tests/modules/gcs/examples/hns.yaml b/tests/modules/gcs/examples/hns.yaml index 7c2abd5d6..f3b14a71b 100644 --- a/tests/modules/gcs/examples/hns.yaml +++ b/tests/modules/gcs/examples/hns.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: location: EU name: test-my-bucket project: project-id diff --git a/tests/modules/gcs/examples/iam-authoritative.yaml b/tests/modules/gcs/examples/iam-authoritative.yaml index 6ff73f80d..995f61cbe 100644 --- a/tests/modules/gcs/examples/iam-authoritative.yaml +++ b/tests/modules/gcs/examples/iam-authoritative.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: cors: [] custom_placement_config: [] default_event_based_hold: null diff --git a/tests/modules/gcs/examples/iam-bindings-additive.yaml b/tests/modules/gcs/examples/iam-bindings-additive.yaml index 87fdf77b6..bb0a284c3 100644 --- a/tests/modules/gcs/examples/iam-bindings-additive.yaml +++ b/tests/modules/gcs/examples/iam-bindings-additive.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: cors: [] custom_placement_config: [] default_event_based_hold: null diff --git a/tests/modules/gcs/examples/iam-bindings.yaml b/tests/modules/gcs/examples/iam-bindings.yaml index 3109109a7..6fea6b837 100644 --- a/tests/modules/gcs/examples/iam-bindings.yaml +++ b/tests/modules/gcs/examples/iam-bindings.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: cors: [] custom_placement_config: [] default_event_based_hold: null diff --git a/tests/modules/gcs/examples/lifecycle.yaml b/tests/modules/gcs/examples/lifecycle.yaml index 221a4a218..f4240ef9c 100644 --- a/tests/modules/gcs/examples/lifecycle.yaml +++ b/tests/modules/gcs/examples/lifecycle.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: lifecycle_rule: - action: - storage_class: STANDARD diff --git a/tests/modules/gcs/examples/managed-folders.yaml b/tests/modules/gcs/examples/managed-folders.yaml index 30addbf13..e189c9bfc 100644 --- a/tests/modules/gcs/examples/managed-folders.yaml +++ b/tests/modules/gcs/examples/managed-folders.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/gcs/examples/notification.yaml b/tests/modules/gcs/examples/notification.yaml index 81fde73e7..4e3a374e3 100644 --- a/tests/modules/gcs/examples/notification.yaml +++ b/tests/modules/gcs/examples/notification.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ values: module.bucket-gcs-notification.google_pubsub_topic.topic[0]: {} module.bucket-gcs-notification.google_pubsub_topic_iam_binding.binding[0]: {} - module.bucket-gcs-notification.google_storage_bucket.bucket: + module.bucket-gcs-notification.google_storage_bucket.bucket[0]: name: test-my-bucket project: project-id module.bucket-gcs-notification.google_storage_notification.notification[0]: diff --git a/tests/modules/gcs/examples/object-upload.yaml b/tests/modules/gcs/examples/object-upload.yaml index 8076e63bf..34ec0cc9a 100644 --- a/tests/modules/gcs/examples/object-upload.yaml +++ b/tests/modules/gcs/examples/object-upload.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: name: test-my-bucket project: project-id module.bucket.google_storage_bucket_object.objects["sample-data"]: diff --git a/tests/modules/gcs/examples/retention-logging.yaml b/tests/modules/gcs/examples/retention-logging.yaml index ebe3e70dc..dfa067f93 100644 --- a/tests/modules/gcs/examples/retention-logging.yaml +++ b/tests/modules/gcs/examples/retention-logging.yaml @@ -1,4 +1,4 @@ -# Copyright 2023 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: logging: - log_bucket: log-bucket name: test-my-bucket diff --git a/tests/modules/gcs/examples/simple.yaml b/tests/modules/gcs/examples/simple.yaml index eb2476d98..dfc7b74e3 100644 --- a/tests/modules/gcs/examples/simple.yaml +++ b/tests/modules/gcs/examples/simple.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/gcs/examples/tags.yaml b/tests/modules/gcs/examples/tags.yaml index fbee98e97..0c52cf6d1 100644 --- a/tests/modules/gcs/examples/tags.yaml +++ b/tests/modules/gcs/examples/tags.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.bucket.google_storage_bucket.bucket: + module.bucket.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/organization/examples/logging.yaml b/tests/modules/organization/examples/logging.yaml index f358cb5cf..5cc3abc8b 100644 --- a/tests/modules/organization/examples/logging.yaml +++ b/tests/modules/organization/examples/logging.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ values: disable_on_destroy: false project: test-dest-prj service: logging.googleapis.com - module.gcs.google_storage_bucket.bucket: + module.gcs.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/project/examples/data.yaml b/tests/modules/project/examples/data.yaml index c84008230..c3d28c903 100644 --- a/tests/modules/project/examples/data.yaml +++ b/tests/modules/project/examples/data.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,7 +47,7 @@ values: project: project-id resource_tags: null timeouts: null - module.gcs.google_storage_bucket.bucket: + module.gcs.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/project/examples/logging.yaml b/tests/modules/project/examples/logging.yaml index 4b652f3a3..238762b74 100644 --- a/tests/modules/project/examples/logging.yaml +++ b/tests/modules/project/examples/logging.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ values: disable_on_destroy: false project: test-dest-prj service: logging.googleapis.com - module.gcs.google_storage_bucket.bucket: + module.gcs.google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tests/modules/project_factory/examples/example.yaml b/tests/modules/project_factory/examples/example.yaml index a7154ae6f..1c4e6b085 100644 --- a/tests/modules/project_factory/examples/example.yaml +++ b/tests/modules/project_factory/examples/example.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Google LLC +# Copyright 2025 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. values: - module.project-factory.module.automation-buckets["dev-tb-app0-0/state"].google_storage_bucket.bucket: + module.project-factory.module.automation-buckets["dev-tb-app0-0/state"].google_storage_bucket.bucket[0]: autoclass: [] cors: [] custom_placement_config: [] diff --git a/tools/lockfile/versions.tofu b/tools/lockfile/versions.tofu index 3cbddc823..d2b97e768 100644 --- a/tools/lockfile/versions.tofu +++ b/tools/lockfile/versions.tofu @@ -15,7 +15,7 @@ # Fabric release: v36.1.0 terraform { - required_version = ">= 1.8.0" + required_version = ">= 1.9.0" required_providers { google = { source = "hashicorp/google"