Developer Advocate
Konfigurationsmanagement-Systeme dienen dazu, Administratoren und Bedienerteams die Kontrolle einer größeren Zahl von Servern zu erleichtern. Somit können Sie viele verschiedene Systeme automatisch von einem zentralen Ort aus steuern.
Es gibt zwar viele beliebte Konfigurationsmanagement-Tools für Linux-Systeme (wie Chef und Puppet). Diese sind jedoch oft komplexer als gewünscht oder benötigt. Ansible stellt eine gute Alternative zu diesen Optionen dar, da es eine Architektur aufweist, bei der keine spezielle Software auf Knoten installiert werden muss. Vielmehr werden Automatisierungsaufgaben und YAML-Dateien über SSH ausgeführt, um die Bereitstellungsdetails zu definieren.
In diesem Leitfaden werden wir Ihnen erläutern, wie sich Ansible auf einem Ubuntu 20.04-Server installieren lässt, und uns Grundlagenkenntnisse zur Nutzung dieser Software ansehen. Eine übergeordnete Übersicht über Ansible als Konfigurationsmanagement-Tool finden Sie in Einführung in das Configuration Management mit Ansible.
Um dieser Anleitung zu folgen, benötigen Sie:
Einen Ansible-Steuerknoten: Der Ansible-Steuerknoten ist jener Rechner, den wir zum Verbinden mit und Steuern der Ansible-Hosts über SSH nutzen werden. Ihr Ansible-Steuerknoten kann entweder Ihr lokaler Rechner oder ein spezieller Server zur Ausführung von Ansible sein. In dieser Anleitung gehen wir jedoch davon aus, dass Ihr Steuerknoten ein Ubuntu 20.04-System ist. Stellen Sie sicher, dass der Steuerknoten Folgendes aufweist:
ufw
eine Firewall auf dem Server und aktivieren externen Zugriff auf Ihr Nicht-root-Benutzerprofil. Beides trägt dazu bei, den Remoteserver zu schützen.Einen oder mehrere Ansible-Hosts: Ein Ansible-Host ist jeder Rechner, für dessen Automatisierung Ihr Ansible-Steuerknoten konfiguriert ist. In diesem Leitfaden gehen wir davon aus, dass Ihre Ansible-Hosts Ubuntu 20.04-Remoteserver sind. Stellen Sie sicher, dass jeder Ansible-Host über Folgendes verfügt:
authorized_keys
eines Systembenutzers hinzugefügt wurde. Dieser Benutzer kann entweder ein root- oder ein normaler Benutzer mit sudo-Berechtigungen sein. Um dieses Element einzurichten, können Sie Schritt 2 von Einrichten von SSH-Schlüsseln unter Ubuntu 20.04 folgen.Um Ansible für die Verwaltung Ihrer Serverinfrastruktur nutzen zu können, müssen Sie die Ansible-Software auf dem Rechner installieren, der als Ansible-Steuerknoten dienen wird. Wir nutzen dafür die standardmäßigen Ubuntu-Repositorys.
Aktualisieren Sie zunächst den Paketindex Ihres Systems mit:
- sudo apt update
Nach diesem Update können Sie die Ansible-Software installieren mit:
- sudo apt install ansible
Drücken Sie Y
, wenn Sie zur Bestätigung der Installation aufgefordert werden.
Ihr Ansible-Steuerknoten verfügt nun über die gesamte zur Verwaltung Ihrer Hosts erforderliche Software. Als Nächstes werden wir uns um die Einrichtung einer Inventardatei kümmern, damit Ansible mit Ihren verwalteten Knoten kommunizieren kann.
Die Inventardatei enthält Informationen über die Hosts, die Sie mit Ansible verwalten werden. Sie können in Ihre Inventardatei einen bis mehrere hundert Server einschließen; Hosts lassen sich in Gruppen und Untergruppen anordnen. Die Inventardatei wird oft auch zum Festlegen von Variablen genutzt, die nur für bestimmte Hosts oder Gruppen gültig sein sollen, um in Playbooks und Vorlagen zum Einsatz zu kommen. Einige Variablen können sich auch auf die Ausführung eines Playbooks auswirken, wie beispielsweise die Variable ansible_python_interpreter
, die wir in einem Moment kennenlernen werden.
Um den Inhalt Ihres standardmäßigen Ansible-Inventars zu bearbeiten, öffnen Sie die Datei /etc/ansible/hosts
mit Ihrem bevorzugten Texteditor in Ihrem Ansible-Steuerknoten:
- sudo nano /etc/ansible/hosts
Anmerkung: Ansible erstellt zwar typischerweise eine standardmäßige Inventardatei unter etc/ansible/hosts
, doch können Sie Inventardateien bei Bedarf auch an jedem anderen Ort erstellen. In diesem Fall müssen Sie mit dem Parameter -i
den Pfad zu Ihrer benutzerdefinierten Inventardatei angeben, wenn Ansible-Befehle und Playbooks ausgeführt werden. Die Verwendung von Inventardateien für einzelne Projekte ist eine empfehlenswerte Praxis, um das Risiko zu verringern, dass ein Playbook auf den falschen Servern ausgeführt wird.
Die bei der Ansible-Installation bereitgestellte Standardinventardatei enthält eine Reihe von Beispielen, die Sie als Referenz zur Einrichtung Ihres Inventars verwenden können. Das folgende Beispiel definiert eine Gruppe namens [servers]
mit drei verschiedenen Servern darin, die jeweils durch einen benutzerdefinierten Alias identifiziert werden: server1, server2 und server3. Achten Sie darauf, die hervorgehobenen IP-Adressen durch die IP-Adressen Ihrer Ansible-Hosts zu ersetzen.
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Die Untergruppe all:vars
legt den ansible_python_interpreter
-Hostparameter fest, der für alle Hosts in diesem Inventar gültig ist. Dieser Parameter stellt sicher, dass der Remote-Server die ausführbare Datei /usr/bin/python3
anstelle von /usr/bin/python
(Python 2.7) verwendet, die in neuen Ubuntu-Versionen nicht mehr vorhanden sind.
Wenn Sie fertig sind, speichern und schließen Sie die Datei, indem Sie STRG+X
und dann Y
sowie ENTER
drücken, um Ihre Änderungen zu bestätigen.
Wenn Sie das Inventar überprüfen möchten, können Sie Folgendes ausführen:
- ansible-inventory --list -y
Sie sehen eine Ausgabe, die in etwa wie folgt aussieht, jedoch Ihre eigene Serverinfrastruktur enthält (wie in der Inventardatei definiert):
Outputall:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
Nachdem Sie Ihre Inventardatei konfiguriert haben, haben Sie nun alles, was Sie benötigen, um die Verbindung zu Ihren Ansible-Hosts zu testen.
Nach der Einrichtung der Inventardatei zur Einbindung Ihrer Server werden wir überprüfen, ob Ansible eine Verbindung mit diesen Servern herstellen und Befehle über SSH ausführen kann.
Wir nutzen für diesen Leitfaden das Ubuntu-root-Konto, da es in der Regel das einzige Konto ist, das auf neu erstellten Servern standardmäßig verfügbar ist. Wenn Ihre Ansible-Hosts bereits über einen regulären sudo-Benutzer verfügen, werden Sie dazu aufgefordert, stattdessen dieses Konto zu nutzen.
Sie können das Argument -u
verwenden, um den Remote-Systembenutzer anzugeben. Bei fehlender Angabe wird Ansible versuchen, sich auf dem Kontrollknoten als Ihr aktueller Systembenutzer zu verbinden.
Führen Sie von Ihrem lokalen Rechner oder Ansible-Steuerknoten Folgendes aus:
- ansible all -m ping -u root
Dieser Befehl verwendet das integrierte ping
-Modul von Ansible, um einen Verbindungstest für alle Knoten aus Ihrem Standardinventar auszuführen. Die Verbindung wird dabei als root hergestellt. Das ping
-Modul wird testen:
Sie sollten in etwa folgende Ausgabe sehen:
Outputserver1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Wenn Sie zum ersten Mal über SSH eine Verbindung mit diesen Servern herstellen, werden Sie aufgefordert, die Authentizität der Hosts zu bestätigen, mit denen Sie über Ansible eine Verbindung herstellen. Geben Sie in der Eingabeaufforderung yes
ein und drücken Sie dann ENTER
zur Bestätigung.
Sobald Sie von einem Host einen "pong"
zurückerhalten, sind Sie bereit, Ansible-Befehle und -Playbooks auf diesem Server auszuführen.
Anmerkung: Wenn Sie von Ihren Servern keine erfolgreiche Antwort erhalten, können Sie unseren Ansible-Spickzettel konsultieren, um zu erfahren, wie sich Ansible-Befehle mit verschiedenen Verbindungsoptionen ausführen lassen.
Nachdem Sie bestätigt haben, dass Ihr Ansible-Steuerknoten mit Ihren Hosts kommunizieren kann, können Sie mit der Ausführung von Ad-hoc-Befehlen und Playbooks auf Ihren Servern beginnen.
Alle Befehle, die Sie normalerweise auf einem Remoteserver über SSH ausführen würden, können mit Ansible auf den in Ihrer Inventardatei angegebenen Servern ausgeführt werden. Beispielsweise können Sie die Festplattennutzung auf allen Servern überprüfen mit:
- ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0
...
Der hervorgehobene Befehl df -h
kann durch einen beliebigen Befehl Ihrer Wahl ersetzt werden.
Sie können Ansible-Module auch über Ad-hoc-Befehle ausführen, ähnlich wie zuvor mit dem ping
-Modul zum Testen der Verbindung. Wir können beispielsweise das apt
-Modul nutzen, um auf allen Servern in Ihrem Inventar die neueste Version von vim
zu installieren:
- ansible all -m apt -a "name=vim state=latest" -u root
Außerdem können Sie bei der Ausführung von Ansible-Befehlen gezielt einzelne Hosts sowie Gruppen und Untergruppen auswählen. So würden Sie beispielsweise die Verfügbarkeit
der einzelnen Hosts in der Gruppe Server
überprüfen:
- ansible servers -a "uptime" -u root
Wir können mehrere Hosts angeben, indem wir diese mit Doppelpunkten trennen:
- ansible server1:server2 -m ping -u root
Weitere Informationen zur Verwendung von Ansible, einschließlich der Ausführung von Playbooks zum Automatisieren der Servereinrichtung, finden Sie in unserem Ansible-Referenzleitfaden.
In diesem Leitfaden haben Sie Ansible installiert und eine Inventardatei eingerichtet, um von einem Ansible-Steuerknoten ausAd-hoc-Befehle auszuführen.
Nachdem Sie überprüft haben, dass Sie Ihre Infrastruktur von einem zentralen Ansible-Steuerknoten aus verbinden und verwalten können, können Sie auf diesen Hosts beliebige Befehle oder Playbooks ausführen.
Weitere Informationen zur Verwendung von Ansible finden Sie in unserem Ansible-Spickzettel.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.