WiN KW #18 Immutable Server in der Praxis

Mit der Verwaltung von Servern können wir viel Zeit verbringen. Vor allem Aktivitäten wie Patching, Schließen von Sicherheitslücken, Umsetzung von Sicherheits- und Compliance Anforderungen sowie Deployments von neuen Releases können eine Herausforderung darstellen.

Ein Ansatz, um die Komplexität dieser Aufgaben zu reduzieren sind Immutable Server. Hierbei verändern wir bestehende Server nicht, sondern ersetzen diese.

Ein Vorteil ist, dass wir eine Art “Ganz oder gar nicht”-Prinzip umsetzen: Entweder der Server ist in vollem Umfang deployt oder das Deployment schlägt fehl. Wir haben also keine unterschiedlichen Konfigurationen. Außerdem können wir durch Immutable Server Automatisierungen wie Auto Scaling nutzen.

Doch wie setzen wir Immutable Server konkret um?

 

User Data vs. Golden Images

Beim Provisionieren von EC2-Instanzen ist es möglich über die User Data Installationsskripte auszuführen. Diese werden beim initialen Aufbau der Instanz ausgeführt.

User Data

Bei meinen Kunden habe ich hier schon häufig sehr komplexe Installationsroutinen gesehen. Diese hatten teilweise über mehrere hundert Zeilen Code, Abhängigkeiten von anderen Systemen oder auch weitere Skripte nachgeladen.

Solche komplexen Start Routinen sind sehr fehleranfällig! Bei Netzwerkfehlern oder bei Fehlern in den Abhängigkeiten schlägt die User Data fehl. Dies fällt erst bei näherem Einblick in die Logs auf und ist somit nicht sehr skalierbar.

Golden Images

Eine Alternative um Instanzen mit Software zu versorgen ist die Verwendung von sog. Golden Images. Beim Aufbau von EC2-Instanzen müssen wir ein Amazon Machine Image (AMI) wählen. Dies kann neben einem Betriebssystem auch weitere vorinstallierte Software enthalten. Golden Images sind also ein vorinstalliertes Server Image, welches keiner weiteren Updates und Deployments bedarf.

Immutable Server mit Golden Images

Jede EC2-Instanz hat bei Golden Images die selbe Basis. Bei einem Upgrade unserer Hauptanwendung oder des Betriebssystems erstellen wir einfach ein neues Golden Image. Nun können wir in einem Deployment Prozess unserer Wahl die Server alle auf einmal oder schrittweise neu aufbauen. Dies hat den Vorteil, dass wir einheitliche Konfigurationen haben.

Build Prozess

Für einen Golden Image Build Prozess kann der AWS Service EC2 Image Builder verwendet werden. Im Wesentlichen können wir hiermit Docker und EC2 Images herstellen.

In beiden Varianten wählen wir zunächst ein Grundimage (z. B. Amazon Linux oder Ubuntu). Außerdem können wir Build Components und Post-Build Components wählen.

Build Components werden verwendet, um das Grundimage mit zusätzlichen Softwarekomponenten zu bestücken oder um Konfigurationen vorzunehmen.

Post-Build Components (oder auch Test Components) dienen dazu die Funktionsfähigkeit des Images sicherzustellen. Hier können Drittsystemanbindungen (wie Amazon Inspektor), Reboots und andere Szenarien durchgeführt und getestet werden.

Components bestehen aus Actions. Es gibt die folgenden Action Module:

  • Ausführung von Skripten und Befehlen
  • Hoch- und Herunterladen von Dateien
  • Dateisystemoperationen
  • Softwareinstallationen
  • Systemoperationen

Nach der Konfiguration der Komponenten kann die Build Pipeline gestartet werden. Das Ergebnis ist ein Amazon Machine Image.

Alternativen

Eine häufig verwendete Alternative zum EC2 Image Builder ist Hashicorp Packer. Ein Open Source Tool zum Erstellen von Golden Images. Packer hat den Vorteil, dass es mit Terraform integrierbar ist und über mehrere Cloud Plattformen funktioniert. Es ist in einem Multi-Cloud Projekt durchaus einen Blick wert.

Anwendungsfälle

Golden Images werden vor allem bei Immutable Server Strategien verwendet. Doch auch bei Images, die über den AWS Marketplace angeboten werden, finden Golden Images Anwendung.

Weiterhin können durch Golden Images Compliance Anforderungen wie z. B. CIS Hardening umgesetzt werden. Hierfür gibt es bereits CIS gehärtete Grundimages, die als Ausgangsbasis verwendet werden können.

Mich interessiert Deine Meinung! Antworte gerne auf diesen Newsletter und teile mir mit, was dir gefallen hat, was dir gefehlt hat und was du dir für die Zukunft wünschst. Auch über fachlichen Input freue ich mich!

Zusätzliche Ressourcen

Bei weiterem Interesse empfehle ich einen Blick auf die folgenden Ressourcen:

Hashicorp Packer
Packer ist ein Tool zum Erstellen von Golden Images. Es unterstützt mehrere Cloud Provider und ist das Tool der Wahl in einem Multi-Cloud Projekt.

Du möchtest mithilfe der Cloud durchstarten? Dann kann ich dir auf dreierlei Weise meine Unterstützung anbieten:
  1. Mein Well-Informed Newsletter erscheint alle zwei Wochen und hält dich auf dem neusten Stand.
  2. In einem AWS Well-Architected Review entfalten wir deine vollen Potenziale!
  3. Bei einem persönlichen Beratungsgespräch lösen wir deine Probleme.
Du benötigst noch mehr Informationen? Dann nimm gerne direkt Kontakt mit mir auf.


    Bitte lese dir unsere Datenschutzerklärung durch.

    Hendric Jabs

    Hendric Jabs

    Ich bin Wirtschaftsinformatiker (M. Sc.) und AWS Cloud Solutions Architect. Seit 2014 beschäftige ich mich leidenschaftlich mit Amazon Web Services und habe bereits seit 2015 einer Vielzahl von Kunden zu einer erfolgreichen Cloud Nutzung verholfen. Im Jahr 2021 habe ich für das Digital Career Institute den ersten AWS re/Start Kurs in Deutschland als leitender Dozent durchgeführt.
    LinkedIn
    XING
    Email