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.tfvarsbei 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 .tfstatevor einer Ausführung mit S3 synchronisiert und .tfstateam 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.tfDatei festzulegen, wird der Benutzer gezwungen, den Wert einzugeben. Sie kann entweder manuell oder mit der -var-fileoben 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.tfvarsDatei 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.tfvarsusw ...
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.