Ansible Anleitung · 8 min read · Dec 19, 2025
Ansible auf Ubuntu 20.04 installieren und konfigurieren

Ansible ist ein sehr beliebtes Konfigurationsmanagement-Tool, das entwickelt wurde, um den Prozess der Steuerung einer großen Anzahl von Servern zu optimieren. Sie können so viele Server steuern und Prozesse gleichzeitig von einem einzelnen Knoten aus ausführen.
Ansible erfordert keine spezielle Software, die auf den Serverknoten installiert werden muss, und kann sie über SSH steuern.
In diesem Leitfaden lernen wir, wie man Ansible auf einem Ubuntu 20.04-Server installiert und konfiguriert.
Voraussetzungen
- Zwei oder mehr Ubuntu 20.04-basierte Serversysteme mit installiertem OpenSSH-Server.
- Sowohl der Server als auch die Knoten sind über öffentliche IP-Adressen zugänglich.
- Ein Nicht-Root-Benutzer mit Sudo-Rechten, der auf dem Ansible-Server eingerichtet ist, und ein Root-Benutzer mit einem Passwort, das auf den Ansible-Clients eingerichtet ist.
Ansible installieren
Das offizielle Repository von Ansible unterstützt Ubuntu 20.04 aufgrund eines Fehlers in der Python-Bibliothek von Ubuntu zum Zeitpunkt des Schreibens dieses Tutorials nicht.
Glücklicherweise wird Ubuntu mit Ansible 2.9 ausgeliefert, das wir installieren werden. Führen Sie den folgenden Befehl aus, um Ansible zu installieren.
$ sudo apt install ansible -yTesten Sie Ihre Installation, indem Sie den folgenden Befehl ausführen.
$ ansible --version
ansible 2.9.6
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/username/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]Inventar-Datei einrichten
Um sich mit mehreren Hosts verbinden zu können, benötigen Sie eine Datei, die die Details der Knoten aufzeichnet. Diese Datei wird als Inventar-Datei bezeichnet.
Je nachdem, wie viele Server Sie steuern möchten, ermöglicht die Inventar-Datei von Ansible auch, sie in Gruppen und Untergruppen anzuordnen. Sie können auch benutzerdefinierte Variablen festlegen, die für ausgewählte Hosts oder Gruppen gelten, die dann beim Übermitteln der Anweisungen weiterverwendet werden können.
Ansible wird mit einer Standard-Inventar-Datei geliefert, die unter /etc/ansible/hosts verfügbar ist. Öffnen Sie sie mit dem Nano-Editor.
$ sudo nano /etc/ansible/hostsFügen Sie den folgenden Code am Ende der Datei ein.
[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/python3Der Abschnitt servers definiert die Liste der Knoten, mit denen Sie sich verbinden möchten. Sie können so viele Gruppen erstellen, um Server in mehreren Gruppen anzuordnen.
Die Gruppe all:vars setzt den Parameter ansible_python_interpreter für alle Hosts im Inventar. Sie stellt sicher, dass Ansible die Python 3-Ausführungsdatei anstelle von Python 2 verwendet, das in den neuesten Ubuntu-Versionen entfernt wurde.
Wenn Sie fertig sind, speichern und schließen Sie die Datei, indem Sie CTRL+X und dann Y und ENTER drücken, um Ihre Änderungen zu bestätigen.
Hinweis: Sie können auch Ihre eigene Inventar-Datei an einem beliebigen Ort Ihrer Wahl erstellen, die Sie dann mit dem -i-Parameter beim Ausführen von Ansible-Befehlen übergeben können.
Sie können Ihre Inventarliste mit dem folgenden Befehl überprüfen.
$ ansible-inventory --list -y
all:
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: {}Server in Gruppen und Untergruppen organisieren
Dies ist ein nützlicher Tipp, wenn Sie viele Server haben, wobei einige Server spezifische Funktionen ausführen. Zum Beispiel können Sie diese Methode verwenden, um Webserver und Datenbankserver separat zu gruppieren. Sie können sogar einen Host Teil mehrerer Gruppen machen. Um dies zu erreichen, sollte Ihre Inventar-Datei ungefähr wie folgt aussehen.
[webservers]
203.0.113.111
203.0.113.112
[dbservers]
203.0.113.113
server_hostname
[development]
203.0.113.111
203.0.113.113
[production]
203.0.113.112
server_hostnameSSH-Schlüssel einrichten
Damit Ansible sich mit den Servern verbinden kann, müssen Sie SSH-Schlüssel zwischen Ihrem Ansible-Server und den in der Inventar-Datei angegebenen Hosts konfigurieren. Dies funktioniert nur, wenn die Ansible-Clients keinen öffentlichen Schlüssel aktiviert haben und ein Root-Konto mit einem Passwort aktiviert ist.
Befolgen Sie die folgenden Schritte, um einen SSH-Schlüssel für Ansible und seine Knoten zu erstellen und einzurichten.
Erstellen Sie den Schlüssel für Ansible.
$ ssh-keygen -t rsa -b 4096 -C "Ansible key"Kopieren Sie den öffentlichen Schlüssel auf Ihre Konten auf den Remote-Servern. Dazu verwenden wir den Befehl ssh-copy-id.
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]Das ist alles. Jetzt sollte Ansible in der Lage sein, mit Ihren Servern zu kommunizieren.
SSH-Schlüssel auf Knoten mit vorhandenem öffentlichem Schlüssel einrichten
Wenn die Clients bereits öffentliche Schlüssel aktiviert haben, müssen Sie bestimmte zusätzliche Schritte befolgen. Dazu müssen Sie einen neuen Benutzer erstellen, der nur von Ansible auf jedem Knotenserver zugänglich ist. Dieser Benutzer hat Sudo-Rechte, die ohne Passwort zugänglich sind, und kann nur von Ihrem Ansible-Server aus aufgerufen werden.
Um einen ansible-Benutzer zu erstellen, führen Sie den folgenden Befehl aus.
$ sudo adduser ansibleWählen Sie ein starkes Passwort und lassen Sie alle anderen Felder leer.
Konfigurieren Sie nun den passwortlosen Sudo-Zugriff für diesen Benutzer mit dem folgenden Befehl.
$ echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansibleJetzt, da Sie den neuen Benutzer hinzugefügt und konfiguriert haben, können Sie den SSH-Schlüssel von Ihrem Ansible-Server auf den Knotenserver mit dem folgenden Befehl kopieren.
$ ssh-copy-id [email protected]Sie werden nach dem Passwort für den Ansible-Benutzer gefragt. Geben Sie es ein, und der SSH-Schlüssel wird kopiert.
Als Nächstes deaktivieren Sie die passwortbasierte Anmeldung für den ansible-Benutzer auf dem Knotenserver.
$ sudo usermod -L ansibleJetzt ist Ihr Knotenserver nur vom Ansible-Server aus zugänglich, da nur dieser Server den öffentlichen Schlüssel dafür hat, und Sie können ihn nicht direkt mit Sudo-Rechten auf dem Knotenserver verwenden, da die Passwortanmeldung deaktiviert ist.
Sie müssen diese Schritte für jeden Knotenserver wiederholen. Ersetzen Sie auch den root-Benutzer durch den ansible-Benutzer in diesem Tutorial.
Verbindung testen
Nachdem Sie die Inventar-Datei und die SSH-Schlüssel eingerichtet haben, sollten wir überprüfen, ob Ansible in der Lage ist, sich mit den Servern zu verbinden.
Geben Sie den folgenden Befehl ein, um die Verbindung zu überprüfen. Dieser Befehl testet die Verbindung zu allen Servern aus der Inventar-Datei.
$ ansible all -m ping -u rootDieser Befehl verwendet das Ping-Modul von Ansible, um einen Konnektivitätstest auf allen Servern durchzuführen. Sie sollten eine Ausgabe wie die folgende erhalten.
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server3 | SUCCESS => {
"changed": false,
"ping": "pong"
}Wenn Sie Ansible zum ersten Mal verwenden, werden Sie aufgefordert, die Authentizität aller Server zu bestätigen. Wenn Sie dazu aufgefordert werden, geben Sie yes ein und drücken Sie ENTER, um Ihre Änderungen zu bestätigen.
Führen Sie einige grundlegende Befehle aus
Lassen Sie uns einige grundlegende Befehle auf den Servern mit Ansible ausführen. Um einen Befehl auf dem Server auszuführen, wird das folgende Format verwendet.
$ ansible all -a "command" -u Überprüfen Sie die Festplattennutzung
Zuerst lassen Sie uns die Festplattennutzung auf allen unseren Servern überprüfen.
$ ansible all -a "df -h" -u root
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/0Zielgerichtete Einzelhosts und Gruppen
Bis jetzt haben wir Befehle auf allen Remote-Servern gleichzeitig ausgeführt. Aber das ist nicht immer der Fall. Um einen Befehl nur auf einem Server auszuführen, sollten Sie das folgende Format verwenden.
$ ansible server1 -a "uptime" -u root
server1 | CHANGED | rc=0 >>
21:38:26 up 11 min, 2 users, load average: 0.00, 0.20, 0.19Der obige Befehl überprüft die Betriebszeit auf server1 aus der Inventargruppe.
Sie können auch mehrere Server mit dem folgenden Format anvisieren.
$ ansible server1:server2 -m ping -u rootSie können auch Gruppen oder Untergruppen direkt aus der Inventar-Datei anvisieren.
$ ansible groupname -m ping -u Alle Server aktualisieren
Für dieses Tutorial gehen wir davon aus, dass alle Remote-Server Debian oder Ubuntu OS ausführen.
Führen Sie den folgenden Befehl aus, um die Software auf allen Ihren Servern zu aktualisieren.
$ ansible all -m apt -a "update_cache=yes upgrade=yes" -u rootDer Parameter -m definiert das Modul, das Ansible ausführen soll. -a bezieht sich auf die Argumente oder Befehle für das zugehörige Modul. Hier verwenden wir das apt-Modul von Ansible, um Server zu aktualisieren, genau wie wir das ping-Modul in unserem letzten Beispiel verwendet haben. update_cache aktualisiert den APT-Cache auf dem Server und upgrade=yes sagt Ansible, dass der Befehl apt upgrade ausgeführt werden soll.
Um Ihre CentOS-Server zu aktualisieren, können Sie denselben Befehl verwenden, indem Sie apt durch yum ersetzen, und für Fedora-Server können Sie apt durch dnf ersetzen.
Wenn Sie den ansible-Benutzer wie oben dokumentiert verwenden, müssen Sie den ansible-Befehl so ändern, dass er mit erhöhten Sudo-Rechten ausgeführt wird.
$ ansible server2 -m apt -a "update_cache=yes upgrade=yes" -K -b -u ansibleHier fragt -K nach dem Passwort für die Privilegieneskalation. -b führt die Ansible-Operation mit become aus, was es Ihnen ermöglicht, als ein anderer Benutzer zu agieren. Beide Variablen zusammen ermöglichen es Ansible, mit erhöhten Sudo-Rechten zu arbeiten. Sie müssen dies für alle Befehle verwenden, die Sudo-Rechte erfordern.
Manchmal erfordern einige dieser Aktualisierungsbefehle einen Neustart, also führen Sie den folgenden Befehl aus, um alle Ihre Server neu zu starten.
$ ansible all -a "reboot" -u rootDas waren nur einige der grundlegenden Befehle, die Sie mit Ansible ausführen können.
Fazit
Das war unser Tutorial zur Installation und Konfiguration von Ansible auf einem Ubuntu 20.04-basierten Server. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.