© Liashko/Shutterstock.com
Entwickler Magazin
Von der Infrastruktur zu automatisierten Applikationen

Hybride Infrastrukturen

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.

Christian Johannsen


Eine der Lösungen, die auf dem Prinzip Infrastructure as Code, also der deklarativen Beschreibung von Konfigurationen auf Zielsystemen, aufbauen, ist Chef [1]. 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 stellen. 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' endend

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.

Listing 1package 'Install Apache' do action :installend 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.

Eine Sprache für alle Elemente

Die in Listing 1 verwendete template-Ressource verweist bei genauerem Betrachten auf eine Datei mit dem Namen index.html.erb. Dabei handelt es sich um eine Ruby-Vorlagendatei. Diese Vorlagen (engl. templates) können im Rahmen eines Kochbuchs verwendet werden, um Systeme dynamisch...

Entwickler Magazin
Von der Infrastruktur zu automatisierten Applikationen

Hybride Infrastrukturen

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.

Christian Johannsen


Eine der Lösungen, die auf dem Prinzip Infrastructure as Code, also der deklarativen Beschreibung von Konfigurationen auf Zielsystemen, aufbauen, ist Chef [1]. 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 stellen. 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' endend

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.

Listing 1package 'Install Apache' do action :installend 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.

Eine Sprache für alle Elemente

Die in Listing 1 verwendete template-Ressource verweist bei genauerem Betrachten auf eine Datei mit dem Namen index.html.erb. Dabei handelt es sich um eine Ruby-Vorlagendatei. Diese Vorlagen (engl. templates) können im Rahmen eines Kochbuchs verwendet werden, um Systeme dynamisch...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang