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
設定内で変数を使用するには、環境変数を介する必要があります。