2つの環境変数があります。 1つはTF_VAR_UN
で、もう1つはTF_VAR_PW
です。次に、このようなterraformファイルがあります。
resource "google_container_cluster" "primary" {
name = "marcellus-wallace"
zone = "us-central1-a"
initial_node_count = 3
master_auth {
username = ${env.TF_VAR_UN}
password = ${env.TF_VAR_PW}
}
node_config {
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring"
]
}
}
環境変数TF_VAR_UN
とTF_VAR_PW
で置き換える2つの値は、ユーザー名とパスワードの値です。上に示したものを試してみましたが、成功しませんでした。他にもいくつか試しましたが、常に構文の問題が発生します。
documentation に近いこのようなものを試してみます。
variable "UN" {}
variable "PW" {}
resource "google_container_cluster" "primary" {
name = "marcellus-wallace"
zone = "us-central1-a"
initial_node_count = 3
master_auth {
username = "${var.UN}"
password = "${var.PW}"
}
node_config {
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring"
]
}
CLIコマンドは次のとおりです。
TF_VAR_UN=foo TF_VAR_PW=bar terraform apply
補間構文を使用すると、terraform v0.12.18
で警告がスローされます。これで、補間構文を使用する必要がなくなりました。 var.hello
として参照できます。
注意:言語の観点から理解しておくべき重要なことの1つは、環境変数を使用して変数を宣言できないことです。環境変数を使用して、スクリプトで宣言された変数の値のみを割り当てることができます。たとえば、次の.tfスクリプトがあるとします。
variable "hello" { type=string }
これで、環境に変数TF_VAR_hello = "foobar"がある場合、実行時に変数helloの値は "foobar"になります。変数を宣言せずに変数を割り当てると、効果はありません。
変数を使用するには、 ""でラップする必要があります。次に例を示します。
ユーザー名= "$ {var.UN}"