AWS CloudFormation, Teil 4

Reverse-Engineering mit AWS CloudFormer

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

Über die Actions-Schaltfläche lässt sich der Webserver starten.
Über die Actions-Schaltfläche lässt sich der Webserver starten. (Bild: Drilling / AWS Germany GmbH)

AWS CloudFormation erlaubt es, Infrastruktur nach dem „Infrastructure as Code“-Prinzip per JSON- oder YAML-Vorlagen zu definieren. Mit dem Tool CloudFormer lassen sich bereits vorhandene Ressourcen zwecks einfacherer Reproduzierung sogar in CloudFormation-Vorlagen konvertieren.

Mit CloudFormation stellt AWS Kunden eine leicht erlernbare domänenspezifische Sprache (domain-specific language, DSL) zur Verfügung, mit deren Hilfe diese im Unterschied etwa zu AWS Elastic Beanstalk oder AWS OpsWorks „sämtliche“ Infrastruktur-Ressourcen in Ihrer Cloud-Umgebung beschreiben und bereitstellen können und zwar in allen gewünschten Regionen oder Konten.

Zur Modellierung wird lediglich eine einfache in JSON oder YAML formatierte Textdatei benötigt, welche in einen S3-Bucket gehostet der eigenen Cloud-Umgebung als Informationsquelle dient. Die Nutzung von CloudFormation an sich ist kostenfrei; bezahlt wird lediglich für die Ressourcen, die zum Ausführung der Anwendungen des Nutzers benötigt werden.

Wir haben AWS CloudFormation (CF) bereits in einer 3-teiligen Workshop-Reihe vorgestellt: von der allgemeinen Funktionsweise über geeignete Editoren fürs Bearbeiten von CloudFormation-Templates und den visuellen Designer bis hin zum manuellen Erstellen von Templates „from scratch“.

Verwenden von CloudFormer

Der zweite Teil der Workshop-Reihe nennt unter anderem ein Werkzeug zum Erstellen von CF-Vorlagen namens CloudFormer, mit dessen Hilfe sich auch Vorlagen aus bestehenden AWS-Deployments erzeugen lassen. Diese soll im Folgenden im Detail betrachtet werden, bietet es doch zwei interessante Use-Cases.

Zum einen hilft CloudFormer beim Erlernen der CloudFormation-DSL, da sich mit dem Tool Referenz-Vorlagen einer Umgebung erstellen lassen, die der Nutzer in der Regel gut kennt. Allerdings unterstützt CloudFormer als Beta-Tool nicht alle AWS Ressourcen oder Ressourceneigenschaften. Beschränkt man sich aber auf einfache und überschaubare Ressourcen, wie z. B. eine EC2-Instanz, erhält man auch ein überschaubares Basis-Template und kann dieses dann mit Hilfe der erworbenen Kenntnisse der CloudFormation-DSL sukzessive manuell weiter ausbauen

Darüber hinaus ist CloudFormer die ideale Lösung, um bestehende Deployments wiederholbar zu machen. Der Clou daran: CloudFormer wird von AWS selbst als CloudFormation-Vorlage bereitgestellt. Die prinzipielle Vorgehensweise zum Einsatz des CloudFormer ist demnach Folgende:

Der Nutzer erstellt aus der CloudFormer-CloudFormation-Vorlage einen CloudFormer-Stack. Das Tool wird auf einer t2.small-Amazon EC2-Instance ausgeführt und benötigt keine sonstigen Ressourcen. Wurde CloudFormer via CloudFormation bereitgestellt, verwendet man das webbasierte Tool zum Erstellen einer weiteren CF-Vorlage auf Basis vorhandener AWS Ressourcen und speichert die erstellte Vorlage in einem Amazon S3-Bucket.

Ist das erledigt, kann man den CloudFormer-Stack wieder löschen, denn dieser wird danach nicht mehr benötigt und muss daher auch keine unnötigen Gebühren verursachen. Die von CloudFormer generierte Vorlage kann der Nutzer dann verwenden, um bei Bedarf einen neuen Stack zu starten.

CloudFormer bereitstellen

CloudFormer steht als eigenes Template in der AWS Management Console bereit.
CloudFormer steht als eigenes Template in der AWS Management Console bereit. (Bild: Drilling / AWS Germany GmbH)

Das Bereitstellen des CloudFormer ist schnell erledigt. Hierzu klickt der Nutzer in der AWS Management Console in der Rubrik „Management Tools“ auf „CloudFormation“ und dann auf die Schaltfläche „Create Stack“. Auf der Seite „Select Template“ wählt man dann im Abschnitt „Choose a template“ in der Auswahlliste bei „Select a sample template“ den Eintrag „Tools / CloudFormer“. Das Provisionieren des CloudFormer-Stacks kann man falls gewünscht in der Stack-Ansicht im „Events“-Tab verfolgen.

In der Stack-Übersicht sieht der AWS-Nutzer alle von CloudFormer bereitgestellten Ressourcen.
In der Stack-Übersicht sieht der AWS-Nutzer alle von CloudFormer bereitgestellten Ressourcen. (Bild: Drilling / AWS Germany GmbH)

Alternativ kann der Nutzer mit einem Klick auf den verlinkten Stack-Namen auch „in“ den Stack wechseln. Hier findet man z. B. im Abschnitt „Resources“ die von CloudFormer bereitgestellten Ressourcen – in diesem Fall im Wesentlichen eine EC2-Instanz namens „WebServer“ nebst der benötigten Sicherheitsgruppe sowie einer passenden CF-Rolle bzw. ein zugehöriges Instance-Profil.

Über die Actions-Schaltfläche lässt sich der Webserver starten.
Über die Actions-Schaltfläche lässt sich der Webserver starten. (Bild: Drilling / AWS Germany GmbH)

Der nächste Schritt besteht dann darin, den vom CloudFormer-Stack provisionierten Webserver zu starten. Dazu wechselt man wie gewohnt ins EC2-Dashboard und startet die Instanz im „Actions“-Menü. Wir haben die Instanz aus Gründen der Übersichtlichkeit in der vorangestellten Abbildung umbenannt, indem wir den Wert für den Name-Tag auf „CloudFormer“ geändert haben.

Anschließend verbindet man sich im Web Browser per HTTPS auf den Public DNS-Namen oder die Public-IP des CloudFormer-Webservers und kann damit beginnen, interaktiv ein eigenes CF-Template auf Basis bestehender AWS-Ressourcen zu erstellen.

CloudFormer in Aktion

Die Startseite zeigt diverse Hintergrundinformationen zu CloudFormer.
Die Startseite zeigt diverse Hintergrundinformationen zu CloudFormer. (Bild: Drilling / AWS Germany GmbH)

CloudFormer fragt zunächst nach dem Nutzernamen und dem Passwort, das im Verlauf der Provisionierung des CloudFormer-Stacks festgelegt wurde. Die Startseite präsentiert zunächst einige Hintergrundinformationen zu CloudFormer und weist darauf hin, dass sich das Tool noch im Beta-Stadium befindet. Ferner informiert die Seite darüber, was CloudFormer im Detail tut. Der Admin kann nun zu Beginn die von CloudFormer zu analysierende Region festlegen und klickt dann auf „Create Template“. CloudFormer beginnt nun mit der Analyse der in der angegebenen Region des betreffenden Benutzer-Kontos bestehenden Infrastruktur.

Ein Assistent führt den CloudFormer-Anwender bei der Generierung des Templates.
Ein Assistent führt den CloudFormer-Anwender bei der Generierung des Templates. (Bild: Drilling / AWS Germany GmbH)

Nun legt man auf der Seite „Intro“ einen Namen und eine Beschreibung für das zu generierende Template fest. In den dann folgenden (im Beispiel) 13 Dialog-Seiten präsentiert CloudFormer dem Nutzer dann interaktiv z. B. für die Bereiche „DNS“, „VPC“, „VPC Network“, „VPC Security“, „Network“, „Managed Services“, „Managed Config“, „Compute“, „Storage“, „Storage Config“, „App Services“, „Security“ und „Operational“ sämtliche im Konto des Nutzer identifizierten Ressourcen und erlaubt es jeweils alle oder Einige davon per Mausklick in das zu generierende Template aufzunehmen. Alternativ kann der Nutzer auch auf der Intro-Seite das Häkchen bei „Selelct all resources matching filter“ in einem Rutsch sämtliche Ressourcen in das Template integrieren.

In unserem Beispiel beschränken wir uns auf die Compute-Ressourcen.
In unserem Beispiel beschränken wir uns auf die Compute-Ressourcen. (Bild: Drilling / AWS Germany GmbH)

Wer CloudFormer lediglich nutzen will, um erste Gehversuche mit der CF-DSL zu sammeln, kann sich wie wir im Beispiel etwa lediglich auf Compute-Ressourcen beschränken. Wir wollen daher nicht jede der 13 Dialogseiten abarbeiten, sondern integrieren lediglich eine EC2-Instanz in das Template.

Der Vorteil der Vorgehensweise ist, dass wir als Ergebnis ein relativ kompaktes CF-Template erhalten. Dieses enthält allerdings keinen Parameter- oder Mapping-Block und ist daher in keiner Weise parametrisiert. Die praktische Verwendbarkeit hält sich damit im Grenzen, da die fehlerfreie Instanziierung des so erzeugten Template voraussetzen würde, dass sämtliche übrigen (abhängigen) Ressourcen im Konto, welche wir bei der Erzeugung des Templates jetzt ausgelassen haben, exakt so vorhanden sind.

Die Zusammenfassung erlaubt es, Änderungen an den gewählten Ressourcen vorzunehmen.
Die Zusammenfassung erlaubt es, Änderungen an den gewählten Ressourcen vorzunehmen. (Bild: Drilling / AWS Germany GmbH)

CloudFormer gibt dem Nutzer allerdings auf der „Summary“-Seite noch einmal die Gelegenheit, die gewählten Ressourcen mit „Modify“ gezielt anzupassen, wie in der Abbildung die „Instance-ID“ oder „Security-Groups-ID“.Dies empfiehlt sich beispielweise, wenn man das Template anschließend testen möchte, die enthalten Ressourcen aber bereits existieren.

Im letzten Schritt muss der User das Template noch speichern.
Im letzten Schritt muss der User das Template noch speichern. (Bild: Drilling / AWS Germany GmbH)

Ein Klick auf „Continue“ präsentiert dann das erzeugte CF-Template, welches sich anschließend mit einem Klick auf „Save Template“ im von CloudFormer angefragten (vorhandenen) S3-Bucket ablegen lässt. Wahlweise kopiert und fügt man es per Copy-and-Paste in seine eigene JSON-Datei ein und lädt diese anschließend in den für CF-Templates favorisierten S3-Bucket hoch.

Das Template dient nun dazu, einfach neue Stack-Instanzen zu erzeugen.
Das Template dient nun dazu, einfach neue Stack-Instanzen zu erzeugen. (Bild: Drilling / AWS Germany GmbH)

Jetzt kann aus dem Template ein neuer Stack instanziiert werden. Das manuelle Navigieren zur CloudFormation-Konsole kann man sich allerdings sparen, wenn man direkt im CloudFormer auf „Launch Stack“ klickt, wodurch auch gleich die passende S3-URL übernommen wird.

Der rudimentäre Stack.
Der rudimentäre Stack. (Bild: Drilling / AWS Germany GmbH)

Dass das generierte Template in diesem extrem einfachen Beispiel wie beschrieben nicht parametrisiert ist, zeigt sich beim Instanziieren eines Stacks aus diesem Template darin, dass CloudFormation in der CF-Management-Console bis auf den Stack-Namen keine weiteren Parameter abfragt.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45308785 / Configuration-Management)