web-dev-qa-db-ja.com

Terraform構成で環境変数を取得しますか?

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_UNTF_VAR_PWで置き換える2つの値は、ユーザー名とパスワードの値です。上に示したものを試してみましたが、成功しませんでした。他にもいくつか試しましたが、常に構文の問題が発生します。

14
Adron

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
20
Liam

補間構文を使用すると、terraform v0.12.18で警告がスローされます。これで、補間構文を使用する必要がなくなりました。 var.helloとして参照できます。

注意:言語の観点から理解しておくべき重要なことの1つは、環境変数を使用して変数を宣言できないことです。環境変数を使用して、スクリプトで宣言された変数の値のみを割り当てることができます。たとえば、次の.tfスクリプトがあるとします。

variable "hello" { type=string }

これで、環境に変数TF_VAR_hello = "foobar"がある場合、実行時に変数helloの値は "foobar"になります。変数を宣言せずに変数を割り当てると、効果はありません。

2
Soundararajan

変数を使用するには、 ""でラップする必要があります。次に例を示します。

ユーザー名= "$ {var.UN}"

0
eranreshef