User Tools

Site Tools


terraform:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
terraform:start [06/10/2025 14:26] – [State files and Lock files] andrewterraform:start [07/10/2025 10:03] (current) – [State files and Lock files] andrew
Line 114: Line 114:
 ===== State files and Lock files ===== ===== State files and Lock files =====
  
-See [[aws:cloudformation-terraformstate|Cloudformation for Terraform State Files and Lock Table]], this is some Cloudformation code which runs to bootstrap Terraform by creating an S3 bucket, DynamoDB Lock Table and stores the resulting Bucket and Table name in parameter Store where Terraform can retreive it.+See [[aws:cloudformation-terraformstate|Cloudformation for Terraform State Files and Lock Table]], this is some Cloudformation code which runs to bootstrap Terraform by creating an S3 bucket, DynamoDB Lock Table and stores the resulting Bucket and Table name in AWS Parameter Store where Terraform can retreive it.
  
-This uses S3 and Dynamo db to store this info. 
  
 +Code to create bucket with Terraform and then remove it from the state file with a tf cli command, this means that Terraform won't try to destroy the state file bucket
  
-Code to create bucket with Terraform   and then remove it from the state file with tf cli command, this means that Terraform won't try to destroy the state file bucket +<code yaml>
- +
-<code terraform>+
 resource "aws_s3_bucket" "state_bucket" { resource "aws_s3_bucket" "state_bucket" {
- bucket = "tf-example123-state"+ bucket = "tf-mystate"
  
  tags = {  tags = {
Line 136: Line 134:
  
 Then, we can add the state file bucket to the AWS provider code:- Then, we can add the state file bucket to the AWS provider code:-
-<code terraform>+<file yaml terraform.tf>
 terraform { terraform {
   required_version = ">= 1.2"   required_version = ">= 1.2"
Line 147: Line 145:
  
  backend "s3" {  backend "s3" {
-   bucket = "tf-example123-state"+   bucket = "tf-mystate"
    key    = "state"    key    = "state"
    region = "eu-west-1"    region = "eu-west-1"
Line 153: Line 151:
 } }
  
-</code>+</file> 
 + 
 +**Updates to lockfile** - previously DynamoDb was used frequently for lock files, this can be stored in S3 along with the state:- 
 + 
 +<file yaml terraform.tf> 
 +terraform { 
 +  required_version = ">= 1.12" 
 +  required_providers { 
 +    aws = { 
 +      source  = "hashicorp/aws" 
 +      version = "~> 5.92" 
 +    } 
 +  } 
 + 
 + backend "s3"
 +   bucket = "tf-123-state" 
 +   key    = "state" 
 +   region = "eu-west-1" 
 +   use_lockfile = true  #S3 native locking 
 + } 
 +
 +</file>
  
 ===== AWS Provisioner code ===== ===== AWS Provisioner code =====
terraform/start.1759760810.txt.gz · Last modified: by andrew

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki