ADMIN

2025

03

2025-02-27T12:00:00

Monitoring und Hochverfügbarkeit

PRAXIS

041

Cloud

Netzwerkinfrastruktur

Infrastruktur mit AWS IaC-Generator als Code automatisiert erstellen

Gleichbleibende Ergebnisse

von Julius Engler

Kay-Michael Krödel

Veröffentlicht in Ausgabe 03/2025 - PRAXIS

In der AWS-Cloud steht in CloudFormation mit dem Infrastructure-as-Code-Generator eine Methode bereit, Ressourcen als Codevorlagen, sogenannte Templates, zu erstellen, zu pflegen und anzupassen. Durch diese Funktion bietet der IaC-Generator die Möglichkeit, Infrastrukturkomponenten automatisiert und reproduzierbar bereitzustellen, was Fehler reduziert und die Verwaltung vereinfacht.

AWS CloudFormation erleichtert das Erstellen und Verwalten von Ressourcen auf Basis von sogenannten deklarativen Templates. Dies bedeutet, dass der IT-Verantwortliche definiert, welche Ressourcen und Funktionen in der AWS-Umgebung bereitgestellt werden sollen und CloudFormation übernimmt dann selbstständig die notwendigen Schritte zum Aufbau oder Anpassen. Diese Templates verfassen Admins in YAML oder JSON.
Der Infrastructure-as-Code-Generator (IaC-Generator) ist eine Funktion von CloudFormation, die dafür sorgt, dass jede in dem Account existierende Ressourcenkomponente automatisch auf AWS als Template bereitgestellt wird, ohne dass manuelle Eingriffe erforderlich sind. Die Template-Struktur stellt sicher, dass die Infrastruktur in einem vorhersehbaren und konsistenten Zustand bleibt – selbst bei Änderungen.
CloudFormation und seine Templates erleichtert nicht nur die Ressourcenverwaltung, sondern ermöglicht es auch, Änderungen gezielt und sicher vorzunehmen. Administratoren erkennen mithilfe von "Change Sets" vorab, wie sich Änderungen an den Templates auf bestehende Ressourcen auswirken, was Risiken minimiert und Ausfallzeiten reduziert. Dies ist besonders in produktiven Umgebungen von hoher Priorität.
AWS CloudFormation erleichtert das Erstellen und Verwalten von Ressourcen auf Basis von sogenannten deklarativen Templates. Dies bedeutet, dass der IT-Verantwortliche definiert, welche Ressourcen und Funktionen in der AWS-Umgebung bereitgestellt werden sollen und CloudFormation übernimmt dann selbstständig die notwendigen Schritte zum Aufbau oder Anpassen. Diese Templates verfassen Admins in YAML oder JSON.
Der Infrastructure-as-Code-Generator (IaC-Generator) ist eine Funktion von CloudFormation, die dafür sorgt, dass jede in dem Account existierende Ressourcenkomponente automatisch auf AWS als Template bereitgestellt wird, ohne dass manuelle Eingriffe erforderlich sind. Die Template-Struktur stellt sicher, dass die Infrastruktur in einem vorhersehbaren und konsistenten Zustand bleibt – selbst bei Änderungen.
CloudFormation und seine Templates erleichtert nicht nur die Ressourcenverwaltung, sondern ermöglicht es auch, Änderungen gezielt und sicher vorzunehmen. Administratoren erkennen mithilfe von "Change Sets" vorab, wie sich Änderungen an den Templates auf bestehende Ressourcen auswirken, was Risiken minimiert und Ausfallzeiten reduziert. Dies ist besonders in produktiven Umgebungen von hoher Priorität.
Was der IaC-Generator leistet
Der IaC-Generator erlaubt ein schnelles Deployment von Infrastrukturkomponenten. Über Templates stellen Sie sicher, dass sich dieselben Konfigurationen jederzeit exakt wiederherstellen oder skalieren lassen. Die Wiederverwendbarkeit der Vorlagen fördert eine einheitliche Architektur und vereinfacht multiple Deployments. Diese Templates manuell anzulegen erfordert viel Know-how und kann sehr zeitintensiv werden, daher ist hier der IaC-Generator ein Weg, um diesen Prozess zu automatisieren.
Zudem erlangen IT-Verantwortlich mit dem Einsatz des Werkzeugs ein besseres Management und mehr Kontrolle. Denn CloudFormation erlaubt es, komplexe Templates in mehrere kleinere, modulare Einheiten, die sogenannten "Nested Stacks", zu unterteilen. Auf diese Art und Weise lassen sich die Vorlagen in verschiedenen Projekten wiederverwenden. Diese Modularität trägt dazu bei, Infrastrukturen in überschaubare Einheiten aufzuteilen und so die Pflege und Aktualisierung zu vereinfachen.
Mithilfe von "Change Sets" und Stack-Versionierung können Sie Änderungen am IaC-Generator in einer Testumgebung prüfen und sicherstellen, dass die Änderungen die gewünschte Wirkung haben, da Sie jederzeit auch an ein vom IaC-Generator erstelltes Template Ergänzungen anfügen können. Diese Funktion schützt vor unbeabsichtigten Konfigurationen in produktiven Umgebungen und vereinfacht das Änderungsmanagement.
Der Einsatz von Templates für das Infrastrukturmanagement eröffnet zahlreiche Möglichkeiten, erfordert jedoch auch eine strukturierte Herangehensweise. Zu den Best Practices gehört Folgendes:
- Parameter in Templates erlauben es, dieselbe Vorlage für verschiedene Umgebungen oder Regionen anzupassen. Beispielsweise können Sie Instanztypen, Sicherheitsgruppen oder Subnetze dynamisch konfigurieren, was die Flexibilität und Wiederverwendbarkeit der Templates deutlich erhöht.
- Der IaC-Generator ermöglicht es, Bedingungen zu definieren, die festlegen, ob bestimmte Ressourcen erstellt werden. Das ist besonders hilfreich, wenn einige Komponenten nur in bestimmten Regionen oder bei spezifischen Anforderungen verfügbar sein sollen.
- Modulare Vorlagen: Durch das Aufteilen großer Infrastrukturvorlagen in kleinere, modularere Templates, die als "StackSets" organisiert werden, erreichen Sie eine höhere Konsistenz. Beispielsweise legen Sie Netzwerkeinstellungen oder Sicherheitsgruppen als separate Module an und verwenden sie dann an anderer Stelle, was die Verwaltung vereinfacht.
- Validierung und Tests: Es ist ratsam, die Templates vor der produktiven Bereitstellung zu validieren. CloudFormation bietet eine entsprechende Funktion für Vorlagen an, die syntaktische Fehler aufzeigt und so bereits in der Planungsphase zur Qualitätssicherung beiträgt. Auch Tests der Change Sets in einer Entwicklungsumgebung können sicherstellen, dass Änderungen keine ungewollten Nebeneffekte haben.
Bild 1: Der Scan bringt alle in der Region verfügbaren Ressourcen auf den Schirm und kategorisiert diese.
Sicherheit und Compliance
Durch die detaillierte Steuerung von Zugriffsrechten mit AWS Identity and Access Management (IAM) setzen Sie das Prinzip der minimalen Rechtevergabe (Principle of Least Privilege) um. Sie sind in der Lage, genau festzulegen, welche Benutzer oder Rollen welche Aktionen im IaC-Generator ausführen dürfen, beispielsweise wer Templates erstellen, ändern oder löschen darf.
Zudem gewährleistet die Integration in AWS IAM und die automatische Protokollierung aller Ereignisse mit CloudTrail die Sicherheit und Nachvollziehbarkeit jeglicher Aktivitäten. Dies hilft Unternehmen, Compliance-Standards wie PCI DSS und ISO 27001 einzuhalten und sorgt dafür, dass nur autorisierte Personen Änderungen vornehmen können.
Kosten und Lizenzierung
Für den IaC-Generator fallen keine direkten Kosten an, wenn nur einfache Stacks in einer einzigen Region zum Einsatz kommen. Bei bestimmten erweiterten Funktionen wie StackSets (Bereitstellungen über mehrere Konten und Regionen) und Drift Detection (Abgleich von Ressourcen mit dem gewünschten Zustand), können jedoch zusätzliche Gebühren anfallen.
CloudFormation selbst erhebt keine Gebühren für die Template-Verwaltung und das Bereitstellen von Stacks. Allerdings fallen die üblichen AWS-Kosten für die Ressourcen an, die Sie über CloudFormation erstellen und verwalten. Organisationen sollten also regelmäßig ihre genutzten Stacks und die zugrunde liegenden Ressourcen prüfen, um unnötige Kosten zu vermeiden.
IaC-Generator praktisch nutzen
CloudFormation ermöglicht es Ihnen, Ihre AWS-Infrastruktur in Form von Code zu definieren und zu verwalten. Dennoch greifen viele Administratoren besonders in der Experimentier- und Lernphase zunächst auf die intuitive AWS-Managementkonsole zurück. An dieser Stelle setzt der IaC-Generator an, der es ermöglicht, aus bereits bestehenden AWS-Ressourcen automatisch CloudFormation-Templates zu generieren.
Um die Funktionsweise und den Nutzen des IaC-Generators anschaulich zu demonstrieren, betrachten wir ein Praxisbeispiel. Als Ausgangssituation dient ein AWS-Account, in dem bereits verschiedene Ressourcen über die Managementkonsole implementiert wurden. Sobald Sie also ein AWS-Konto eröffnet und dort bereits eine oder mehrere Ressourcen erstellt haben, können Sie mit der Generierung eines IaC-Templates beginnen.
Öffnen Sie dazu CloudFormation und navigieren Sie zum Reiter "IaC-Generator". Im Anschluss sehen Sie oben einen Kasten mit dem Titel "Funktionsweise", der Sie Schritt für Schritt durch den Prozess führt.
Klicken Sie zunächst auf "Einen neuen Scan starten", um den Vorgang zu beginnen. Danach folgt ein Scan aller in der Region verfügbaren Ressourcen. Sobald dieser abgeschlossen ist, werden die gefundenen Ressourcen systematisch kategorisiert. Um detailliertere Informationen anzuzeigen, gehen Sie mit der Maus in den Kasten "Aufschlüsselung gescannter Ressourcen". Daraufhin öffnet sich ein Menü auf der rechten Seite, in dem Sie die genauen Ressourcentypen zu der jeweiligen Kategorie finden.
Nun klicken Sie in der Box "Funktionsweise" unter "Schritt 2" auf "Vorlage erstellen". Anschließend wählen Sie die Option "Mit einer neuen Vorlage beginnen" und vergeben einen beliebigen Vorlagenamen. Die Parameter "Löschrichtlinie" und "Aktualisieren der Ersetzungsrichtlinie" können in der Standardeinstellung "Beibehaltung" verbleiben. Klicken Sie nun auf "Weiter".
Im nächsten Menü haben Sie nun die Möglichkeit, die Ressourcen auszuwählen, die zum CloudFormation-Template gehören sollen. Zur Veranschaulichung nutzen wir eine EC2-Instanz. Sobald Sie alle gewünschten Ressourcen hinterlegt haben, klicken Sie erneut auf "Weiter". Zum Erstellen einer EC2-Instanz benötigen Sie auch Ressourcen wie ein VPC, eine Security Group, ein Subnet und weitere. Wählen Sie diese verwandten Ressourcen im nächsten Menü aus und klicken Sie wieder auf "Weiter". Überprüfen Sie nun Ihre finale Auswahl und klicken Sie auf "Vorlage erstellen".
Bild 2: Einem Template lassen sich AWS-Ressourcen einfach hinzufügen.
Das fertige CloudFormation-Template steht im YAML- oder JSON-Format zum Download bereit und lässt sich direkt in einen CloudFormation-Stack importieren. Alternativ besteht die Möglichkeit, auf Basis des erzeugten Templates eine CDK-Anwendung (Cloud Development Kit) zu erstellen. Im Gegensatz zu CloudFormation-Templates, die wie besprochen in YAML oder JSON vorliegen, ermöglicht das CDK Ihnen, Cloudressourcen in vertrauten Programmiersprachen zu beschreiben und zu verwalten. Dadurch wird eine Auseinandersetzung mit der teilweise komplexen Syntax von YAML oder JSON obsolet. Sie können dabei aus einem breiten Spektrum gängiger Programmiersprachen wählen, darunter TypeScript, Python und Go. Im Gegensatz zum IaC-Generator, dessen Funktionalität auf die Konvertierung bestehender Ressourcen in ein IaC-Format beschränkt ist, stellt das CDK eine Umgebung zur sinnvollen Verwaltung und Weiterentwicklung dieser Ressourcen dar.
Fazit
Mit den beschriebenen Funktionen von CloudFormation und dem IaC-Generator verwalten Sie Ihre AWS-Infrastruktur effizienter, indem Sie bestehende Ressourcen als Code exportieren und so besser versionieren und automatisieren. Der IaC-Generator wandelt Infrastrukturen in CloudFormation-Templates um, was Zeit spart und konsistente, wiederverwendbare Vorlagen schafft. Dieser Ansatz vereinfacht und beschleunigt das Management der Infrastruktur, wodurch IT-Teams flexibel und effizient auf Anforderungen reagieren können.
(jp)
Julius Engler und Kay-Michael Krödel sind Solutions Architects bei Amazon Web Services.