Note_Tech

All technological notes.


Project maintained by simonangel-fong Hosted on GitHub Pages — Theme by mattgraham

Terraform - Backend

Back


Backend


Defautl Backend

terraform {
  backend "local" {}
}

Remote Backend

terraform {
  backend "s3" {
    bucket = ""
    key = ""
    region = ""
  }
}

Partial configuration for Backend: terraform init -backend-config

# key/value pairs
terraform init -backend-config="bucket=mybucket" \
  -backend-config="key=mykey"
  -backend-config="region=myregion"

# for dev
terraform init -backend-config=dev.config
# for test
terraform init -backend-config=test.config
# for prod
terraform init -backend-config=prod.config

Lab: S3 as backend

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }

  # Configuring a remote backend
  backend "s3" {
    bucket = ""
    region = ""
    key    = ""
    dynamodb_table  = ""    # backend lock in dynamodb
  }
}

Specify variables using a config file

# state.config
bucket = "your-bucket"
key    = "your-state.tfstate"
region = "eu-central-1"
profile= "Your_Profile"
`terraform init -backend-config="./state.config"`

Specify variables using Cli

# cli
terraform init \
    -backend-config="address=demo.consul.io" \
    -backend-config="path=example_app/terraform_state" \
    -backend-config="scheme=https"

Refer to the existing remote backend

data "terraform_remote_state" "network" {
  backend = "s3"
  config = {
    bucket = "terraform-state-prod"
    key    = "network/terraform.tfstate"
    region = "us-east-1"
  }
}