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で設定した名前でファイルが登録されている