Terraform unterstützt das Hinzufügen einer zusätzlichen Datei mit Variablen während des Aufrufs.
Dokumentation: https://www.terraform.io/intro/getting-started/variables.html#from-a-file
Wir verwenden diese Funktion, um secrets.tfvars
bei jedem Aufruf von Terraform eine Datei bereitzustellen . Wir verwenden auch ein Skript, um den Befehl so zu verpacken, dass sein Aufruf konsistent ist und alle Teammitglieder nicht dieselben Fehler machen müssen. Der Wrapper wird .tfstate
vor einer Ausführung mit S3 synchronisiert und .tfstate
am Ende auf S3 zurückgesetzt. Ich höre auch von Leuten, die dasselbe mit dem in Consul gespeicherten Status tun und sogar eine Art Semaphor in Consul einfügen, um zu verhindern, dass zwei Leute gleichzeitig Terraform starten.
Wenn Sie vermeiden, einen Standardwert in einer variables.tf
Datei festzulegen, wird der Benutzer gezwungen, den Wert einzugeben. Sie kann entweder manuell oder mit der -var-file
oben beschriebenen Befehlsoption eingegeben werden . Wenn Sie keine Standardeinstellungen für Ihre Geheimnisse festlegen, können Sie Änderungen erzwingen, die eine Änderung der Geheimnisse erfordern.
Die secrets.tfvars
Datei ist eine symbolische Verknüpfung zu einer der Dateien mit Geheimnissen, die nicht in der Versionskontrolle gespeichert sind. Wir haben mehrere, je eine pro - Umgebung, wie so secrets-prod.tfvars
, secrets-dev.tfvars
, secrets-stg.tfvars
usw ...
Eine noch bessere Methode wäre, diese geheimen Dateien während des Wrapper-Skripts auf der Grundlage von Daten in Vault oder auf andere Weise zu generieren, um Geheimnisse freizugeben. Da sich derzeit das Format von Geheimnissen oder Geheimnissen selbst ändert, müssen wir es dem Team außerhalb des Versionskontrollkanals mitteilen - und das funktioniert, um ehrlich zu sein, nicht immer gut. Aber Geheimnisse ändern sich selten.