Skip to content

Latest commit

 

History

History

bootstrap

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Bootstrap Terraform backend

Terraform Backends defines where Terraform's state snapshots are stored. Amazon S3 Backend stores the Terraform state as a given key in a given bucket on Amazon S3. This backend also supports state locking and consistency checking via Dynamo DB.

This is an example Terraform bootstrap script.

Prerequisites

  • Modify terraform.tfvars. Make sure to provide desired values for:

    • region --> Target AWS Region
    • s3_statebucket_name --> Globally unique Amazon S3 bucket name
    • dynamo_locktable_name --> DynamoDB table name used for state locking
  • Modify provider.tf. Comment out the backend section.

      # backend "s3" {
      #   ...
      # }
    

Execution

  • cd to bootstrap folder.
  • Execute terraform init to initialize Terraform.
  • Execute terraform plan and verify the changes.
  • Execute terraform apply and approve the changes.
  • Switch to using Amazon S3 backend by un-commenting the backend "S3" section within provider.tf
    • Modify backend "S3" section with correct values for region, bucket, dynamodb_table, and key. Use provided values as guidance.
  • Execute terraform init to re-initialize Terraform with new backend.
    • This will ask you to move your state to Amazon S3. Enter 'yes'.
  • Once you have your Terraform state on Amazon S3, you can continue to make updates to bootstrap as needed, using the Amazon S3 as backend.

Requirements

Name Version
terraform >= v1.1.9
aws >= 4.13.0

Providers

No providers.

Modules

Name Source Version
bootstrap ../modules/aws/bootstrap n/a

Resources

No resources.

Inputs

Name Description Type Default Required
region The AWS Region e.g. us-east-1 for the environment string n/a yes
s3_statebucket_name Globally unique name of the S3 bucket used for storing Terraform state files. string n/a yes
tags Mandatory tags for the resources map(string) n/a yes
dynamo_locktable_name Name of the DynamoDB table used for Terraform state locking. string "" no

Outputs

Name Description
backend_config Define the backend configuration with following values