Ansible - Toolset zur Orchestrierung der IT-Infrastruktur

Die erste Version von Ansible erschien im Jahre 2012. Das Programm stellt eine Kombination aus Konfigurationsmanagement, automatisierte Kommando-Ausführung sowie Softwareverteilung dar. Aufgaben lassen sich mithilfe von Skripten definieren, die dann von Ansible auf den gewünschten Systemen ausgeführt werden. Diese Eigenschaften sind in der Verwaltung und dem Management von IT-Systemen gefragt. Ursprünglich für Unix-Betriebssysteme ausgelegt, ist Ansible seit der Version 1.7 über Powershell auch mit Windows kompatibel. Die Entwickler von Ansible haben vor allem vier klare Ziele definiert. Das Tool soll die folgenden Ansprüche erfüllen:

  • leicht zu erlernen

  • besonders sicher

  • verlässlich

  • auf den minimalen Umfang beschränkt

In welchen Szenarien kommt Ansible zum Einsatz?

Ansible wird vor allem in der Administration von IT-Strukturen eingesetzt. Es ist dabei unerheblich, welchen Umfang oder welche Form die IT-Infrastruktur hat. Ein kleines, lokales Netz, bestehend aus einigen Workstations und einem Server lässt sich ebenso effektiv verwalten wie ein großes Netzwerk mit eigenem Intranet.

Folgende Voraussetzungen sind notwendig, um Ansible einzusetzen:

  • Ein Server oder eine Workstation mit Linux. In der Regel wird ein zentraler Server gewählt, auf den die IT-Administratoren jederzeit Zugriff haben.

  • Ein Firmennetzwerk. Über das Netzwerk wird die Orchestrierung vorgenommen. Ansible ist sowohl mit dem öffentlichen Internet als auch mit Intranets, lokalen Netzwerken und VPNs kompatibel.

  • Eine SSH-Verbindung. Die gesamte Kommunikation innerhalb des Netzwerks läuft über secure shell ab. Hierfür müssen SSH-Verbindungen mit Zertifikaten möglich sein.

Vorteile von Ansible

Es gibt viele Gründe, die in der Praxis für Ansible sprechen. Zunächst einmal handelt es sich um eine Open-Source Anwendung. So ist der Quellcode offen, was die Anpassung vereinfacht. Auch Lizenzgebühren werden nicht fällig und Sie sind frei in der Wahl eines IT-Dienstleisters als Partner. Weiterhin ist Ansible sehr einfach zu implementieren. Zum einen besitzt es keine Abhängigkeiten zu anderen Programmen oder extra Bibliotheken. Ansible benötigt zum Betrieb auch keine Datenbank. Zum anderen benötigt es keine Installation auf den Client-Systemen. Die Module können auf einem beliebigen Computer im Netzwerk abgelegt werden. Alle Systeme, die Sie mit Ansible fernsteuern möchten, benötigen lediglich einen Zugang via SSH. Den Zugang gewährt Ihnen eine Terminal-Software Ihrer Wahl. Alle Konfigurationen lassen sich mithilfe eines einfachen Texteditors editieren. Die Aktionen werden zentral gespeichert und von dort aufgerufen. Die Ausführung funktioniert dann via Fernzugriff über den SSH-Zugang. Somit fällt es gegenüber ähnlichen Orchestrierungs-Programmen deutlich einfacher, Systeme dem Ansible-Netzwerk hinzuzufügen beziehungsweise auf die Konfigurationen zuzugreifen.

Ansible in der Praxis

Über Ansible lassen sich alle beliebig viele Systeme ansprechen. Zunächst werden die Systeme, die verwaltet werden sollen, der zentralen Datenbank von Ansible mitgeteilt. Ansible nutzt eine INI-Datei für diese Verwaltung. Dies macht es ganz einfach, neue Systeme hinzuzufügen und den Überblick zu behalten. Jedes System lässt sich ganz einfach identifizieren. Die INI-Datei sieht beispielsweise so aus:

[webserver]
www1.beispiel.de
www2.beispiel.de

[datenbankserver]
db0.beispiel.de
db1.beispiel.de

So wird Ansible konfiguriert

Die eigentlichen Konfigurationen in Ansible werden Playbooks genannt. In diesen Playbooks werden Konfigurationen sowie Befehle für das Deployment und die Orchestrierung abgelegt. Es handelt sich dabei im Prinzip um einzelne Skripte, die von Ansible dann über das Netzwerk auf den Zielrechnern ausgeführt werden. Die Playbooks werden mit YAML geschrieben. Dies erleichtert die Einarbeitung in das System. Ansible kann in der Konfiguration und Orchestrierung von IT-Systemen sehr unterschiedliche Aufgaben ausführen. Beispielsweise ist es möglich, alle oder einige der Workstations im Netzwerk auf aktuelle Softwarepakete hin zu überprüfen. Diese Befehle werden ebenfalls in einem Playbook hinterlegt. Möchten Sie mithilfe von Ansible zum Beispiel httpd stets aktuell halten, kann ein Playbook wie folgt aussehen:

- hosts: all
tasks:
- name: Apache auf Aktualität überprüfen
yum: pkg=httpd state=latest

Unter dem Punkt „hosts“ werden jeweils die Systeme definiert, die angesprochen werden sollen. Es können hier alle Clients, nur bestimmte Workstations oder auch Gruppen genannt werden. Danach folgt unter „tasks“ die Auflistung der Aufgaben. Hier ist es möglich, mehrere Aufgaben zu listen, die dann in der entsprechenden Reihenfolge abgearbeitet werden. Die Zeile „name“ steht Ihnen zur freien Verfügung. Sie wird genutzt, um den Befehl, der in der darauffolgenden Zeile ausgeführt wird, zu beschreiben. Dies gewährleistet die Übersichtlichkeit.

Mit Ansible ist es weiterhin möglich, Dienste auf Systemen im Netzwerk zu überprüfen. Sie haben so die Möglichkeit, via Fernzugriff zu kontrollieren, ob die gewünschten Dienste verfügbar sind. Auf die gleiche Weise ist es möglich, Dienste zu starten, stoppen oder neu zu starten. Dem Playbook wird beispielsweise folgender Befehl hinzugefügt, wenn Sie prüfen möchten, ob der httpd-daemon aktiv ist:

- name: prüfen ob httpd gestartet und beim boot aktiviert ist
service: name=httpd state=started enabled=yes

Darüber hinaus ist es möglich, in den Playbooks Tags zu setzen. Vor allem in größeren Playbooks hilft dies, die Übersicht zu behalten. Mittels Tags lassen sich auch Gruppen von Systemen definieren. Beispielsweise lassen sich unterschiedliche Aufgabenbereiche mit Tags beschreiben, wie etwa „Pakete“ und „Config“. Ein Beispiel eines entsprechendes Playbooks könnte etwa so aussehen:

tasks:
- yum:
name: "{{ item }}"
state: installed
loop:
- httpd
- memcached
tags:
- pakete

- template:
src: templates/src.j2
dest: /etc/foo.conf
tags:
- config

Ein weiterer Vorteil ist, dass Sie vorkonfigurierte Playbooks herunterladen können. Mit diesen ist es möglich, die unterschiedlichsten Aufgaben durchzuführen. Komplette Installationsroutinen beispielsweise müssen Sie nicht aufwendig schreiben, sondern nutzen ein Standard-Playbook für diese Aufgabe. Dies spart Ihnen Zeit bei der Administration.

Mit Ansible arbeiten

Wenn Sie die Befehle, die Sie in einem Playbook abgelegt haben, ausführen möchten, gehen Sie wie folgt vor. Sie öffnen eine SSH-Verbindung und führen über die Kommandozeile das entsprechende Playbook aus. Gehen wir davon aus, dass Sie Aufgaben unter der Bezeichnung „beispiel.yml“ abgelegt haben. Dann sieht die Befehlszeile wie folgt aus:

ansible-playbook beispiel.yml

Auch ist es möglich, über die Kommandozeile das entsprechende Playbook aufzurufen und nur bestimmte Befehle auszuführen. Eine Kommandozeile, mit der Sie alle Befehle mit dem Tag „config“ ausführen möchten, jedoch Kommandos mit dem Tag „Pakete“ ignorieren möchten, könnte so aussehen:

ansible-playbook beispiel.yml --tags "config" --skip-tags "pakete"

Hier zeigt sich eine grundlegende Stärke von Ansible. Da die Systeme, die angesprochen werden sollen, im Playbook hinterlegt und über die Host-Datei definiert sind, ist das Aufrufen der Befehle grundsätzlich von jedem System im Netzwerk aus möglich. Ansible führt die Aufgaben automatisch auf den korrekten Rechnern aus, sofern diese über das Netzwerk erreichbar sind.

Fazit: Ansible ist ein starkes Tool für IT-Administratoren

Ansible bringt alle Eigenschaften mit, die ein Programm für die Orchestrierung über das Netzwerk benötigt. Es erlaubt Administratoren individuelle Libraries von Skripten zu erstellen und diese auf beliebigen Rechnern im Netzwerk auszuführen. Der Gestaltung sind keine Grenzen gesetzt und mittels Gruppen und Tags lassen sich bestimmte Clients jederzeit herausfiltern. Bestehende Playbooks ermöglichen einen schnellen Einstieg und geben selbst Einsteigern die Möglichkeit, Ansible mit allen Funktionen zu verstehen und einzusetzen. Ansible ist leichtgewichtig, flexibel und hat sich als pramatisches Tool für die Orchestrierung kleiner wie großer Infrastrukturen bewährt.

Nach oben