From 6608e3672e24c3baac36fb0fe7405cbb72a2805f Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Mon, 15 Apr 2024 12:08:41 -0700 Subject: [PATCH 1/7] Upgrade cloudfoundry from 0.53.0 to 0.53.1 everywhere --- terraform/bootstrap/providers.tf | 2 +- terraform/demo/providers.tf | 2 +- terraform/development/providers.tf | 2 +- terraform/production/providers.tf | 2 +- terraform/sandbox/providers.tf | 2 +- terraform/shared/egress_space/providers.tf | 2 +- terraform/shared/ses/providers.tf | 2 +- terraform/shared/sns/providers.tf | 2 +- terraform/staging/providers.tf | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/terraform/bootstrap/providers.tf b/terraform/bootstrap/providers.tf index 5dcaece3e..3c699e728 100644 --- a/terraform/bootstrap/providers.tf +++ b/terraform/bootstrap/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } } diff --git a/terraform/demo/providers.tf b/terraform/demo/providers.tf index f13333d3e..34ba30a62 100644 --- a/terraform/demo/providers.tf +++ b/terraform/demo/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } diff --git a/terraform/development/providers.tf b/terraform/development/providers.tf index 5dcaece3e..3c699e728 100644 --- a/terraform/development/providers.tf +++ b/terraform/development/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } } diff --git a/terraform/production/providers.tf b/terraform/production/providers.tf index 499759f48..b5c45f63e 100644 --- a/terraform/production/providers.tf +++ b/terraform/production/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } diff --git a/terraform/sandbox/providers.tf b/terraform/sandbox/providers.tf index d5a3313de..590be4e3d 100644 --- a/terraform/sandbox/providers.tf +++ b/terraform/sandbox/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } diff --git a/terraform/shared/egress_space/providers.tf b/terraform/shared/egress_space/providers.tf index 21ac567a2..01ab1f803 100644 --- a/terraform/shared/egress_space/providers.tf +++ b/terraform/shared/egress_space/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } } diff --git a/terraform/shared/ses/providers.tf b/terraform/shared/ses/providers.tf index 21ac567a2..01ab1f803 100644 --- a/terraform/shared/ses/providers.tf +++ b/terraform/shared/ses/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } } diff --git a/terraform/shared/sns/providers.tf b/terraform/shared/sns/providers.tf index 21ac567a2..01ab1f803 100644 --- a/terraform/shared/sns/providers.tf +++ b/terraform/shared/sns/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } } diff --git a/terraform/staging/providers.tf b/terraform/staging/providers.tf index 11dceea7d..0f09460ef 100644 --- a/terraform/staging/providers.tf +++ b/terraform/staging/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.53.0" + version = "0.53.1" } } From 99716f39e68b3df0d420b2a9bd45301a5d4462ed Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Mon, 15 Apr 2024 16:43:35 -0700 Subject: [PATCH 2/7] Upgrade minimum Terraform version in each providers.tf file --- terraform/bootstrap/providers.tf | 2 +- terraform/demo/providers.tf | 2 +- terraform/development/providers.tf | 2 +- terraform/production/providers.tf | 2 +- terraform/sandbox/providers.tf | 2 +- terraform/shared/egress_space/providers.tf | 2 +- terraform/shared/ses/providers.tf | 2 +- terraform/shared/sns/providers.tf | 2 +- terraform/staging/providers.tf | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/terraform/bootstrap/providers.tf b/terraform/bootstrap/providers.tf index 5dcaece3e..dc6beee63 100644 --- a/terraform/bootstrap/providers.tf +++ b/terraform/bootstrap/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/demo/providers.tf b/terraform/demo/providers.tf index f13333d3e..f00f521d4 100644 --- a/terraform/demo/providers.tf +++ b/terraform/demo/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/development/providers.tf b/terraform/development/providers.tf index 5dcaece3e..dc6beee63 100644 --- a/terraform/development/providers.tf +++ b/terraform/development/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/production/providers.tf b/terraform/production/providers.tf index 499759f48..0b00ed029 100644 --- a/terraform/production/providers.tf +++ b/terraform/production/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/sandbox/providers.tf b/terraform/sandbox/providers.tf index d5a3313de..fa23dfe2f 100644 --- a/terraform/sandbox/providers.tf +++ b/terraform/sandbox/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/shared/egress_space/providers.tf b/terraform/shared/egress_space/providers.tf index 21ac567a2..2dd2a8e2e 100644 --- a/terraform/shared/egress_space/providers.tf +++ b/terraform/shared/egress_space/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/shared/ses/providers.tf b/terraform/shared/ses/providers.tf index 21ac567a2..2dd2a8e2e 100644 --- a/terraform/shared/ses/providers.tf +++ b/terraform/shared/ses/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/shared/sns/providers.tf b/terraform/shared/sns/providers.tf index 21ac567a2..2dd2a8e2e 100644 --- a/terraform/shared/sns/providers.tf +++ b/terraform/shared/sns/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/staging/providers.tf b/terraform/staging/providers.tf index 11dceea7d..f8ad62283 100644 --- a/terraform/staging/providers.tf +++ b/terraform/staging/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.0" + required_version = "~> 1.8" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" From dc6379bae79f451e3e4e6840ea82b60055ee4115 Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Mon, 15 Apr 2024 16:51:32 -0700 Subject: [PATCH 3/7] Update version of Terraform installed in the main README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 651c153ee..76b50ef5b 100644 --- a/README.md +++ b/README.md @@ -141,10 +141,10 @@ Terraform installations. This is great, but you still need to install Terraform itself, which can be done with this command: ```sh -tfenv install latest:^1.4.0 +tfenv install "latest:^1.8.0" ``` -_NOTE: This project currently uses the latest `1.4.x release of Terraform._ +_NOTE: This project currently uses the latest `1.8.x release of Terraform._ #### Python Installation From 13061ce9398d7e9472b2f9a2f1eb4f1e0a3c6783 Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Mon, 15 Apr 2024 17:25:04 -0700 Subject: [PATCH 4/7] Update README about the -m flag when creating a SpaceDeployer --- terraform/README.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/terraform/README.md b/terraform/README.md index 1d75967f0..e72ca8a6f 100644 --- a/terraform/README.md +++ b/terraform/README.md @@ -89,17 +89,19 @@ These steps assume shared [Terraform state credentials](#terraform-state-credent 1. Run `cf spaces` and, from the output, copy the space name for the environment you are working in, such as `notify-sandbox`. -1. Next you will set up a SpaceDeployer. Prepare to fill in these values: - * `` will be the string you copied from the prior step - * `` can be anything, although we recommend something that communicates the purpose of the deployer. For example: "circleci-deployer" for the credentials CircleCI uses to deploy the application, or "sandbox-" for credentials to run terraform manually. +1. Next you will set up a SpaceDeployer service account instance. This is something like a stub user account, just for deployment. Note these two values which you will use both to create and destroy the account: + 1. `` will be the string you copied from the prior step + 1. `` can be anything, although we recommend something that communicates the purpose of the deployer. For example: "circleci-deployer" for the credentials CircleCI uses to deploy the application, or "sandbox-" for credentials to run terraform manually. - Put those two values into this command: + Put those two values into this command: ```bash - ./create_service_account.sh -s -u > secrets.auto.tfvars + ../create_service_account.sh -s -u > secrets.auto.tfvars ``` The script will output the `username` (as `cf_user`) and `password` (as `cf_password`) for your ``. The [cloud.gov service account documentation](https://cloud.gov/docs/services/cloud-gov-service-account/) has more information. + Some resources you might work on require a SpaceDeployer account with higher permissions. Add the `-m` flag to the command to get this. + The command uses the redirection operator (`>`) to write that output to the `secrets.auto.tfvars` file. Terraform will find the username and password there, and use them as input variables. 1. While still in an environment directory, initialize Terraform: @@ -137,6 +139,8 @@ These steps assume shared [Terraform state credentials](#terraform-state-credent ./destroy_service_account.sh -s -u ``` + List `cf services` if you are unsure which space deployer service instances still exist + Optionally, you can also `rm secrets.auto.tfvars` ## Structure @@ -195,3 +199,12 @@ You need to re-authenticate with the Cloud Foundry CLI cf login -a api.fr.cloud.gov --sso ``` You may also need to log in again to the Cloud.gov website. + +### CF account not authorized + +``` +Error: You are not authorized to perform the requested action +``` +This error indicates that the Cloud Foundry user account (or service account) needs OrgManager permissions to take the action. +* When you create a SpaceDeployer service account, use the `-m` flag when running the `./create_service_account.sh` script +* Your own CF user may may also require OrgManager permissions to run the script From 4b904c69c26f638fe298a3536d1244394d49bf51 Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Mon, 15 Apr 2024 17:32:34 -0700 Subject: [PATCH 5/7] One more troubleshooting item --- terraform/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/terraform/README.md b/terraform/README.md index e72ca8a6f..4cb2c7cf7 100644 --- a/terraform/README.md +++ b/terraform/README.md @@ -208,3 +208,9 @@ Error: You are not authorized to perform the requested action This error indicates that the Cloud Foundry user account (or service account) needs OrgManager permissions to take the action. * When you create a SpaceDeployer service account, use the `-m` flag when running the `./create_service_account.sh` script * Your own CF user may may also require OrgManager permissions to run the script + +### Services limit +``` +You have exceeded your organization's services limit. +``` +Too many Cloud Foundry services have been created without being destroyed. Perhaps Terraform developers have forgotten to delete their SpaceDeployers after they finish with them. List `cf services` to see. From dbfb1e23795c6f1ec9e2c4373558b43f5d2890d9 Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Mon, 15 Apr 2024 17:52:40 -0700 Subject: [PATCH 6/7] Accommodate the version of Terraform that CI/CD expects --- README.md | 5 ++--- terraform/bootstrap/providers.tf | 2 +- terraform/demo/providers.tf | 2 +- terraform/development/providers.tf | 2 +- terraform/production/providers.tf | 2 +- terraform/sandbox/providers.tf | 2 +- terraform/shared/egress_space/providers.tf | 2 +- terraform/shared/ses/providers.tf | 2 +- terraform/shared/sns/providers.tf | 2 +- terraform/staging/providers.tf | 2 +- 10 files changed, 11 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 76b50ef5b..161406485 100644 --- a/README.md +++ b/README.md @@ -141,11 +141,10 @@ Terraform installations. This is great, but you still need to install Terraform itself, which can be done with this command: ```sh -tfenv install "latest:^1.8.0" +tfenv install "latest:^1.7" +tfenv use 1.7.x # x = the patch version installed ``` -_NOTE: This project currently uses the latest `1.8.x release of Terraform._ - #### Python Installation Now we're going to install a tool to help us manage Python versions and diff --git a/terraform/bootstrap/providers.tf b/terraform/bootstrap/providers.tf index dc6beee63..1c3582d57 100644 --- a/terraform/bootstrap/providers.tf +++ b/terraform/bootstrap/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/demo/providers.tf b/terraform/demo/providers.tf index f00f521d4..ecd6e2bc9 100644 --- a/terraform/demo/providers.tf +++ b/terraform/demo/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/development/providers.tf b/terraform/development/providers.tf index dc6beee63..1c3582d57 100644 --- a/terraform/development/providers.tf +++ b/terraform/development/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/production/providers.tf b/terraform/production/providers.tf index 0b00ed029..280e11191 100644 --- a/terraform/production/providers.tf +++ b/terraform/production/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/sandbox/providers.tf b/terraform/sandbox/providers.tf index fa23dfe2f..6593c29e9 100644 --- a/terraform/sandbox/providers.tf +++ b/terraform/sandbox/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/shared/egress_space/providers.tf b/terraform/shared/egress_space/providers.tf index 2dd2a8e2e..d94227e82 100644 --- a/terraform/shared/egress_space/providers.tf +++ b/terraform/shared/egress_space/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/shared/ses/providers.tf b/terraform/shared/ses/providers.tf index 2dd2a8e2e..d94227e82 100644 --- a/terraform/shared/ses/providers.tf +++ b/terraform/shared/ses/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/shared/sns/providers.tf b/terraform/shared/sns/providers.tf index 2dd2a8e2e..d94227e82 100644 --- a/terraform/shared/sns/providers.tf +++ b/terraform/shared/sns/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" diff --git a/terraform/staging/providers.tf b/terraform/staging/providers.tf index f8ad62283..3bb40cdda 100644 --- a/terraform/staging/providers.tf +++ b/terraform/staging/providers.tf @@ -1,5 +1,5 @@ terraform { - required_version = "~> 1.8" + required_version = "~> 1.7" required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" From 6a20f2c4262576bbe9217f3a7efb2d1c6ff9f8e5 Mon Sep 17 00:00:00 2001 From: John Skiles Skinner Date: Wed, 17 Apr 2024 11:47:39 -0700 Subject: [PATCH 7/7] Upgrade terraform-cloudgov module from 0.7.1 to 0.9.1 in 2 modules --- terraform/bootstrap/main.tf | 2 +- terraform/sandbox/main.tf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/terraform/bootstrap/main.tf b/terraform/bootstrap/main.tf index 2394f4ab8..14ab9a81d 100644 --- a/terraform/bootstrap/main.tf +++ b/terraform/bootstrap/main.tf @@ -3,7 +3,7 @@ locals { } module "s3" { - source = "github.com/18f/terraform-cloudgov//s3?ref=v0.7.1" + source = "github.com/18f/terraform-cloudgov//s3?ref=v0.9.1" cf_org_name = "gsa-tts-benefits-studio" cf_space_name = "notify-management" diff --git a/terraform/sandbox/main.tf b/terraform/sandbox/main.tf index fae30073c..f194efdd4 100644 --- a/terraform/sandbox/main.tf +++ b/terraform/sandbox/main.tf @@ -17,7 +17,7 @@ module "database" { } module "redis" { - source = "github.com/18f/terraform-cloudgov//redis?ref=v0.7.1" + source = "github.com/18f/terraform-cloudgov//redis?ref=v0.9.1" cf_org_name = local.cf_org_name cf_space_name = local.cf_space_name @@ -27,7 +27,7 @@ module "redis" { } module "csv_upload_bucket" { - source = "github.com/18f/terraform-cloudgov//s3?ref=v0.7.1" + source = "github.com/18f/terraform-cloudgov//s3?ref=v0.9.1" cf_org_name = local.cf_org_name cf_space_name = local.cf_space_name