Updates über mehrere Server leicht gemacht


Verwalten Sie mehrere Server? Dann kennen das Problem, wenn Sie zum Beispiel auf allen Ihren VPS Package Updates durchführen oder eine Konfiguration ändern, müssen Sie in jeden einzeln einloggen und die gleiche Aufgabe auf jedem Ihrer Server erledigen.

Das kann eine sehr mühsame Sache sein, die Zeit kostet.

Dafür gibt es jedoch eine elegante Lösung. Mit Ansible können sie eine Vielzahl an Servern von einem einzigen Node aus verwalten.

Ansible Controller-Server

Der Controller-Server (Ansible) verteilt Module auf Ihren Servern über SSH und diese Module werden temporär auf dem jeweiligen Ziel-Server gespeichert und die Nodes kommunizieren mit Ansible über eine JSON-Verbindung über den Standard-Output.

Ansible hat keine Clients, das bedeutet, sie müssen auf den Ziel-Servern keine Software installieren, es laufen dafür auch keine weiteren Prozesse auf diesen Servern. Alles was Sie auf den Ziel-Servern benötigen, ist der SSH-Key vom Controller auf dem Ansible läuft.

Ansible selbst ist auch kein Prozess, sondern im wesentlichen eine Ansammlung von Scripts, die durch Sie als Administrator ausgeführt werden.

Ansible kann hunderte Ziel-Server von einem einzigen Server aus über SSH mit der einfachen Ausführung des Kommandos „ansible“ verwalten. Wenn Sie einen neuen Server installieren, können Sie dafür notwendige Aufgaben in Ansible konfigurieren und so auch gleichzeitig mehrere neue Server aufsetzen. Dieser Prozess wird mit dem Kommando „ansible-playbook“ ausgeführt.

Ansible auf Ubuntu 16.04 installieren

Ansible kann sehr einfach über den Package Manager installiert werden:

sudo apt-get install ansible

Die Datei-Struktur von Ansible

Alle Konfigurationsdateien, die Sie benötigen, finden Sie in /etc/ansible

Hier befindet sich folgende Struktur:

– ansible.cfg
– hosts
d roles
– site.retry
– site.yml

Im Verzeichnis roles sind alle Regeln mit den Aufgaben enthalten, die auf Ihren Ziel-Servern ausgeführt werden sollen.

Es existiert im Verzeichnis roles auch das Verzeichnis _template, welches Sie zum Erstellen einer neuen Regel kopieren können.

Es gibt jedoch auch eine große Anzahl an existierenden Regeln für Ansible auf Galaxy Ansible, welche Sie herunterladen und selbst verwenden können.

Für die detaillierte Konfiguration verweisen wir auf die Originaldokumentation unter docs.ansible.com

Die hosts Datei

Nicht zu verwechseln mit /etc/hosts, ansible hat eine eigene hosts Datei /etc/ansible/hosts. Hier konfigurieren Sie Ihre Server, die Sie auch gruppieren können:

green.example.com
blue.example.com
192.168.100.1
192.168.100.10

[webservers]

alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110

[dbservers]

db01.intranet.mydomain.net
db02.intranet.mydomain.net
10.25.1.56
10.25.1.57

Im ersten Block finden Sie ungruppierte Server. Der nächste Block ist eine Gruppe. Um Aufgaben auf den Ziel-Servern zu starten, können Sie dies auch nur für eine bestimmte Gruppe durchführen, weil Sie bei der Ausführung von Ansible direkt eine Gruppe adressieren können.

Wenn Sie Server-Namen haben, die einem bestimmten Muster folgen, zb. www001.domain.com bis www006.domain.com, so können Sie dies auch einer einzigen Zeile konfigurieren:
www[001:006].domain.com

Beispiele

Sobald Sie Ansible für Ihre Anforderungen konfiguriert haben, können Sie die Aufgaben nun auf allen Servern mit folgendem Kommando ausführen lassen:

$ ansible-playbook /etc/ansible/site.yml

So ist es möglich mehrere Server gleichzeitig zu konfigurieren oder in Kurzer Zeit auch nur einen einzigen aufzusetzen, wie z.b. einen Standard Webserver mit Apache und MySQL.

Mit der Option -l schränken Sie die Server Auswahl auf eine Gruppe oder einen einzelnen Host ein:

$ ansible-playbook /etc/ansible/site.yml -l dbservers

In diesem Fall werden die Aufgaben nur auf den Servern der Gruppe dbservers ausgeführt.

$ ansible-playbook /etc/ansible/site.yml -l alpha.example.org

In diesem Fall werden die Aufgaben nur auf dem Server „alpha.example.org“ ausgeführt.

Möchten Sie nun auf allen Ihren Servern Package Upgrades durchführen, wo Ubuntu installiert ist, können Sie die mit dem Modul „apt“ ausführen:

$ ansible all -m apt -a "upgrade=dist" -f 4

Bevor Sie jedoch Ihre Aufgaben tatsächlich auf den Ziel-Servern von Ansible ausführen lassen, können Sie Ihre Konfiguration mit der Option -C testen. Ansible testet alle Aufgaben, jedoch ohne sie dabei am Ziel-Server auszuführen. So können Sie Ihre Konfiguration testen und gegebenenfalls anpassen.

Mehr information finden Sie direkt in der Dokumentation von Ansible http://docs.ansible.com

Das könnte Sie auch interessieren: