AWS: Klickibunti zu CloudFormation

Seit Jahren werde ich immer wieder gefragt, ob es eine „einfache“ Methode gibt, um eine existierende, manuell aufgebaute Umgebung in CloudFormation oder CDK umzuwandeln.

Jetzt hat AWS ein hauseigenes Tool dazu veröffentlicht, nämlich den „AWS CloudFormation IaC Generator (Infrastructure as Code Generator)“. Die Idee besteht darin, Ressourcen, die bereits im Konto bereitgestellt wurden, in das Management durch CloudFormation aufzunehmen.

Schauen wir uns das Ganze einmal an.

Warum sollten wir automatisieren?

Automatisierung des Deployments oder Infrastructure as Code (IaC) bietet eine Vielzahl von Vorteilen für die Verwaltung von Infrastruktur in der AWS-Umgebung:

1. Skalierbarkeit:

Mit IaC können Sie Ihre Infrastruktur schnell und einfach skalieren, indem Sie Skripte verwenden, um neue Ressourcen hinzuzufügen oder vorhandene anzupassen.

2. Wiederholbarkeit und Konsistenz:

Durch die Verwendung von Code zur Bereitstellung Ihrer Infrastruktur können Sie sicherstellen, dass Ihre Umgebung konsistent bleibt, unabhängig davon wie oft Sie sie bereitstellen oder ändern.

3. Versionierung und Rückverfolgbarkeit:

IaC-Dateien können in Versionskontrollsystemen wie Git gespeichert werden, wodurch Änderungen nachvollziehbar bleiben und Sie problemlos zu früheren Versionen Ihrer Infrastruktur zurückkehren können.

4. Automatisierung:

Die Automatisierung von Bereitstellungsprozessen durch IaC spart Zeit und reduziert menschliche Fehler, da die Konfiguration der Infrastruktur konsistent und reproduzierbar ist.

5. Kostenoptimierung:

Durch die Möglichkeit, Infrastrukturressourcen basierend auf Bedarf zu erstellen und zu entfernen, können Sie die Kosten optimieren, indem Sie nur für die Ressourcen bezahlen, die Sie auch tatsächlich nutzen.

6. Schnellere Bereitstellung:

Die Verwendung von IaC ermöglicht eine schnellere Bereitstellung neuer Umgebungen oder Updates, da Sie nicht manuell jeden Schritt ausführen müssen. Stattdessen können Sie einfach das entsprechende Skript ausführen.

Insgesamt bietet Infrastructure as Code eine effizientere und zuverlässigere Möglichkeit, Infrastruktur in der AWS-Cloud zu verwalten und zu skalieren.

Die Spielregeln

Bevor wir Anfangen, sollten wir uns zuerst mal mit den Rahmenbedingungen auseinandersetzen, welche im Moment wie folgt zusammengefasst werden können:

QuotaValue
Maximum number of resources that can be processed in an account scan100,000
Number of scans per day (for accounts with less than 10,000 resources)3
Number of scans per day (for accounts with more than 10,000 resources)1
Concurrent number of templates generating per account5
Concurrent number of resources modeled for one template generation.5
Total number of resources that can be modeled in one template500

Auszug: docs.aws.amazon.com

Legen wir los

Als Grundlage für diesen Test verwende ich eine Fortinet-Demo-Umgebung. Diese nutze ich, um Kunden Hybrid-Networking näherzubringen und Fortinet-Partnern sowie Kunden als Hilfestellung anzubieten, wenn sie die ersten Schritte mit Hybrid-Networking und Hybrid-DNS in ihrer AWS-Cloud-Umgebung wagen.

Und wir nehmen jetzt mal an, ich habe dafür nicht schon ein CDK und Terraform 🙂

In meiner Umgebung gibt es zwei VPC’s, eine Fortigate und zwei Server.

Später möchten wir auf diese von unserem On-Prem Netzwerk aus per Ping und mit sauberer DNS-Auflösung zugreifen.

Wir nehmen jetzt an, dass dies alles manuell aufgebaut wurde.

Manuell zur CloudFormation

Wer suchet der findet

Vom Cloudformation Service gehen wir nun auf den „IaC generator„.

Hier starten wir einen Scan unseres Accounts.

Während der Scan-Dauer können wir andere Task erledigen, einen Kaffee trinken oder mehr Blogs lesen 🙂

Erstellen des Templates

Wenn der Scan fertig ist, können wir mit „Create template“ die Auswahl der Ressourcen treffen.

Wir definieren zuerst einen Namen.

Dan wählen wir die Ressourcen aus.

Hat man nach Best Practices gearbeitet und Tags implementiert, kann sich das Zusammenstellen als sehr einfach erweisen.

Ist dies nicht der Fall, muss man sich je nachdem durch mehrerer Seiten von Ressourcen navigieren und die Objekte auswählen.

Nachdem ich all meine Ressourcen gewählt habe, in meinem Fall 61, klicke ich unten rechts auf „Next„.

Intelligenter Helfer

Wenn ich bei den Ressourcen beispielsweise Beziehungen definiert habe, jedoch die entsprechenden Markierungen vergessen habe, werden mir diese automatisch vorgeschlagen:

Ich kann diese bei Bedarf prüfen und mit dem klick auf „Next“ bestätigen.

Im letzten Fenster erhalte ich eine Zusammenfassung.

Hier könnte ich noch Anpassungen vornehmen. Wenn aber alles in Ordnung ist, kann ich das Template erstellen.

Mit „Create template“ schliesst ihr diesen Teil des Prozesses ab.

Nach einer Weile, ist der Prozess abgeschlossen und zeigt mir allfällige „Probleme“ die erschienen sind.

In meinem Fall waren es nur die ID’s der EC2 Instanzen, welche nicht gesetzt werden können sondern bei der Erstellung generiert werden.

Fazit

Die einfache Verwendung des Tools ist beeindruckend. Habe ich auch bei der manuellen Erstellung nach Best Practices gearbeitet und Tags gesetzt, kann ich die Ressourcen schnell zusammenstellen.

Ist dies nicht der Fall, kann es je nach Komplexität der Umgebung sehr lange dauern, bis die richtigen Ressourcen bestimmt sind.

Die Lösung ist meiner Meinung nach ein guter Startpunkt. Allerdings ersetzt sie nicht die Notwendigkeit, von nun an alles manuell zu erstellen und keine Infrastruktur als Code (IaC) zu implementieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert