11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TerraformのBackend機能を利用して.tfstateを管理する

Posted at

Backend機能とは

  • .tfstateファイルをどこで管理するか設定できる機能
  • Gitで管理しない理由はHow to manage Terraform stateを参照
  • 今回はS3とDynamoDBを利用する設定を行う

S3とDynamoDBを作成

S3の設定

  • まずはプライベートバケットを作成する
  • このバケットに.tfstateファイルを保存していく
  • 設定を戻す時のためにバージョニングを有効にすること
resource "aws_s3_bucket" "terraform-state-storage" {
  bucket = "terraform-state-storage"
  acl    = "private"

  versioning {
    enabled = true
  }
}

DynamoDBの設定

  • 次にロックテーブルを作成する
  • 最低限でいいのでRC/WCは1にする
resource "aws_dynamodb_table" "terraform-state-lock" {
  name           = "terraform-state-lock"
  read_capacity  = 1
  write_capacity = 1
  hash_key       = "LockID"

  attribute {
    name = "LockID"
    type = "S"
  }
}

実行

  • 上で設定した分を実行する
terraform init
terraform apply

Backend設定

  • 先にS3とDynamoDBを作っておかないとエラーになる
  • bucketに上で作ったバケット名、dynamo_tableにテーブル名
  • keyに設定した名前で.tfstateファイルが保存される
    • 環境毎に名前を変更することで環境毎に保存することも可能
terraform {
  required_version = ">= 0.11.7"

  backend "s3" {
    bucket         = "terraform-state-storage"
    key            = "terraform.tfstate"
    region         = "ap-northeast-1"
    dynamodb_table = "terraform-state-lock"
  }
}

実行・確認

  • init, applyした後、S3を確認すると、keyで設定した名前でファイルが登録されている
11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?