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.
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
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.
pour utiliser une variable, elle doit être entourée de "" par exemple:
username = "$ {var.UN}"