rails_template_18f 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d21603b715f565d239901a62f7350b2b607f8ad264b2e23910d5c1203419038
4
- data.tar.gz: 20b9516691e7819b443d06fb05e141992cf4f8e179363b43ad11d87918319929
3
+ metadata.gz: 71f972115a1f66ddfefa4341186434fe24a4e78b201ad192786a4c5d34bebb8c
4
+ data.tar.gz: dcbf65cd0f011f12aa918975b426e23002d07c54c14d4251d5e8102bc59e74a3
5
5
  SHA512:
6
- metadata.gz: 6f1350e3598ae74b8dcb039ec6c85b7dd124e2b42e3563c5edb5e72a3c061c33cce3bfe43274d7c3fa07bb8f9cd0462df7fa40926ffc90fe913c043edeb86c28
7
- data.tar.gz: d9bf899901b7cf2451d77dbd0eb50ddd016acc874d5144cee525d2b14df9bcb93887094e4ca1fa5a4b95a38ecb75ea622ffbfd9541e05edf292197016f909f3b
6
+ metadata.gz: '09de09463925281bdb7731686bebfe8eb4441a208e488597abfc910510dead294a0380629ed43af55956fb798fa2aeffeaddc25c0b6e2dd6e584db6791b211b0'
7
+ data.tar.gz: d12d2667e1aa2bf8e49097ccc9b3f76656a5a71b5ca829b1e02361d33df62af298c27dfe6de8da268f6ead509a54725c1df5852813196bd113f1daedf9f70de4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.8.2] - 2024-06-06
4
+
5
+ - Replace deprecated github action for cloud.gov deploys with cg-supported one
6
+ - Update terraform modules use for the actual module api - and specify the module version in use
7
+
3
8
  ## [0.8.1] - 2024-06-04
4
9
 
5
10
  - fix error when compliance-template fork question is left blank
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails_template_18f (0.8.1)
4
+ rails_template_18f (0.8.2)
5
5
  activesupport (~> 7.0.0)
6
6
  colorize (~> 0.8)
7
7
  railties (~> 7.0.0)
@@ -47,7 +47,7 @@ commands:
47
47
  - run:
48
48
  name: Install Cloud Foundry CLI
49
49
  command: |
50
- curl -v -L -o cf-cli_amd64.deb 'https://packages.cloudfoundry.org/stable?release=debian64&version=v7&source=github'
50
+ curl -v -L -o cf-cli_amd64.deb 'https://packages.cloudfoundry.org/stable?release=debian64&version=v8&source=github'
51
51
  sudo dpkg -i cf-cli_amd64.deb
52
52
  - run:
53
53
  name: Login with service account
@@ -62,8 +62,8 @@ EOB
62
62
  def update_terraform_readme
63
63
  return unless terraform?
64
64
  readme_filename = "terraform/README.md"
65
- insert_into_file readme_filename, " |- .force-action-apply\n", after: " |- secrets.auto.tfvars\n"
66
- insert_into_file readme_filename, <<~EOM, after: /- `secrets.auto.tfvars`.*$/
65
+ insert_into_file readme_filename, " |- .force-action-apply\n", after: "- <env>/\n"
66
+ insert_into_file readme_filename, <<~EOM, after: /.*environment-specific modules:$/
67
67
  \n- `.force-action-apply` is a file that can be updated to force GitHub Actions to run `terraform apply` during the deploy phase
68
68
  EOM
69
69
  end
@@ -42,7 +42,7 @@ jobs:
42
42
  run: terraform apply -auto-approve -input=false
43
43
  <% end %>
44
44
  - name: Deploy app
45
- uses: 18F/cg-deploy-action@main
45
+ uses: cloud-gov/cg-cli-tools@main
46
46
  env:
47
47
  RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
48
48
  with:
@@ -50,6 +50,4 @@ jobs:
50
50
  cf_password: ${{ secrets.CF_PASSWORD }}
51
51
  cf_org: <%= cloud_gov_organization %>
52
52
  cf_space: <%= cloud_gov_production_space %>
53
- push_arguments: >-
54
- --vars-file config/deployment/production.yml
55
- --var rails_master_key=$RAILS_MASTER_KEY
53
+ cf_command: push -vars-file config/deployment/production.yml --var rails_master_key=${{ env.RAILS_MASTER_KEY }} --strategy rolling
@@ -42,7 +42,7 @@ jobs:
42
42
  run: terraform apply -auto-approve -input=false
43
43
  <% end %>
44
44
  - name: Deploy app
45
- uses: 18F/cg-deploy-action@main
45
+ uses: cloud-gov/cg-cli-tools@main
46
46
  env:
47
47
  RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
48
48
  with:
@@ -50,6 +50,4 @@ jobs:
50
50
  cf_password: ${{ secrets.CF_PASSWORD }}
51
51
  cf_org: <%= cloud_gov_organization %>
52
52
  cf_space: <%= cloud_gov_staging_space %>
53
- push_arguments: >-
54
- --vars-file config/deployment/staging.yml
55
- --var rails_master_key=$RAILS_MASTER_KEY
53
+ cf_command: push -vars-file config/deployment/staging.yml --var rails_master_key=${{ env.RAILS_MASTER_KEY }} --strategy rolling
@@ -4,26 +4,39 @@ This directory holds the terraform modules for maintaining your complete persist
4
4
 
5
5
  Prerequisite: install the `jq` JSON processor: `brew bundle` or `brew install jq`
6
6
 
7
- ## Initial setup
7
+ ## Initial project setup
8
8
 
9
- 1. Manually run the bootstrap module following instructions under `Terraform State Credentials`
9
+ These steps only need to be run once per project.
10
+
11
+ 1. Manually [bootstrap the state storage bucket](#bootstrapping-the-state-storage-s3-buckets-for-the-first-time) within the `bootstrap` directory
10
12
  1. Setup CI/CD Pipeline to run Terraform
11
- 1. Copy bootstrap credentials to your CI/CD secrets using the instructions in the base README
12
- 1. Create a cloud.gov SpaceDeployer by following the instructions under `SpaceDeployers`
13
- 1. Copy SpaceDeployer credentials to your CI/CD secrets using the instructions in the base README
13
+ 1. Copy bootstrap credentials to your CI/CD secrets using the instructions in the base README
14
+ 1. Create a cloud.gov SpaceDeployer by following the instructions under `SpaceDeployers`
15
+ 1. Copy SpaceDeployer credentials to your CI/CD secrets using the instructions in the base README
14
16
  1. Manually Running Terraform
15
- 1. Follow instructions under `Set up a new environment` to create your infrastructure
17
+ 1. Follow instructions under `Set up a new environment` to create your infrastructure
18
+
19
+ ## Initial developer setup
20
+
21
+ These steps should be run for any developer that needs to start running terraform or who just moved to a new machine.
22
+
23
+ They are not necessary for the developer who runs the [initial project setup](#initial-project-setup)
24
+
25
+ 1. Import the existing bootstrap resources to your local state with `./import.sh`
26
+ 1. Follow instructions under [Use bootstrap credentials](#use-bootstrap-credentials)
27
+
16
28
 
17
29
  ## Terraform State Credentials
18
30
 
19
- The bootstrap module is used to create an s3 bucket for later terraform runs to store their state in.
31
+ The `bootstrap` module is used to create an s3 bucket for later terraform runs to store their state in.
20
32
 
21
33
  ### Bootstrapping the state storage s3 buckets for the first time
22
34
 
23
- 1. Run `terraform init`
24
- 1. Run `./run.sh plan` to verify that the changes are what you expect
35
+ These steps are run once per project.
36
+
37
+ 1. Run `./run.sh init`
25
38
  1. Run `./run.sh apply` to set up the bucket and retrieve credentials
26
- 1. Follow instructions under `Use bootstrap credentials`
39
+ 1. Follow instructions under [Use bootstrap credentials](#use-bootstrap-credentials)
27
40
  1. Ensure that `import.sh` includes a line and correct IDs for any resources created
28
41
  1. Run `./teardown_creds.sh` to remove the space deployer account used to create the s3 bucket
29
42
 
@@ -31,28 +44,20 @@ The bootstrap module is used to create an s3 bucket for later terraform runs to
31
44
 
32
45
  *This should not be necessary in most cases*
33
46
 
34
- 1. Run `terraform init`
35
- 1. If you don't have terraform state locally:
36
- 1. run `./import.sh`
37
- 1. optionally run `./run.sh apply` to include the existing outputs in the state file
38
47
  1. Make your changes
39
- 1. Continue from step 2 of the boostrapping instructions
40
-
41
- ### Retrieving existing bucket credentials
48
+ 1. Run `./run.sh plan` to verify the changes are what you expect
49
+ 1. Continue from step 2 of the [boostrapping instructions](#bootstrapping-the-state-storage-s3-buckets-for-the-first-time)
42
50
 
43
- 1. Run `./run.sh show`
44
- 1. Follow instructions under `Use bootstrap credentials`
45
-
46
- #### Use bootstrap credentials
51
+ ### Use bootstrap credentials
47
52
 
48
53
  1. Add the following to `~/.aws/credentials`
49
54
  ```
50
55
  [<%= app_name %>-terraform-backend]
51
- aws_access_key_id = <access_key_id from bucket_credentials>
52
- aws_secret_access_key = <secret_access_key from bucket_credentials>
56
+ aws_access_key_id = <AWS_ACCESS_KEY_ID from run.sh output>
57
+ aws_secret_access_key = <AWS_SECRET_ACCESS_KEY from run.sh output>
53
58
  ```
54
59
 
55
- 1. Copy `bucket` from `bucket_credentials` output to the backend block of `staging/providers.tf` and `production/providers.tf`
60
+ 1. Copy `BUCKET` from `run.sh` output to the backend block of `staging/providers.tf` and `production/providers.tf`
56
61
 
57
62
  ## SpaceDeployers
58
63
 
@@ -63,11 +68,11 @@ deploy the application from the CI/CD pipeline. Create a new account by running:
63
68
 
64
69
  ## Set up a new environment manually
65
70
 
66
- The below steps rely on you first configuring access to the Terraform state in s3 as described in [Terraform State Credentials](#terraform-state-credentials).
71
+ The below steps rely on you first configuring access to the Terraform state in s3 as described in [initial project setup](#initial-project-setup) or [initial developer setup](#initial-developer-setup).
67
72
 
68
73
  1. `cd` to the environment you are working in
69
74
 
70
- 1. Set up a SpaceDeployer
75
+ 1. Set up a SpaceDeployer and save the credentials in a file named `secrets.auto.tfvars`
71
76
  ```bash
72
77
  # create a space deployer service instance that can log in with just a username and password
73
78
  # the value of < SPACE_NAME > should be `staging` or `prod` depending on where you are working
@@ -80,7 +85,7 @@ The below steps rely on you first configuring access to the Terraform state in s
80
85
 
81
86
  The script will output the `username` (as `cf_user`) and `password` (as `cf_password`) for your `<ACCOUNT_NAME>`. Read more in the [cloud.gov service account documentation](https://cloud.gov/docs/services/cloud-gov-service-account/).
82
87
 
83
- The easiest way to use this script is to redirect the output directly to the `secrets.auto.tfvars` file it needs to be used in
88
+ The easiest way to use this script locally is to redirect the output directly to the `secrets.auto.tfvars` file it needs to be used in
84
89
 
85
90
  1. Run terraform from your new environment directory with
86
91
  ```bash
@@ -90,7 +95,7 @@ The below steps rely on you first configuring access to the Terraform state in s
90
95
 
91
96
  1. Apply changes with `terraform apply`.
92
97
 
93
- 1. Remove the space deployer service instance if it doesn't need to be used again, such as when manually running terraform once.
98
+ 1. Remove the space deployer service instance if it doesn't need to be used again, such as when manually running terraform plan before letting CI/CD apply the changes.
94
99
  ```bash
95
100
  # <SPACE_NAME> and <ACCOUNT_NAME> have the same values as used above.
96
101
  ../../bin/ops/destroy_service_account.sh -s <SPACE_NAME> -u <ACCOUNT_NAME>
@@ -98,7 +103,7 @@ The below steps rely on you first configuring access to the Terraform state in s
98
103
 
99
104
  ## Structure
100
105
 
101
- Each environment has its own module, which relies on a shared module for everything except the providers code and environment specific variables and settings.
106
+ Each environment has its own module.
102
107
 
103
108
  ```
104
109
  - bootstrap/
@@ -111,38 +116,18 @@ Each environment has its own module, which relies on a shared module for everyth
111
116
  - <env>/
112
117
  |- main.tf
113
118
  |- providers.tf
114
- |- secrets.auto.tfvars
115
119
  |- variables.tf
116
- - shared/
117
- |- s3/
118
- |- main.tf
119
- |- providers.tf
120
- |- variables.tf
121
- |- database/
122
- |- main.tf
123
- |- providers.tf
124
- |- variables.tf
125
- |- domain/
126
- |- main.tf
127
- |- providers.tf
128
- |- variables.tf
129
120
  ```
130
121
 
131
- In the shared modules:
132
- - `providers.tf` contains set up instructions for Terraform about Cloud Foundry and AWS
133
- - `main.tf` sets up the data and resources the application relies on
134
- - `variables.tf` lists the required variables and applicable default values
135
-
136
122
  In the environment-specific modules:
137
123
  - `providers.tf` lists the required providers
138
124
  - `main.tf` calls the shared Terraform code, but this is also a place where you can add any other services, resources, etc, which you would like to set up for that environment
139
125
  - `variables.tf` lists the variables that will be needed, either to pass through to the child module or for use in this module
140
- - `secrets.auto.tfvars` is a file which contains the information about the service-key and other secrets that should not be shared
141
126
 
142
127
  In the bootstrap module:
143
128
  - `providers.tf` lists the required providers
144
129
  - `main.tf` sets up s3 bucket to be shared across all environments. It lives in `prod` to communicate that it should not be deleted
145
130
  - `variables.tf` lists the variables that will be needed. Most values are hard-coded in this module
146
- - `run.sh` Helper script to set up a space deployer and run terraform. The terraform action (`show`/`plan`/`apply`/`destroy`) is passed as an argument
131
+ - `run.sh` Helper script to set up a space deployer and run terraform. The terraform action (`init`/`show`/`plan`/`apply`/`destroy`) is passed as an argument
147
132
  - `teardown_creds.sh` Helper script to remove the space deployer setup as part of `run.sh`
148
- - `import.sh` Helper script to create a new local state file in case terraform changes are needed
133
+ - `import.sh` Helper script to create a new local state file when new developers need to access the state file
@@ -4,6 +4,7 @@ read -p "Are you sure you want to import terraform state (y/n)? " verify
4
4
 
5
5
  if [[ $verify == "y" ]]; then
6
6
  echo "Importing bootstrap state"
7
+ ./run.sh init
7
8
  ./run.sh import module.s3.cloudfoundry_service_instance.bucket TKTK
8
9
  ./run.sh import cloudfoundry_service_key.bucket_creds TKTK
9
10
  ./run.sh plan
@@ -1,18 +1,14 @@
1
1
  locals {
2
- cf_api_url = "https://api.fr.cloud.gov"
3
2
  s3_service_name = "<%= app_name %>-terraform-state"
4
3
  }
5
4
 
6
5
  module "s3" {
7
- source = "github.com/18f/terraform-cloudgov//s3"
6
+ source = "github.com/gsa-tts/terraform-cloudgov//s3?ref=v1.0.0"
8
7
 
9
- cf_api_url = local.cf_api_url
10
- cf_user = var.cf_user
11
- cf_password = var.cf_password
12
- cf_org_name = "<%= cloud_gov_organization %>"
13
- cf_space_name = "<%= cloud_gov_production_space %>"
14
- s3_service_name = local.s3_service_name<% if cloud_gov_organization == "sandbox-gsa" %>
15
- s3_plan_name = "basic-sandbox"<% end %>
8
+ cf_org_name = "<%= cloud_gov_organization %>"
9
+ cf_space_name = "<%= cloud_gov_production_space %>"
10
+ name = local.s3_service_name<% if cloud_gov_organization == "sandbox-gsa" %>
11
+ s3_plan_name = "basic-sandbox"<% end %>
16
12
  }
17
13
 
18
14
  resource "cloudfoundry_service_key" "bucket_creds" {
@@ -21,5 +17,6 @@ resource "cloudfoundry_service_key" "bucket_creds" {
21
17
  }
22
18
 
23
19
  output "bucket_credentials" {
24
- value = cloudfoundry_service_key.bucket_creds.credentials
20
+ value = cloudfoundry_service_key.bucket_creds.credentials
21
+ sensitive = true
25
22
  }
@@ -3,14 +3,14 @@ terraform {
3
3
  required_providers {
4
4
  cloudfoundry = {
5
5
  source = "cloudfoundry-community/cloudfoundry"
6
- version = "0.15.0"
6
+ version = "0.53.1"
7
7
  }
8
8
  }
9
9
  }
10
10
 
11
11
  provider "cloudfoundry" {
12
- api_url = local.cf_api_url
12
+ api_url = "https://api.fr.cloud.gov"
13
13
  user = var.cf_user
14
14
  password = var.cf_password
15
15
  app_logs_max = 30
16
- }
16
+ }
@@ -1,5 +1,20 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ if ! command -v jq &> /dev/null
4
+ then
5
+ echo "jq must be installed. Run 'brew bundle' to install everything in the Brewfile"
6
+ exit 1
7
+ fi
8
+ if ! command -v terraform &> /dev/null
9
+ then
10
+ echo "terraform must be installed before running this script"
11
+ exit 1
12
+ fi
13
+
14
+ dig_output () {
15
+ dig_result=`cat terraform.tfstate | jq -r ".outputs.bucket_credentials.value.$1"`
16
+ }
17
+
3
18
  if [[ ! -f "secrets.auto.tfvars" ]]; then
4
19
  ../../bin/ops/create_service_account.sh -s <%= cloud_gov_production_space %> -u config-bootstrap-deployer > secrets.auto.tfvars
5
20
  fi
@@ -7,6 +22,18 @@ fi
7
22
  if [[ $# -gt 0 ]]; then
8
23
  echo "Running terraform $@"
9
24
  terraform $@
25
+ if [[ -f terraform.tfstate ]]; then
26
+ echo
27
+ echo "Credentials for terraform state bucket:"
28
+ dig_output "bucket"
29
+ echo "BUCKET=$dig_result"
30
+ dig_output "access_key_id"
31
+ echo "AWS_ACCESS_KEY_ID=$dig_result"
32
+ dig_output "secret_access_key"
33
+ echo "AWS_SECRET_ACCESS_KEY=$dig_result"
34
+ dig_output "region"
35
+ echo "AWS_REGION=$dig_result"
36
+ fi
10
37
  else
11
38
  echo "Not running terraform"
12
39
  fi
@@ -3,46 +3,34 @@ locals {
3
3
  cf_space_name = "<%= cloud_gov_production_space %>"
4
4
  env = "production"
5
5
  app_name = "<%= app_name %>"
6
- recursive_delete = false
7
6
  }
8
7
 
9
8
  module "database" {
10
- source = "github.com/18f/terraform-cloudgov//database"
9
+ source = "github.com/gsa-tts/terraform-cloudgov//database?ref=v1.0.0"
11
10
 
12
- cf_user = var.cf_user
13
- cf_password = var.cf_password
14
- cf_org_name = local.cf_org_name
15
- cf_space_name = local.cf_space_name
16
- env = local.env
17
- app_name = local.app_name
18
- recursive_delete = local.recursive_delete
19
- rds_plan_name = "TKTK-production-rds-plan"
11
+ cf_org_name = local.cf_org_name
12
+ cf_space_name = local.cf_space_name
13
+ name = "${local.app_name}-rds-${local.env}"
14
+ rds_plan_name = "TKTK-production-rds-plan"
20
15
  }
21
16
  <% if has_active_job? %>
22
17
  module "redis" {
23
- source = "github.com/18f/terraform-cloudgov//redis"
18
+ source = "github.com/gsa-tts/terraform-cloudgov//redis?ref=v1.0.0"
24
19
 
25
- cf_user = var.cf_user
26
- cf_password = var.cf_password
27
- cf_org_name = local.cf_org_name
28
- cf_space_name = local.cf_space_name
29
- env = local.env
30
- app_name = local.app_name
31
- recursive_delete = local.recursive_delete
32
- redis_plan_name = "TKTK-production-redis-plan"
20
+ cf_org_name = local.cf_org_name
21
+ cf_space_name = local.cf_space_name
22
+ name = "${local.app_name}-redis-${local.env}"
23
+ redis_plan_name = "TKTK-production-redis-plan"
33
24
  }
34
25
  <% end %>
35
26
  <% if has_active_storage? %>
36
27
  module "s3" {
37
- source = "github.com/18f/terraform-cloudgov//s3"
28
+ source = "github.com/gsa-tts/terraform-cloudgov//s3?ref=v1.0.0"
38
29
 
39
- cf_user = var.cf_user
40
- cf_password = var.cf_password
41
- cf_org_name = local.cf_org_name
42
- cf_space_name = local.cf_space_name
43
- recursive_delete = local.recursive_delete
44
- s3_service_name = "${local.app_name}-s3-${local.env}"<% if cloud_gov_organization == "sandbox-gsa" %>
45
- s3_plan_name = "basic-sandbox"<% end %>
30
+ cf_org_name = local.cf_org_name
31
+ cf_space_name = local.cf_space_name
32
+ name = "${local.app_name}-s3-${local.env}"<% if cloud_gov_organization == "sandbox-gsa" %>
33
+ s3_plan_name = "basic-sandbox"<% end %>
46
34
  }
47
35
 
48
36
  ###########################################################################
@@ -52,16 +40,14 @@ module "s3" {
52
40
  # 2) Your organization has sufficient memory. Each clamav app requires 3GB
53
41
  ###########################################################################
54
42
  # module "clamav" {
55
- # source = "github.com/18f/terraform-cloudgov//clamav"
43
+ # source = "github.com/gsa-tts/terraform-cloudgov//clamav?ref=v1.0.0"
56
44
  #
57
- # cf_user = var.cf_user
58
- # cf_password = var.cf_password
59
- # cf_org_name = local.cf_org_name
60
- # cf_space_name = local.cf_space_name
61
- # env = local.env
62
- # app_name = local.app_name
63
- # clamav_image = "ajilaag/clamav-rest:20211229"
64
- # max_file_size = "30M"
45
+ # cf_org_name = local.cf_org_name
46
+ # cf_space_name = local.cf_space_name
47
+ # app_name_or_id = "${local.app_name}-${local.env}"
48
+ # name = "${local.app_name}-clamapi-${local.env}"
49
+ # clamav_image = "ghcr.io/gsa-tts/clamav-rest/clamav:20240602"
50
+ # max_file_size = "30M"
65
51
  # }
66
52
  <% end %>
67
53
 
@@ -73,15 +59,12 @@ module "s3" {
73
59
  # `cf create-domain <%= cloud_gov_organization %> TKTK-production-domain-name`
74
60
  ###########################################################################
75
61
  # module "domain" {
76
- # source = "github.com/18f/terraform-cloudgov//domain"
62
+ # source = "github.com/gsa-tts/terraform-cloudgov//domain?ref=v1.0.0"
77
63
  #
78
- # cf_user = var.cf_user
79
- # cf_password = var.cf_password
80
- # cf_org_name = local.cf_org_name
81
- # cf_space_name = local.cf_space_name
82
- # env = local.env
83
- # app_name = local.app_name
84
- # recursive_delete = local.recursive_delete
85
- # cdn_plan_name = "domain"
86
- # domain_name = "TKTK-production-domain-name"
64
+ # cf_org_name = local.cf_org_name
65
+ # cf_space_name = local.cf_space_name
66
+ # app_name_or_id = "${local.app_name}-${local.env}"
67
+ # cdn_plan_name = "domain"
68
+ # domain_name = "TKTK-production-domain-name"
69
+ # host_name = "TKTK-production-hostname (optional)"
87
70
  # }
@@ -3,7 +3,7 @@ terraform {
3
3
  required_providers {
4
4
  cloudfoundry = {
5
5
  source = "cloudfoundry-community/cloudfoundry"
6
- version = "0.15.0"
6
+ version = "0.53.1"
7
7
  }
8
8
  }
9
9
 
@@ -15,3 +15,10 @@ terraform {
15
15
  profile = "<%= app_name %>-terraform-backend"
16
16
  }
17
17
  }
18
+
19
+ provider "cloudfoundry" {
20
+ api_url = "https://api.fr.cloud.gov"
21
+ user = var.cf_user
22
+ password = var.cf_password
23
+ app_logs_max = 30
24
+ }
@@ -3,46 +3,34 @@ locals {
3
3
  cf_space_name = "<%= cloud_gov_staging_space %>"
4
4
  env = "staging"
5
5
  app_name = "<%= app_name %>"
6
- recursive_delete = true
7
6
  }
8
7
 
9
8
  module "database" {
10
- source = "github.com/18f/terraform-cloudgov//database"
9
+ source = "github.com/gsa-tts/terraform-cloudgov//database?ref=v1.0.0"
11
10
 
12
- cf_user = var.cf_user
13
- cf_password = var.cf_password
14
- cf_org_name = local.cf_org_name
15
- cf_space_name = local.cf_space_name
16
- env = local.env
17
- app_name = local.app_name
18
- recursive_delete = local.recursive_delete
19
- rds_plan_name = "micro-psql"
11
+ cf_org_name = local.cf_org_name
12
+ cf_space_name = local.cf_space_name
13
+ name = "${local.app_name}-rds-${local.env}"
14
+ rds_plan_name = "micro-psql"
20
15
  }
21
16
  <% if has_active_job? %>
22
17
  module "redis" {
23
- source = "github.com/18f/terraform-cloudgov//redis"
18
+ source = "github.com/gsa-tts/terraform-cloudgov//redis?ref=v1.0.0"
24
19
 
25
- cf_user = var.cf_user
26
- cf_password = var.cf_password
27
- cf_org_name = local.cf_org_name
28
- cf_space_name = local.cf_space_name
29
- env = local.env
30
- app_name = local.app_name
31
- recursive_delete = local.recursive_delete
32
- redis_plan_name = "redis-dev"
20
+ cf_org_name = local.cf_org_name
21
+ cf_space_name = local.cf_space_name
22
+ name = "${local.app_name}-redis-${local.env}"
23
+ redis_plan_name = "redis-dev"
33
24
  }
34
25
  <% end %>
35
26
  <% if has_active_storage? %>
36
27
  module "s3" {
37
- source = "github.com/18f/terraform-cloudgov//s3"
28
+ source = "github.com/gsa-tts/terraform-cloudgov//s3?ref=v1.0.0"
38
29
 
39
- cf_user = var.cf_user
40
- cf_password = var.cf_password
41
- cf_org_name = local.cf_org_name
42
- cf_space_name = local.cf_space_name
43
- recursive_delete = local.recursive_delete
44
- s3_service_name = "${local.app_name}-s3-${local.env}"<% if cloud_gov_organization == "sandbox-gsa" %>
45
- s3_plan_name = "basic-sandbox"<% end %>
30
+ cf_org_name = local.cf_org_name
31
+ cf_space_name = local.cf_space_name
32
+ name = "${local.app_name}-s3-${local.env}"<% if cloud_gov_organization == "sandbox-gsa" %>
33
+ s3_plan_name = "basic-sandbox"<% end %>
46
34
  }
47
35
 
48
36
  ###########################################################################
@@ -52,15 +40,13 @@ module "s3" {
52
40
  # 2) Your organization has sufficient memory. Each clamav app requires 3GB
53
41
  ###########################################################################
54
42
  # module "clamav" {
55
- # source = "github.com/18f/terraform-cloudgov//clamav"
43
+ # source = "github.com/gsa-tts/terraform-cloudgov//clamav?ref=v1.0.0"
56
44
  #
57
- # cf_user = var.cf_user
58
- # cf_password = var.cf_password
59
- # cf_org_name = local.cf_org_name
60
- # cf_space_name = local.cf_space_name
61
- # env = local.env
62
- # app_name = local.app_name
63
- # clamav_image = "ajilaag/clamav-rest:20211229"
64
- # max_file_size = "30M"
45
+ # cf_org_name = local.cf_org_name
46
+ # cf_space_name = local.cf_space_name
47
+ # app_name_or_id = "${local.app_name}-${local.env}"
48
+ # name = "${local.app_name}-clamapi-${local.env}"
49
+ # clamav_image = "ghcr.io/gsa-tts/clamav-rest/clamav:20240602"
50
+ # max_file_size = "30M"
65
51
  # }
66
52
  <% end %>
@@ -3,7 +3,7 @@ terraform {
3
3
  required_providers {
4
4
  cloudfoundry = {
5
5
  source = "cloudfoundry-community/cloudfoundry"
6
- version = "0.15.0"
6
+ version = "0.53.1"
7
7
  }
8
8
  }
9
9
 
@@ -15,3 +15,10 @@ terraform {
15
15
  profile = "<%= app_name %>-terraform-backend"
16
16
  }
17
17
  }
18
+
19
+ provider "cloudfoundry" {
20
+ api_url = "https://api.fr.cloud.gov"
21
+ user = var.cf_user
22
+ password = var.cf_password
23
+ app_logs_max = 30
24
+ }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsTemplate18f
4
- VERSION = "0.8.1"
4
+ VERSION = "0.8.2"
5
5
  end
@@ -45,6 +45,12 @@ while getopts ":hs:u:r:o:" opt; do
45
45
  esac
46
46
  done
47
47
 
48
+ if ! command -v jq &> /dev/null
49
+ then
50
+ echo "jq must be installed. Run 'brew bundle' to install everything in the Brewfile"
51
+ exit 1
52
+ fi
53
+
48
54
  if [[ $space = "" || $service = "" ]]; then
49
55
  echo "$usage"
50
56
  exit 1
@@ -59,14 +65,14 @@ cf create-service cloud-gov-service-account $role $service 1>&2
59
65
  cf create-service-key $service service-account-key 1>&2
60
66
 
61
67
  # output service key to stdout in secrets.auto.tfvars format
62
- creds=`cf service-key $service service-account-key | tail -n 4`
63
- username=`echo $creds | jq '.username'`
64
- password=`echo $creds | jq '.password'`
68
+ creds=`cf service-key $service service-account-key | tail -n +2 | jq '.credentials'`
69
+ username=`echo $creds | jq -r '.username'`
70
+ password=`echo $creds | jq -r '.password'`
65
71
 
66
72
  cat << EOF
67
73
  # generated with $0 -s $space -u $service -r $role -o $org
68
74
  # revoke with $(dirname $0)/destroy_service_account.sh -s $space -u $service -o $org
69
75
 
70
- cf_user = $username
71
- cf_password = $password
76
+ cf_user = "$username"
77
+ cf_password = "$password"
72
78
  EOF
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_template_18f
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Ahearn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-04 00:00:00.000000000 Z
11
+ date: 2024-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties