- Beim Aufbau von Infrastruktur in der Cloud sollte man Kostenersparnis, schnellere Bereitstellung, Konsistenz, Stabilität und Wiederverwendbarkeit berücksichtigen; statt über die Web-Konsole zu arbeiten, ist es sinnvoll, Infrastruktur mit IaC-Tools aufzubauen
- Terraform ist Open Source und das am häufigsten verwendete IaC-Tool
- Um Terraform-Code effizient und wirkungsvoll zu schreiben, ist es wichtig, die von Terraform bereitgestellten Funktionen passend einzusetzen
- Terraform-Schleifen
- Allgemeine deklarative Sprachen haben meist keine Schleifen, aber Terraform unterstützt verschiedene Funktionen, mit denen sich Schleifen verwenden lassen
- Typische Schleifen sind:
count, for_each
- Parameter
count: Wiederholung von Ressourcen und Modulen
- Ausdruck
for_each: Wiederholung von Ressourcen, Inline-Blöcken innerhalb von Ressourcen und Modulen
- Einsatz der einzelnen Schleifen
count: geeignet, wenn die zu erstellenden Ressourcen fast identisch sind und sich nicht ändern; ermöglicht eine schnelle und knappe Erstellung
for_each: geeignet für Ressourcen mit eindeutigen Namen oder Daten sowie für Ressourcen, die nicht neu erstellt werden sollten; ermöglicht sichere Erstellung und Änderungen
- Count
- Der Parameter
count akzeptiert ganze Zahlen und erstellt durch Wiederholung komplette Ressourcen oder Module
- Bei einer Konfiguration mit
count kann man über count.index auf den von count erzeugten Index zugreifen
- Einschränkungen von Count
count wiederholt die gesamte Ressource, aber keine Inline-Blöcke innerhalb der Ressource
- Wenn bei mit
count erzeugten Ressourcen ein Wert in der Mitte entfernt wird, werden alle nachfolgenden Werte gelöscht und neu erstellt. Das Endergebnis ist zwar identisch, kann aber problematisch sein, wenn Ressourcen nicht neu erstellt werden dürfen
- For_each
- Der Ausdruck
for_each iteriert über list, set und map und erstellt durch Wiederholung komplette Ressourcen, Inline-Blöcke innerhalb von Ressourcen und Module
- Bei einer Konfiguration mit
for_each kann man mit each.key und each.value auf den jeweiligen Schlüssel und Wert zugreifen
- Bei der Verwendung von
for_each für Ressourcen werden Listen nicht unterstützt
- In der Collection werden das zu iterierende
set oder map definiert, und in der Config kann man mit each.value die in der Collection definierten Schlüssel und Werte verwenden
Noch keine Kommentare.