Christian Johannsen Selbstständig

Mit Chef als Configuration-Management-Lösung, InSpec als Sprache für Sicherheits- und Compliancetests und Habitat als Tool zur Bereitstellung moderner Applikationen gelingt der Spagat zwischen verschiedenen Welten.

Viele Entwickler und Administratoren können sich sicher an die Zeiten erinnern, als das Lesen der Anforderungen an die Infrastruktur das Erste war, bevor eine Applikation genutzt werden konnte. Das Bereitstellen der notwendigen Ressourcen war jedoch nicht die einzige Herausforderung. Etwaige .NET-Bibliotheken, verschiedene Java-Versionen oder spezielle Datenbankabhängigkeiten konnten zu einer Nächte füllenden Aufgabe erwachsen. Hatte man sich für eine Version und ein Betriebssystem entschieden, sollte dies auch die Wahl kommender Applikationsversionen beeinflussen. Im Laufe der Jahre gab es verschiedene Entwicklungen, die eine Bereitstellung vereinfachen oder zumindest harmonisieren sollten. Einer der etablierten Wege ist die Bereitstellung von Applikationen mittels Infrastructure as Code.

Eine der Lösungen, die auf dem Prinzip Infrastructure as Code, also der deklarativen Beschreibung von Konfigurationen auf Zielsystemen, aufbauen, ist Chef. Die Chef-Architektur basiert auf einem Server/Client-Modell, das mittels Push/Pull bedient werden kann. Konfigurationen können somit erst auf dem Clientsystem vollständig bereitgestellt werden, bevor der Konfigurationslauf gestartet wird. Um die Bereitstellung von Applikationen auf Zielsystemen zu vereinfachen, bedient sich Chef einer eigenen DSL (Domain Specific Language), die auf Ruby basiert. Ziel ist es, für die einmalige Systembeschreibung unabhängig von Betriebssystemen eine lesbare und erweiterbare Sprache zur Verfügung zu tellen. Das folgende Beispiel beschreibt eine Installation des Apache-Webserver-Pakets, basierend auf dem Betriebssystem:

package 'Install Apache' do
  case node[:platform]
  when 'redhat', 'centos'
    package_name 'httpd'
  when 'ubuntu', 'debian'
    package_name 'apache2'
  end
end

Die einfache Syntax erlaubt ein schnelles Erlernen und aufgrund der Ruby-Basis eine Erweiterung innerhalb der Definition. Das package-Element ist eine sogenannte Ressource, die die kleinste Einheit darstellt. Durch die Verwendung mehrerer Ressourcen wird ein sogenanntes Rezept (engl. recipe) gebildet. Rezepte können wiederum mit anderen Elementen als Kochbuch (engl. cookbook) zusammengefasst werden. Neben der Installation können auf diese Weise Anwendungen konfiguriert und gestartet werden. Die Abarbeitung erfolgt dabei clientseitig und in der Reihenfolge der Definition (Listing 1). Diese Abarbeitung ist allgemein auch als Chef-Modus bekannt.

package 'Install Apache' do
  action :install
end

template '/var/www/index.html' do
  source 'index.html.erb'
  mode '0644'
end

service 'httpd'do
  action [:enable, :start]
end

Der Chef-Client auf dem Zielsystem enthält eine weitere Komponente, Ohai, die vor dem Start des eigentlichen Chef-Clients alle Attribute des Systems erkennt. Mithilfe dieser Attribute ist eine Verwendung zahlreicher Optionen in Chef möglich. So können neben der reinen Betriebssystemunterscheidung auch Rezepte erstellt werden, die zum Beispiel auf Netzwerken in Amazon AWS basieren.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin 3.18 - "Automatization Now!"

Alle Infos zum Heft
579835512Hybride Infrastrukturen
X
- Gib Deinen Standort ein -
- or -