AWS CloudFormation, Teil 2 CF-Templates erstellen und editieren

Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Stephan Augsten

AWS CloudFormation nutzt wiederverwendbare Vorlagen, sprich Templates, auf deren Basis automatisch gewünschte Ressourcen erzeugt werden. Nachdem wir die prinzipielle Arbeitsweise von CloudFormation anhand von Beispiel-Stacks demonstriert haben, geht es in diesem Beitrag um Werkzeuge zum Erstellen eigener CloudFormation-Vorlagen.

Anbieter zum Thema

Beispielhaftes CloudFormation-Template im Eclipse-Editor.
Beispielhaftes CloudFormation-Template im Eclipse-Editor.
(Bild: Thomas Drilling / Eclipse)

Bei CloudFormation steht wie bei OpsWorks das konsistente und reproduzierbare Deployment im Vordergrund. Dies lässt sich über die Templates realisieren. Eine CloudFormation-Vorlage ist technisch gesehen eine gewöhnliche Text-Datei im JSON- oder YAML-Format. Diese Datei enthält eine Beschreibung der AWS-Infrastruktur, die zum Ausführen einer bestimmten Applikation oder eines Service benötigt wird.

Solche Vorlagen-Dateien lassen sich parametrisieren und damit universell einsetzen. Dank spezieller Vorlagenparameter ist es möglich, ein Template für mehrere Deployments zu verwenden. Ein und dieselbe Vorlage wird dabei mit unterschiedlichen Konfigurationswerten benutzt, z. B. bei der Anzahl für die Anwendung bereitzustellender Instanzen.

Dabei werden AWS-Ressourcen in ein und derselben Vorlage ausschließlich mit logischen Namen referenziert, damit sich aus der gleichen Vorlage auch in Bezug auf etwaige Namenskonflikte problemlos mehrere Stacks erstellen lassen. Neben den Ressourcen-Spezifikationen enthält die Vorlagendatei auch Angaben zu den „Beziehungen“ der Ressourcen untereinander. Ferner kann der Ersteller auch „Bedingungen“ formulieren, z. B. dass ein EBS-Volume in der gleichen AZ existieren muss, wie das mit ihm verbunden AMI.

Schließlich lassen sich auch Ausgabe-Eigenschaften zur Kommunikation mit den Bereitstellungsergebnissen oder mit Konfigurationsinformationen im Template verwenden. So könnte die Anwendung einer Vorlage z. B. die URL des Elastic Load Balancer-Endpoints zurückliefern, den der Nutzer zum Verbinden mit der neu instanziierten Anwendung verwenden muss.

JSON und der richtige Editor

Bevor Nutzer eigene CloudFormation-Stacks erstellen können, müssen sie eine Vorlagendatei, also ein CloudFormation-Template kreieren. Wer sich dabei nicht auf Samples beschränken will, muss selbst in die Tasten greifen.

CloudFormation-Vorlagen werden in der Regel in JSON-Notation verfasst. Zwar steht die Abkürzung JSON im engeren Sinne für „JavaScript Object Notation“, was den Einsatzzweck gut zum Ausdruck bringt – nämlich ein kompaktes Datenformat in einfach lesbarer Textform zum Zweck des Datenaustauschs zwischen Anwendungen. Vom Grundsatz her ist JSON aber unabhängig von der verwendeten Programmiersprache, da in nahezu allen verbreiteten Sprachen entsprechende Parser existieren.

Doch auch wenn JSON sicher viele positive Merkmale hat, ist das Vermeiden von Syntaxfehlern oft schwierig, wenn man keinen speziell für JSON geeigneten Editor verwendet. Schon das zu frühe Entfernen/Schließen einer einzigen geschweiften Klammer kann Stunden der Fehlersuche nach sich ziehen, sodass der Einsatz eines JSON-fähigen Editoren das Bearbeiten von JSON-Dokumenten entscheidend vereinfachen kann. Unter Windows bieten sich da z. B. Editors wie z. B. Notpad++ oder Sublime Text an. Letzterer ist auch für Linux erhältlich. Ferner gibt es JSON-Plug-ins für viele gängige Editoren oder Viewer-Plug-ins für gängige Browser.

Eclipse Toolkit for AWS

Wählt man während der Eclipse-Installation die Option „Java EE für Entwickler“ aus, werden einige für AWS benötigte Pakete mit installiert.
Wählt man während der Eclipse-Installation die Option „Java EE für Entwickler“ aus, werden einige für AWS benötigte Pakete mit installiert.
(Bild: Thomas Drilling / Eclipse)

Wer lieber den Editor seiner bevorzugten IDE verwenden möchte, kann auch zum AWS-Toolkit für Visual Studio oder Eclipse greifen. Beide Erweiterungen erlauben es, AWS-CloudFormation-Vorlagen zu bearbeiten. Der Einsatz des AWS-Toolkits für Eclipse beispielsweise ist unter Windows, Linux, Unix und MacOS möglich. Ferner bedarf es einer Java-Version 1.8 oder jünger. Sind die Voraussetzungen gegeben, lädt man die Eclipse IDE 4.2 (oder jünger) herunter. Diese findet man auf der Download-Seite der Eclipse-IDE. Eclipse stellt allerdings verschiedene Downloads bereit.

Empfehlenswert ist das Installieren der Eclipse IDE for Java EE Developers, die man z.B. im Win-64-Installer auswählt. Diese Version enthält auch die Eclipse Web Tools Platform, welche man z. B. auch für Elastic Beanstalk benötigt. Ferner enthält das Paket die Eclipse Data Tools Platform, die z. B. für Amazon SimpleDB-Funktionen erforderlich ist, sowie Ecplise EGit und M2Eclipse.

Um in den Besitz einiger benötigter Komponenten zu kommen, muss man die URL „https://aws.amazon.com/eclipse“ hinterlegen.
Um in den Besitz einiger benötigter Komponenten zu kommen, muss man die URL „https://aws.amazon.com/eclipse“ hinterlegen.
(Bild: Thomas Drilling / Eclipse)

Sind diese Voraussetzungen erfüllt, klickt man in Eclipse auf „Help“, dort auf „Install New Software“, trägt im entsprechenden Eingabefeld „Work with“ die URL https://aws.amazon.com/eclipse ein und klickt ggf. auf Add, um ein neues Repository anzulegen. Danach kann der Nutzer die zu installierenden Komponenten bequem auswählen.

Beispielhaftes CloudFormation-Template im Eclipse-Editor.
Beispielhaftes CloudFormation-Template im Eclipse-Editor.
(Bild: Thomas Drilling / Eclipse)

Anschließend ist es problemlos möglich, CloudFormation-Templates im Eclipse-Editor zu bearbeiten. Darüber hinaus existiert das AWS-Toolkit auch für Visual Studio.

ThirdParty

Mit Troposphere ist es möglich, CF-Templates in anderen Programmiersprachen zu verfassen und dann zu konvertieren.
Mit Troposphere ist es möglich, CF-Templates in anderen Programmiersprachen zu verfassen und dann zu konvertieren.
(Bild: Thomas Drilling / Troposphere)

Zudem gibt es viele Third-Party-Tools zum programmgesteuerten Erzeugen von CloudFormation-Vorlagen wie z. B. die Troposphere-Library, mit denen der Nutzer seine CF-Templates z. B. in Python verfassen und dann ins CF-Format konvertieren kann.

(ID:44974771)