web-dev-qa-db-fra.com

Obtenir une variable d'environnement dans la configuration Terraform?

J'ai deux variables d'environnement. L'un est TF_VAR_UN et un autre est TF_VAR_PW. Ensuite, j'ai un fichier terraform qui ressemble à ceci.

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"
        ]
    }
}

Les deux valeurs que je voudrais remplacer par les variables d'environnement TF_VAR_UN et TF_VAR_PW sont les valeurs nom d'utilisateur et mot de passe. J'ai essayé ce qui est montré ci-dessus, sans succès, et j'ai joué avec quelques autres choses, mais j'ai toujours des problèmes de syntaxe.

14
Adron

J'essaierais quelque chose de plus comme ça, qui semble plus proche de 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"
    ]
}

La commande CLI étant la suivante.

TF_VAR_UN=foo TF_VAR_PW=bar terraform apply
20
Liam

L'utilisation de la syntaxe d'interpolation génère un avertissement avec terraform v0.12.18. Maintenant, vous n'avez plus besoin d'utiliser la syntaxe d'interpolation. Vous pouvez simplement le référencer comme var.hello.

Attention: Une chose importante à comprendre du point de vue du langage est que vous ne pouvez pas déclarer de variables à l'aide de variables d'environnement. Vous ne pouvez affecter des valeurs aux variables déclarées dans le script qu'en utilisant des variables d'environnement. Par exemple, supposons que vous ayez le script .tf suivant

variable "hello" { type=string }

Maintenant, si l'environnement a une variable TF_VAR_hello = "foobar", lors de l'exécution, la variable hello aura la valeur "foobar". Si vous affectez la variable sans la déclaration de la variable, il n'y aura aucun effet.

2
Soundararajan

pour utiliser une variable, elle doit être entourée de "" par exemple:

username = "$ {var.UN}"

0
eranreshef