Open2

Terraform Cloud のremote backendをTerraform CloudからS3に移す

bibiobibio

諸々の事情からバックエンドをS3に移したのでその記録。

他の人が使わないようにロックしてからやったほうが安全

1. Terraform Cloudの管理画面からダウンロードする

  1. Projects & workspaces > [プロジェクト名] > States で一覧表示
  2. 一番上の New state を選択
  3. Download で保存

2. S3バケットを作成し保存したキーを保存

  1. S3コンソールなどからバケット作成
  2. バージョニング有効にしておく
  3. 1 でDownloadしたファイルをおく (xxxx.tfstate)

3. terraform ブロックを書き換え

bucket: my-terraform-bucket, key: latest-state.tfstate とした例

main.tf
terraform {
  backend "s3" {
    bucket = "my-terraform-bucket"
    key    = "latest-state.tfstate"
    region = "ap-northeast-1"
  }
}

4. terraformの設定を再初期化

ここで terraform init をすると次のようなエラーになる

Initializing the backend...
Migrating from Terraform Cloud to backend "s3".
│ Error: Migrating state from Terraform Cloud to another backend is not yet implemented.
│ 
│ Please use the API to do this: https://www.terraform.io/docs/cloud/api/state-versions.html
│ 

reconfigure optionを指定するとbackendを再設定できる

terraform init -reconfigure

5. planして差分がないことを確認

terraform plan
bibiobibio

環境変数で、AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY は渡してね