Automatisierung mit der Unbekannten – “BOSH”

“BOSH” erinnert in erster Linie an ein ähnlich klingendes Unternehmen im Stuttgarter Raum oder an einen gleichnamigen Food Channel. Dass es sich hierbei jedoch um ein Tool zur Automatisierung von IT-Aufgaben und zum Rollout von Software handelt, ist den meisten unbekannt. Dies liegt vermutlich daran, dass BOSH oftmals nur in Verbindung mit Cloud Foundry gesehen und erwähnt wird. BOSH ist jedoch Teil der Open-Source-Community und steht somit auch der freien Nutzung zur Verfügung.

Warum es Sinn macht seine Lösungsansätze zu hinterfragen?

Die Automatisierung gewinnt zunehmend an Bedeutung, denn der stetige Wandel und die daraus entstehenden Businessanforderungen bedürfen einer stetigen Anpassung in den IT-Abteilungen, z.B. durch komplett neue Software Deployments oder Aktualisierungen. Stillstand bedeutet Verlust von Kunden und Kapital. Um den aktuellen Trends zeitnah folgen zu können, ist eine Automatisierung von Prozessen und wiederkehrenden Aufgaben nicht mehr wegzudenken. Doch wie kommt man zur Automatisierung und was ist der richtige Ansatz?

Wenn wir ehrlich sind, wird die Auswahl über das Toolset meist dadurch entschieden, welches Fachwissen bereits in den IT-Abteilungen vorhanden ist. In gewisser Hinsicht ist dies auch eine völlig nachvollziehbare Entscheidungsgrundlage… doch dann stellt sich die Frage, ob die “Lösung” auch tatsächlich die passende für die aktuelle Problemstellung ist?

Lösungsstrategien werden oft unterbewusst anhand vorhandener Referenzerlebnisse angewendet. Hierbei wird ein vorhandenes Strategiemuster an das Problem angepasst und nach einer positiven Einschätzung über das Problem gestülpt. Ob es jedoch die richtige Strategie ist, wird nicht eingehend geprüft, frei nach dem Motto: “Das haben wir schon immer so gemacht.”

Was geschieht jedoch, wenn man bei einer Schraube weiterhin zum Hammer greift?

Was kommt nach dem Deployment?

Wenn es um die Bereitstellung von Services (also Deployment) geht, wird oftmals nur an das Naheliegende gedacht. Ist das Deployment einmal erfolgt, scheint die Aufgabe zunächst erfüllt. Doch kurze Zeit später meldet sich häufig z.B. das Monitoring System, da die Anwendung nicht mehr erreichbar ist oder notwendige Aufgaben, wie die Aktualisierung von Betriebssystemen oder der Anwendung selbst, erforderlich sind, da z.B. mit einem Patch eine Sicherheitslücke geschlossen werden soll.

Nicht wenige Automatisierungslösungen konzentrieren sich ausschließlich auf “Day 1”, also auf das Deployment. Doch wie geht man im Betrieb mit anfallenden Aufgaben um?

  • Problembehandlung
  • Patches / Updates
  • Skalierung

Nicht selten wird hierzu ein eigenes Framework um die vorhandene Automatisierung gebastelt, das sehr viel Aufwand bedeuten kann. Hilfreich sind hierbei Tools, die über das Deployment hinaus beim Betrieb unterstützen.

Was ist BOSH?

BOSH bezeichnet sich selbst als Tool Chain für Release Engineering, Deployment und Lifecycle Management. Wem die Container Orchestration mit Kubernetes ein Begriff ist, wird BOSH leicht verstehen. Denn das, was Kubernetes für Container macht (“Plattform für das automatisierte Bespielen, Skalieren und Warten von Anwendungscontainern auf verteilten Hosts” [1]), das schafft – grob ausgedrückt – BOSH für virtuelle Maschinen (VMs).

Dabei werden die folgenden unterschiedlichen Aspekte beleuchtet:

Tag 1

Das Deployment

BOSH ist in der Lage, eine bis mehrere virtuelle Maschinen in Betrieb zu nehmen und entsprechend der Definition zu konfigurieren. Hierzu muss BOSH das Zielsystem kennen, auf dem das Deployment erfolgen soll. BOSH unterstützt mehrere Zielsystem-Formate, z.B. VMware vSphere, AWS und weitere Cloud-Infrastrukturen und nimmt über das eigene Cloud Provider Interface mit dem Zielsystem Kontakt auf.

Das Deployment selbst wird über drei wesentliche Komponenten definiert.

  1. Stemcell = das Basis-Betriebssystem in minimalistischer und gehärteter Ausführung
  2. Release = enthält Software-Packages und Jobs, die die Konfiguration beschreiben
  3. Deployment Manifest = führt Stemcell und Release zusammen und liefert dazu weitere Informationen zum Deployment

Tag 2

Die Problembehandlung

BOSH überwacht den Betriebszustand der VMs und definierten Services, dies erfolgt über Agents. Befindet sich ein Service z.B. in einem nicht definierten Zustand, so wird dieser automatisch neu gestartet. Ebenso erfolgt die Überwachung der gesamten VM. Antwortet diese nicht innerhalb eines definierten Zeitraums, so wird diese aus dem Deployment gelöscht und neu erstellt. Persistente Daten bleiben hierbei erhalten, denn die virtuellen Festplatten werden zuvor abgehängt und der neuen virtuellen Maschine anschließend wieder hinzugefügt.

Der große Vorteil: Die selbstheilenden Kräfte werden die Rufbereitschaft das ein oder andere Mal nachts durchschlafen lassen können.

Patches/Updates

Betriebssystem-Updates und Software-Updates – täglich grüßt das Murmeltier. Besitzer eines Smartphones erfreuen sich beinahe täglich über einen Gruß aus dem “App Store” / “Play Store”. Doch regelmäßige Updates der Software und Bereitstellung von neuen Funktionen erhalten die Wettbewerbsfähigkeit. Daher ist ein schnelles Einspielen von neuen Software Packages eine unumgängliche und notwendige Maßnahme. Die Herausforderung dabei besteht darin, dass die Lifecycle-Abstände von Software Releases sich mittlerweile in Zyklen bis zu wenigen Minuten bewegen. Die Zyklen von “einem Release pro Jahr” gehören der Vergangenheit an. Daher wird eine schnelle und zuverlässige Variante für das Lifecycle Management benötigt. Nicht nur die Software, sondern auch Betriebssysteme müssen auf dem aktuellsten Stand bleiben und es ist selbstverständlich, dass die neuesten Sicherheitslücken fortlaufend schnellstmöglich geschlossen werden.

BOSH bietet zum Lifecycle-Management von Software und Betriebssystem “Out of the Box” entsprechende Methoden, die Systeme auf dem aktuellsten Stand zu halten und das in nur wenigen Schritten bis zur aktuellsten Version.

Die Skalierung

Was heute währt, kann morgen schon Geschichte sein. Tage wie der “Black Friday” oder der “Cyber Monday” zeigen regelmäßig, dass sich der Konsum von Services von jetzt auf gleich exponentiell verändern kann. Bisher bestand die Lösung darin, sämtliche Komponenten auf den einen bestimmten vorhersehbaren Tag zu dimensionieren. Zwei Aspekte, die hier einen problematischen Schatten werfen:

  • Das Unerwartete
    • Was ist, wenn an einem Black Friday nicht 10.000 sondern 50.000 User den Service konsumieren wollen?
    • Was ist, wenn mein neues Produkt dermaßen gefragt ist, dass 20.000 User das Produkt im Online Shop bestellen wollen?
  • Der Kostenfaktor
    • Theoretisch kann ich heutzutage unbegrenzt Ressourcen bereitstellen, um meine Konsumenten nicht der Gefahr auszusetzen, das Produkt oder den Service nicht beziehen zu können. Doch lohnt es sich wirklich permanent die Kosten dafür zu tragen?

Die Skalierfähigkeit von BOSH Deployments unterstützt dabei, den oben genannten Anforderungen zeitnah gerecht zu werden und die Verfügbarkeit zu erhöhen. Werden anstelle von 5 VM, kurzfristig10 VM benötigt, genügt hierzu eine kurze Anpassung des Deployments und BOSH erledigt den Rest automatisch.

Was zusätzlich hilft?

Die Liste könnte sicherlich noch etwas länger ausfallen, dennoch möchten wir ein paar zusätzliche Anregungen geben:

  • Smoke-Test
    • Der Rauch-Test wurde früher bei elektronischen Schaltungen durchgeführt und diente der Überprüfung, ob der Stromkreis an eine Spannungsquelle angeschlossen ist. Hat die Schaltung beim Einschalten nicht geraucht, so wurde die Schaltung quasi für funktional befunden. Eine ähnliche Funktion bietet BOSH: ein neues Deployment kann zum Test einmal vorab aufgebaut für einen grundlegenden Probelauf verwendet werden, analog zum Smoke-Test.
  • Password Rotation
    • Nicht selten werden einheitliche oder Standard-Passwörter in VMs verwendet. Dies kann mitunter zu einem großen Problem führen, wenn das Standard-Passwort einmal in falsche Hände fällt. Was wäre wenn BOSH,
      • … pro VM ein eigenes Passwort vorhält?
      • … das Passwort in definierten Abständen rotieren kann? → Das wäre sicher sehr hilfreich.
  • Persistente Daten erhalten
    • Sollte man versehentlich ein Deployment vorzeitig gelöscht haben, sind die Daten nicht verloren. BOSH löscht die persistenten Daten nicht sofort, sondern erst nach einer gewissen Periode. Der Verlust der Daten erfolgt also erst nach einer Vorhaltezeit.
  • Repaving (Re-Deployment)
    • Haben Sie schon einmal darüber nachgedacht, Ihr Deployment jede Woche oder täglich aufs Neue auszurollen? Sie fragen sich, welchen Sinn könnte es hierfür geben?
      • Angenommen ein Angreifer hat es geschafft Ihr System zu überlisten und installiert eine Schadsoftware auf Ihrer VM. Spätestens nach dem Re-Deployment ist die Schadsoftware automatisch von Ihrem System entfernt und hat keine Chance mehr Schaden anzurichten.

Fazit

Wer neben der Vereinheitlichung und Standardisierung von Deployments auch die Erhaltung (Auto-Healing) und Aktualisierung (Patches/Updates) von Deployments vereinfachen möchte, dem ist zu empfehlen, sich einmal ausgiebig mit BOSH zu beschäftigen. Der Einstieg ist zugegeben weniger leicht als bei anderen Automatisierungslösungen, dennoch vermag der zeitliche Invest eine wertvolle Bereicherung in Bezug auf die langfristige Freude und Erleichterung mit “Day 2 Operation” sein.