The Google Cloud Platform (GCP) and Cloudflare infrastructure resources required by the app and that can be bootstrapped via Terraform.
- Node.js v16+ with Yarn package manager
- Google Cloud SDK and Terraform CLI
- Access to Google Cloud Projects and Terraform Cloud workspaces
How to install Terraform CLI on macOS?
$ brew tap hashicorp/tap
$ brew install hashicorp/tap/terraform
$ brew update
$ brew upgrade hashicorp/tap/terraform
$ yarn tf -version
How to create Google Cloud Platform projects?
Simply navigate to Google Cloud Resource Manager
and create two GCP projects for both test
(QA) and prod
(production)
environments, e.g. "example" and "example-test".
Fore more information visit https://cloud.google.com/resource-manager/docs/creating-managing-projects
How to configure Terraform Cloud workspaces?
- Sign in to Terraform Cloud dashboard.
- Create or join an organization.
- Create two workspaces —
app-test
andapp-prod
for test/QA and production environments. - In each of these workspaces create an environment variable called
GOOGLE_CREDENTIALS
with the value containing JSON key of a GCP service account. Note, this GCP service account needs to haveOwner
orEditor
+Service Usage Admin
roles.
For more information visit https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference
How to authenticate Terraform CLI in Terraform Cloud?
- Create a personal or team API Token via Terraform Cloud dashboard → Settings.
- Save API token to the
.terraformrc
file in root of the project:
credentials "app.terraform.io" {
token = "xxxxxx.atlasv1.zzzzzzzzzzzzz"
}
NOTE: This would allow to using different Terraform credentials per software project if you want to.
yarn tf init -upgrade
— Initializes a Terraform workspaceyarn tf plan
— creates an execution planyarn tf apply
— executes the actions proposed by theyarn tf plan
command
NOTE: By default the app-test
Terraform workspace is used. In order to use
the production workspace, set TF_WORKSPACE
environment variable to prod
. For
example:
$ TF_WORKSPACE=prod tf plan
$ TF_WORKSPACE=prod tf apply
NOTE: You need to run Terraform commands via yarn tf <command> [...args]
.
Fore more information visit https://learn.hashicorp.com/terraform