CloudFormation Scripting

Mit CloudFormation können sämtliche Amazon AWS Ressourcen über ein Script erstellt werden, ganz getreu dem Motto “Infrastructure as Code”.

Das erstellte Skript kann man dann über die CommandLine oder über die AWS-Console ausführen lassen. Kommt es bei der Ausführung zu einem Fehler, werden alle bis dahin erstellten Ressourcen im Rahmen eines Rollbacks wieder gelöscht. Die gesamte erstellte Infrastruktur kann auch auf einen Schlag wieder gelöscht werden, in dem man den entsprechend ausgeführten CloudFormation Stack löscht … aber Vorsicht … ;-)

CloudFormation Skripte werden im JSON Format erstellt … und am besten man nimmt dafür einfach Notepad++ in Verbindung mit dem PlugIn JSMin, dann hat man auch eine angenehme Navigation über die Struktur der JSON-Datei.

Die Programmierung eines CloudFormation Scripts ist kein Hexenwerk aber mühselig. Im Endeffekt schau man sich viele Beispiele an und macht sinnvolles Copy-and-Paste gepaart mit Reengineering und nachschauen in der Referenz. Testen kann man das ganze immer erst bei einem Upload in CloudFormation in der AWS-Console … Syntaxfehler werden einem sofort mit der entsprechenden Zeilennummer gemeldet … in der Regel vergisst man bei dem vielen Copy-and-Paste an der richtigen Stelle ein Komma …

Ein CloudFormation Script besteht im wesentlichen aus den nachfolgenden Sektionen:

  • Description: beschreibt inhaltlich das CloudFormation Script und wird im Ausführungs-Assistent angezeigt
  • Parameters: hier können beliebige viele Eingabeparameter definiert werden, die der Anwender im Ausführungs-Assistent zur Laufzeit definieren kann
  • Mappings: hier werden Lookup-Tabellen definiert, um z.B. AWS-Regions abhängig automatisiert unterschiedliche AMIs zu wählen
  • Resources: hier werden die eigentlichen Befehle zur Erstellung der AWS-Ressourcen definiert
  • Outputs: hier wird das Ergebnis der Ausführung im Ausführungs-Assistent definiert, so dass man z.B. dem Anwender die URL des erstellten Elastic-Load-Balancers mitteilen kann.

Ich habe mal hier ein CloudFormation Script erstellt, das automatisiert ein VPC mit 4 Subnets erstellt. Von den 4 Subnets sind 2 Public- und 2 Private-Subnets. Die Public Subnets sind direkt an das Internet-Gateway angebunden, die Private-Subnets nutzen eine NAT-Instanz im ersten Public-Subnet. Es sind 4 Subnets, da jeweils unterschiedliche Availability-Zonen genutzt werden um damit ein Multi-AZ Scenario für eine hohe Ausfallsicherheit abzubilden … man kann dann nämlich vor die jeweiligen Subnets n och einen Load-Balancer hängen der AZ übergreifend verteilt … ja das geht alles …

CloudFormation Beispiel-Script, VPC mit 4 Subnets über 2 AZs: VPC-4-Subnets

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>