Closed obriensystems closed 2 months ago
Terraform local downgrade procedure - OSX (watch the sh line endings) get 1.3 https://releases.hashicorp.com/terraform/ https://releases.hashicorp.com/terraform/1.3.0/ https://releases.hashicorp.com/terraform/1.3.0/terraform_1.3.0_darwin_arm64.zip
drop terraform binary into a path folder
michaelobrien@mbp7 TEF-GCP-LZ-HS % terraform --version
Terraform v1.3.0
on darwin_arm64
Your version of Terraform is out of date! The latest version
is 1.7.4. You can update by downloading from https://www.terraform.io/downloads.html
The validation script needs to be updated https://github.com/terraform-google-modules/terraform-example-foundation/blob/master/scripts/validate-requirements.sh#L94
TF_VERSION="1.3.0"
...
TERRAFORM_CURRENT_VERSION=$(terraform version -json | jq -r .terraform_version)
if [ "$(compare_version "$TERRAFORM_CURRENT_VERSION" "$TF_VERSION")" -gt 1 ]; then
echo_wrong_version "Terraform" "greater than or equal to" "$TF_VERSION" "https://learn.hashicorp.com/tutorials/terraform/install-cli" "$TERRAFORM_CURRENT_VERSION"
ERRORS+=$' Terraform version is incompatible.\n'
fi
change
-greater than or equal to
+equal to
- if [ "$(compare_version "$TERRAFORM_CURRENT_VERSION" "$TF_VERSION")" -gt 1 ]; then
+ if [ "$(compare_version "$TERRAFORM_CURRENT_VERSION" "$TF_VERSION")" -eq 1 ]; then
## test this change first (locally in just a script unit test or in a new-org deploy)
Note we can go to 1.3.7 - on a minor version but 1.4+ is untested
michael@cloudshell:~/tef-olxyz/github/gcp-org (tef-olxyz)$ git checkout -b production
Switched to a new branch 'production'
michael@cloudshell:~/tef-olxyz/github/gcp-org (tef-olxyz)$ git push origin production
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://source.developers.google.com/p/prj-b-cicd-82vv/r/gcp-org
* [new branch] production -> production
Build OK
Step #2 - "tf plan": Plan: 288 to add, 0 to change, 0 to destroy.
Step #4 - "tf apply": Apply complete! Resources: 288 added, 0 changed, 0 destroyed.
Step #4 - "tf apply":
Step #4 - "tf apply": Outputs:
Step #4 - "tf apply":
Step #4 - "tf apply": base_net_hub_project_id = "prj-c-base-net-hub-5y8h"
Step #4 - "tf apply": billing_sink_names = {
Step #4 - "tf apply": "prj" = "sk-c-logging-prj-billing-wh58"
Step #4 - "tf apply": "pub" = "sk-c-logging-pub-billing-wh58"
Step #4 - "tf apply": "sto" = "sk-c-logging-bkt-billing-wh58"
Step #4 - "tf apply": }
Step #4 - "tf apply": cai_monitoring_artifact_registry = "ar-cai-monitoring-4241"
Step #4 - "tf apply": cai_monitoring_asset_feed = "organizations/1064386348915/feeds/fd-cai-monitoring-4241"
Step #4 - "tf apply": cai_monitoring_bucket = "bkt-cai-monitoring-4241-sources-726972909649-us-central1"
Step #4 - "tf apply": cai_monitoring_topic = "top-cai-monitoring-4241-event"
Step #4 - "tf apply": common_folder_name = "folders/96486704059"
Step #4 - "tf apply": dns_hub_project_id = "prj-c-dns-hub-6f4b"
Step #4 - "tf apply": domains_to_allow = tolist([
Step #4 - "tf apply": "obrienlabs.xyz",
Step #4 - "tf apply": ])
Step #4 - "tf apply": interconnect_project_id = "prj-c-interconnect-s2zg"
Step #4 - "tf apply": interconnect_project_number = "671048289254"
Step #4 - "tf apply": logs_export_project_linked_dataset_name = "projects/prj-c-logging-fn0h/locations/us-central1/buckets/AggregatedLogs/links/ds_c_prj_aggregated_logs_analytics"
Step #4 - "tf apply": logs_export_project_logbucket_name = "AggregatedLogs"
Step #4 - "tf apply": logs_export_pubsub_topic = "tp-org-logs-o9q2"
Step #4 - "tf apply": logs_export_storage_bucket_name = "bkt-prj-c-logging-fn0h-org-logs-o9q2"
Step #4 - "tf apply": network_folder_name = "folders/652472417643"
Step #4 - "tf apply": org_audit_logs_project_id = "prj-c-logging-fn0h"
Step #4 - "tf apply": org_billing_logs_project_id = "prj-c-billing-logs-ve1w"
Step #4 - "tf apply": org_id = "1064386348915"
Step #4 - "tf apply": org_kms_project_id = "prj-c-kms-eeg3"
Step #4 - "tf apply": org_secrets_project_id = "prj-c-secrets-2lxo"
Step #4 - "tf apply": parent_resource_id = "736660879367"
Step #4 - "tf apply": parent_resource_type = "folder"
Step #4 - "tf apply": restricted_net_hub_project_id = "prj-c-restricted-net-hub-a8d5"
Step #4 - "tf apply": restricted_net_hub_project_number = "127928059862"
Step #4 - "tf apply": scc_notification_name = "scc-notify"
Step #4 - "tf apply": scc_notifications_project_id = "prj-c-scc-8zsj"
Step #4 - "tf apply": shared_vpc_projects = {
Step #4 - "tf apply": "development" = {
Step #4 - "tf apply": "base_shared_vpc_project_id" = "prj-d-shared-base-nlqs"
Step #4 - "tf apply": "base_shared_vpc_project_number" = "101627147505"
Step #4 - "tf apply": "restricted_shared_vpc_project_id" = "prj-d-shared-restricted-j004"
Step #4 - "tf apply": "restricted_shared_vpc_project_number" = "1045069971921"
Step #4 - "tf apply": }
Step #4 - "tf apply": "non-production" = {
Step #4 - "tf apply": "base_shared_vpc_project_id" = "prj-n-shared-base-b12y"
Step #4 - "tf apply": "base_shared_vpc_project_number" = "607634801735"
Step #4 - "tf apply": "restricted_shared_vpc_project_id" = "prj-n-shared-restricted-qnv6"
Step #4 - "tf apply": "restricted_shared_vpc_project_number" = "856556999326"
Step #4 - "tf apply": }
Step #4 - "tf apply": "production" = {
Step #4 - "tf apply": "base_shared_vpc_project_id" = "prj-p-shared-base-oae0"
Step #4 - "tf apply": "base_shared_vpc_project_number" = "17819846901"
Step #4 - "tf apply": "restricted_shared_vpc_project_id" = "prj-p-shared-restricted-2pqc"
Step #4 - "tf apply": "restricted_shared_vpc_project_number" = "98452292868"
Step #4 - "tf apply": }
Step #4 - "tf apply": }
Step #4 - "tf apply": tags = {
Step #4 - "tf apply": "environment_bootstrap" = "tagValues/281484537587812"
Step #4 - "tf apply": "environment_development" = "tagValues/281483791828482"
Step #4 - "tf apply": "environment_non-production" = "tagValues/281484388371311"
Step #4 - "tf apply": "environment_production" = "tagValues/281483304603502"
Step #4 - "tf apply": }
Step #4 - "tf apply": policy-library/policies doesn't match production; skipping
Step #4 - "tf apply": policy-library/lib doesn't match production; skipping
Step #4 - "tf apply": policy-library/.git doesn't match production; skipping
Finished Step #4 - "tf apply"
15 more projects - total of 18 so far
TL;DR
Update: should have followed the warning around 1.3.0 in https://github.com/terraform-google-modules/terraform-example-foundation/pull/831/files https://github.com/terraform-google-modules/terraform-example-foundation/blob/master/0-bootstrap/README.md#prerequisites
Note: Make sure that you use version 1.3.0 of Terraform throughout this series. Otherwise, you might experience Terraform state snapshot lock errors.
see #1149
Expected behavior
No response
Observed behavior
No response
Terraform Configuration
Terraform Version
Additional information
No response