Working with Terraform Cloud remote backend

๐Ÿšง

Disclaimer

As a default when using env0 we don't recommend to store your state in Terraform Cloud, and if using env0 we would recommend using a different remote backend.
There are a few limitations to using this setup and it's hard to maintain.
We recommend using this setup only for evaluating the env0 platform and if you are currently managing your state with Terraform Cloud.

If you are currently working with Terraform Cloud remote backend and would like to use env0 with this setup you will need to do the following:

  1. Local execution mode - First you need to change the workspace settings in Terraform Cloud to enable local runs, so you need to go to the General Settings of the workspace and change the Execution Mode to Local.
  2. Generating a token for authentication - In order to authenticate to Terraform Cloud remote backend you need to generate an API token, so under the User settings under Tokens and create an API token. Please save the token, we will need it in the further steps.
  3. If you are running terraform version 1.2.0 or up you will need to add the following environment variables:
Variable NameValue
TF_TOKEN_app_terraform_io The API token you've created in Terraform Cloud
ENV0_SKIP_WORKSPACEtrue
  1. If not you will need to add an env0.yml file - In your Terraform git repo you will need to add an env0.yml file in the Terraform folder and add the following code:
version: 1
deploy:
  steps:
    setupVariables:
      after:
        - printf "credentials \"app.terraform.io\" {\n token = \"${TF_CLOUD_TOKEN}\"\n}" > ~/.terraformrc
destroy:
  steps:
    setupVariables:
      after:
        - printf "credentials \"app.terraform.io\" {\n token = \"${TF_CLOUD_TOKEN}\"\n}" > ~/.terraformrc

In addition, you will need to add template variables - you'll need to add 2 variables in your env0 template:

Variable NameValue
TF_CLOUD_TOKENThe API token you've created in Terraform Cloud
ENV0_SKIP_WORKSPACEtrue
  1. Now you are ready to run your Template and the remote backend should be stored in Terraform Cloud.

:pencil2: Suggested Blog Content

Terraform Modules Guide

Terraform Plan Examples

Managing Terraform Variable Hierarchy

Manage Terraform Remote State with a Remote Backend