Updates über mehrere Server leicht gemacht
, 15. 08. 2020 - 15:22Verwaltest Du mehrere Server? Dann kennst Du das Problem, wenn Du zum Beispiel auf allen Deinem VPS Package Updates durchführst oder eine Konfiguration änderst, dann musst Du Dich bei jeden einzeln einloggen und die gleiche Aufgabe auf jedem Deiner Server erledigen.
Das kann eine sehr mühsame Sache sein, die Zeit kostet.
Dafür gibt es jedoch eine elegante Lösung. Mit Ansible kannst Du eine Vielzahl an Servern von einem einzigen Node aus verwalten.
Ansible Controller-Server
Der Controller-Server (Ansible) verteilt Module auf Deinen 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, Du musst auf den Ziel-Servern keine Software installieren, es laufen dafür auch keine weiteren Prozesse auf diesen Servern. Alles was Du auf den Ziel-Servern benötigst, ist der SSH-Key vom Controller auf dem Ansible läuft.
Ansible selbst ist auch kein Prozess, sondern im wesentlichen eine Ansammlung von Scripts, welche durch Dich 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 Du einen neuen Server installierst, kannst Du 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 Du benötigst, findest Du 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 Deinen Ziel-Servern ausgeführt werden sollen.
Es existiert im Verzeichnis roles
auch das Verzeichnis _template
, welches Du zum Erstellen einer neuen Regel kopieren kannst.
Es gibt jedoch auch eine große Anzahl an existierenden Regeln für Ansible auf Galaxy Ansible, welche Du herunterladen und selbst verwenden kannst.
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 konfigurierst Du Deine Server, welche Du auch gruppieren kannst:
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 findest Du ungruppierte Server. Der nächste Block ist eine Gruppe. Um Aufgaben auf den Ziel-Servern zu starten, kannst Du dies auch nur für eine bestimmte Gruppe durchführen, weil Du bei der Ausführung von Ansible direkt eine Gruppe adressieren kannst.
Wenn Du Server-Namen hast, die einem bestimmten Muster folgen, zb. www001.domain.com bis www006.domain.com, so kannst Du dies auch in einer einzigen Zeile konfigurieren:www[001:006].domain.com
Beispiele
Sobald Du Ansible für Deine Anforderungen konfiguriert hast, kannst Du 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änkst Du 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öchtest Du nun auf allen Ihren Servern Package Upgrades durchführen, wo Ubuntu installiert ist, kannst Du die mit dem Modul „apt“ ausführen:
$ ansible all -m apt -a "upgrade=dist" -f 4
Bevor Du jedoch Deine Aufgaben tatsächlich auf den Ziel-Servern von Ansible ausführen lässt, kannst Du Deine Konfiguration mit der Option -C
testen. Ansible testet alle Aufgaben, jedoch ohne sie dabei am Ziel-Server auszuführen. So kannst Du Deine Konfiguration testen und gegebenenfalls anpassen.
Mehr information findest Du direkt in der Dokumentation von Ansible http://docs.ansible.com
Updates
« zurück