Terraform-Schutzmaßnahmen

Terraform-Schutzmaßnahmen

Ich habe bereits Dutzende von AWS-Instanzen in der Produktion und möchte Terraform verwenden, um die Erstellung der nächsten Instanzen zu automatisieren. Ich habe gelesen, dass Terraform beim Einsetzen des unveränderlichen Musters helfen kann. Ich möchte jedoch jedes Risiko vermeiden, eine bereits laufende Instanz zu zerstören. Bietet Terraform irgendeinen Schutz, um dies zu vermeiden?

Antwort1

Jep - verwendenterraform planvor jeder Operation. Es wird eine vollständige Liste der Änderungen ausgegeben, die vorgenommen werden, ohne tatsächlichAusführeneinen davon, zu Ihrer Einsicht.

Antwort2

Terraform verfügt hierfür zwar über keine expliziten Sicherheitsvorkehrungen, verhindert durch sein allgemeines Design jedoch bereits den Zugriff auf vorhandene Ressourcen.

Im Allgemeinen hat jede Terraform-Ressource einen primären Bezeichner (z. B. für EC2 eine Instanz-ID, für S3 einen Bucket-Namen). Und jeder Terraform-Lauf sollte nur a) neue Ressourcen erstellen oder b) vorhandene Ressourcen unter der Kontrolle von Terraform aktualisieren/löschen.

  • Im Fall a), wenn die ID bereits existiert, erhalten Sie einen Fehler und Terraform kann nichts erstellen (wird bei EC2 nie passieren, ist aber bei S3-Buckets möglich). Dies ist die Gelegenheit, den Terraform-Code zu korrigieren.

  • Im Fall b) sollte Terraform nur mit „seinen eigenen“ Ressourcen arbeiten und die vorhandenen Inhalte Ihres Kontos unverändert lassen.

Man kann absichtlich (oder versehentlich) in Terraform eingreifen, indem man seine Ressourcen ersetzt/umbenennt, was zu Problemen führen kann; bei „normaler“ Verwendung habe ich diese Art von Problemen jedoch noch nie erlebt.

Antwort3

Sie können der Ressource einen Lebenszyklus-Konfigurationsblock hinzufügen (Siehe Terraform-Ressourcenkonfiguration); und zwar durch die Verwendung von:

lifecycle {
    prevent_destroy = true
}

Dies gibt eine Fehlermeldung zurück, wenn ein Plan eine Zerstörungsaktion für die Ressource enthält.

verwandte Informationen