使用Terraform的Backend功能来管理.tfstate文件

后端功能是什么?

    • .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

后端设置

    • 先に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で設定した名前でファイルが登録されている
广告
将在 10 秒后关闭
bannerAds