terraformのbackend設定内で変数を使う

tfstateファイルをS3で管理する場合は、バックエンドの設定を行います。この際、バケット名やキー名を変数管理したいと思うことでしょう。
しかし、結論から言って、Terraformのbackend設定では、直接的な変数の使用はサポートされていません。これは、backend設定がTerraformの初期化プロセスの一部であり、この時点では変数の値がまだ解決されていないためです。
しかし、環境変数を使用して間接的に値を注入することは可能です。例えば、S3バケットの名前を環境変数から取得するには、次のようにします。


terraform {
    backend "s3" {
    bucket = "mybucket"
    key = "path/to/my/key"
    region = "us-east-1"
  }
}

この設定では、bucketの値は直接指定されていますが、これを環境変数から取得するには、Terraformを実行する前に環境変数TF_VAR_bucketを設定します。


export TF_VAR_bucket=mybucket

そして、Terraformの設定を次のように変更します。


terraform {
  backend "s3" {
    bucket = "${var.bucket}"
    key = "path/to/my/key"
    region = "us-east-1"
  }
}

このように、backend設定内で変数を使用するには、環境変数を介する必要があります。

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