Ansible einrichten
Da Ansible ohne einen expliziten Client-Gegenpart auskommt, brauchen Sie es nur auf dem Linux-Desktop einzurichten, den Sie zum Verwalten verwenden möchten. Die Installation erfolgt unter Ubuntu mit den Kommandos aus Listing 6. Das erste fügt dem System das Ansible-Software-Repository hinzu. Das gewährleistet, dass Sie immer die aktuelle Version von Ansible installieren. Das zweite aktualisiert die Quellen, das dritte richtet schließlich die Software ein.
Listing 6
$ sudo apt-add-repository -y ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install -y ansible
Nach der Installation liegen unter /etc/ansible/ die Konfigurationsdateien für Ansible. Die Datei /etc/ansible/hosts enthält die Liste der Hosts, die Ansible verwalten soll. In unserem Beispielfall sieht die Datei wie in Listing 7 aus. Sie editieren die Datei mit dem Kommando sudo nano /etc/ansible/hosts.
Listing 7
[raspi] 192.168.3.71 192.168.3.72 192.168.3.73
Auf diesem Weg lassen sich auch verschiedene Gruppen oder Bereiche von Hosts definieren. Für einen ersten Versuch genügen jedoch die drei Beispiel-Hosts. Um zu testen, ob die Installation erfolgreich war, setzen Sie einen einfachen Ping-Befehl ab. Sollte die Ausgabe von jener aus Listing 8 abweichen, überprüfen Sie, ob alle vorherigen Schritte fehlerfrei funktionierten.
Listing 8
$ ansible all -m ping
192.168.3.73 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.3.71 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.3.72 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Nach dem Sicherstellen des fehlerfreien Setups sehen wir uns genau an, was Ansible leistet und wie es funktioniert. Das Ping-Kommando aus der erste Zeile von Listing 8 setzt sich aus folgenden Elementen zusammen: Direkt hinter dem Befehl ansible steht die Host-Gruppe, die Sie ansprechen möchten; all steht hier für alle Hosts aus der Datei /etc/ansible/hosts. Bei größeren Installationen sollten Sie sich aber genau überlegen, ob all eine gute Idee ist.
Die Option -m teilt Ansible mit, ein bestimmtes vordefiniertes Modul aufzurufen, in unserem Fall ping. Ansible bringt eine Vielzahl an Modulen für diverse Einsatzzwecke mit, aus denen Sie sich das für Ihren Anwendungsfall jeweils passende heraussuchen [3].
Module
Das Modul shell ruft, wie der Name andeutet, ein Shell-Kommando auf den Zielsystemen auf. Die Option -s bewirkt ein Ausführen der Befehle mit administrativen Rechten. Mit der Option -a geben Sie den eigentlichen Befehl an, den Sie auf den Zielrechnern ausführen möchten. Mit dem Shell-Modul lässt sich entsprechend schon eine Menge erreichen; vorwiegend aber Aufgaben, die sich mit einem Shell-Skript auch bewerkstelligen ließen.
Listing 9
$ ansible raspi -s -m shell -a 'apt-get update' $ ansible raspi -s -m apt -a 'pkg=nginx state=installed update_cache=true'
Für das Beispiel aus der ersten Zeile von Listing 9 brauchen Sie etwas Geduld: Die Ausgabe erscheint erst, nachdem das Kommando komplett ausgeführt wurde, was bei apt-get update durchaus etwas länger dauert. Nehmen Sie die Ausgabe dieses Kommandos näher unter die Lupe, sticht dabei die Zeile [WARNING]: Consider using apt module rather than running apt-get ins Auge. Sie weist darauf hin, dass es für Apt bereits ein Ansible-Modul gibt, das man verwenden könnte.
Wie zu erwarten dient es dazu, Apt über Ansible auf den Zielrechnern zu steuern. Klicken Sie in der Liste der Ansible-Module [3] auf den entsprechenden Eintrag, erhalten Sie eine sehr detaillierte Beschreibung [4] über die Funktionen und Optionen des Moduls. Am Ende der Webseite finden Sie diverse Anwendungsbeispiele.
Um etwa den Nginx-Webserver auf den RasPi-Hosts zu installieren, genügt der Aufruf aus der zweiten Zeile von Listing 9. Er übergibt dem Apt-Modul den Paketnamen und den erwünschten Status. Rufen Sie den Befehl ein zweites Mal auf, merkt Ansible am Status, dass die Pakete bereits installiert sind, und richtet sie daher nicht erneut ein.
Playbooks
Der Einsatz sogenannter Playbooks erweitert die Funktionalität von Ansible ungemein. Es handelt sich dabei um einfache Textdateien im YAML-Format (“YAML Ain’t Markup Language”), die beschreiben, was Ansible tun soll. Playbooks führen Sie mit folgendem Kommando aus:





