terraform state mv コマンドチートシート

tech

実行順序を忘れがちなのでメモ

TL;DR

  1. Terraformのリソース定義を編集する
  2. terraform state mvコマンドを実行しステートを書き換える

Terraformのリソース定義編集

  • 以下、やりたいことは aws_s3_bucket.fooaws_s3_bucket.bar に変更することとします
  • 作成対象リソースはそのままにしたいので、あくまでTerraformのリソース定義を変更する作業です

リソース定義編集自体は state mv コマンドの実行には無影響です(あくまでTerraformコードとステートファイルの定義を冪等にする意図です)

Before:

resource "aws_s3_bucket" "foo" {
  bucket = "baz" # 変えない
}

After:

resource "aws_s3_bucket" "bar" {
  bucket = "baz" # 変えない
}

terraform state mvコマンド実行

以下のコマンドで aws_s3_bucket.foo としてステートに登録されているリソースを aws_s3_bucket.bar に移動します。

terraform state mv aws_s3_bucket.foo aws_s3_bucket.bar

コメント

タイトルとURLをコピーしました