2016-07-07 25 views
0

Ich habe einen Server, den ich für Selbstheilung und automatische Skalierung eines Consul-Clusters verwende. Dies geschieht mit Terraform-Skripten, die von Consul-Watches und Health-Checks ausgeführt werden.Terraform einrichten "COMMAND: REMOTE CONFIG" mit Konsul

Ich möchte einen zusätzlichen Backup-Terraform-Server für Failover hinzufügen. Um dies zu tun, muss ich die und terraform.tfstate.backup zwischen meinen Servern teilen, so dass sie Terraform auf denselben Ressourcen ausführen können. Ich möchte diese Dateien mit der Terraform "COMMAND: REMOTE CONFIG" teilen, aber mir ist unklar, wie ich die Aktie beginnen würde.

Grundsätzlich möchte ich die terraform.tfstate und terraform.tfstate.backup Dateien ständig auf beiden Servern synchronisiert sein. Hier ist mein Versuch, dies einzurichten. Beachten Sie, dass beide Terraforming-Server Konsul Kunden den Rest meines Konsuls Cluster verbunden ausgeführt werden:

terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=/consul-scripts/terr/terraform.tfstate" \ 
-backend-config="backup=/consul-scripts/terr/terraform.tfstate.backup" \ 
-path="/consul-scripts/terr/terraform.tfstate" \ 
-backup="/consul-scripts/terr/terraform.tfstate.backup" \ 
-address="localhost:8500" 

Doch dies war offensichtlich die falsche Syntax. Beim Versuch, den Konsul Beispiel auf der verlinkten Dokumentation laufen erhielt ich die folgende Ausgabe:

[email protected]:/consul-scripts/terr$ terraform remote config \ 
>  -backend=consul \ 
>  -backend-config="address=localhost:8500" \ 
>  -backend-config="path=/consul-scripts/terr/terraform.tfstate" 
Error writing backup state file: open terraform.tfstate.backup: permission denied 

würde Ich mag meinen Terraforming-Server habe synchronisieren durch das Terraforming „COMMAND: Fernconfig“ anstelle einer normalen Dateifreigabe System wie Glusterfs oder so etwas.

Wie kann ich meine Terraform-Dateien auf diese Weise korrekt synchronisieren?

+0

Diese Fehlermeldung schlägt vor, dass Sie g ot der remote config-Befehl korrekt genug, dass Terraform versuchte, den Remote-Zustand zu aktivieren, aber welchen Benutzer auch immer Sie "terraform" ausführen, da er keinen Schreibzugriff hat, um die Datei "terraform.tfstate.backup" im lokalen Dateisystem zu erstellen oder zu aktualisieren. –

Antwort

0

Also ja @Martin Atkins habe es richtig Ich musste nur das Beispiel in der mit Sudo ausführen. Mit dem terraform remote config werden die .tfstate-Dateien in einem versteckten Verzeichnis .terraform/ innerhalb des Verzeichnisses mit den Terraform-Skripten gespeichert.

Wie funktioniert terraform remote config funktioniert, dass es einen Schlüsselwert in Consul erstellt, die die Details der Tfstate-Datei enthält.

Die Antwort ist sehr nah an dem, was in der Dokumentation aufgeführt ist. In der Praxis ist terraform remote config ein 3-stufiger Prozess.

Bevor die folgenden Programme ausgeführt Terraforming sollte die aktuelle tfstate Datei ziehen ausgeführt werden:

#this will pull the current tfstate file 
#if none exists it will create the tfstate key value 
terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=tfstate" \ 
pull 

Dann laufen:

terraform apply 

Nach diesem Lauf beendet ist die folgende die aktualisierte tfstate Datei heraus zu schieben zu konsultieren, um den Schlüsselwert zu ändern:

terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=tfstate" \ 
push