Installieren und Testen von Ansible unter Linux

Ansible ist ein weit verbreitetes Konfigurationsmanagement-Tool, das in der Sprache Python geschrieben ist und dabei hilft, einzelne oder mehrere Maschinen gleichzeitig zu konfigurieren. Mit Ansible können folgende Aufgaben durchgeführt werden

  • Neukonfiguration von einzelnen oder mehreren Knoten
  • Einführungen
  • Konfigurationsänderungen
  • Patching
  • Service-Management
  • und viele mehr

Ansible ist wegen seiner Einfachheit weit verbreitet. Der Code von Ansible ist in der Sprache YAML geschrieben und benötigt keinen Agenten, der auf einem entfernten Rechner installiert werden muss. Ansible verwendet Port 22 (SSH), um sich mit einem entfernten Rechner zu verbinden und die notwendigen Änderungen vorzunehmen.

Jeder Rechner, der sich über Port 22 mit dem entfernten Rechner verbinden kann, kann ein Kontrollknoten werden. Ein Kontrollknoten ist der Ort, an dem man Ansible installieren kann und ein verwalteter Knoten wird von Kontrollknoten verwaltet.

Lassen Sie uns einen Blick auf die Installation von Ansible auf dem Kontrollknoten werfen.

Installieren Sie Ansible auf CentOS 7:

Da Python die einzige Voraussetzung für die Installation von Ansible ist, installieren wir Python, indem wir den folgenden Befehl ausführen.

$sudo yum install python3 -y

Um Ansible auf CentOS 7 zu installieren, stellen Sie zunächst sicher, dass das CentOS 7 EPEL-Repository installiert ist. Führen Sie den folgenden Befehl aus, um das EPEL-Repository zu installieren.

$sudo yum install epel-release

Aktualisieren Sie den Systempaketindex, indem Sie den unten stehenden Befehl update ausführen.

$sudo yum update -y

Nachdem das Repository installiert ist, installieren Sie Ansible mit dem yum-Paketmanager. Führen Sie den unten genannten Befehl aus, um Ansible zu installieren.

$sudo yum install ansible -y

Überprüfen Sie, ob Ansible richtig installiert ist und welche Version es hat.

$ansible -v

Installieren Sie Ansible auf CentOS 8:

Lassen Sie uns die Installationsschritte für CentOS 8 betrachten. Installieren wir Python auf CentOS 8.

$sudo dnf install python3

Nachdem Python installiert ist, installieren wir das EPEL-Repository, indem wir den folgenden Befehl ausführen.

$sudo dnf install epel-release -y

Aktualisieren Sie den Systempaketindex, indem Sie den folgenden Update-Befehl ausführen.

$sudo dnf update -y

Wir sind nun bereit, Ansible zu installieren. Führen Sie den folgenden Befehl aus, um Ansible zu installieren.

$sudo dnf install ansible -y

Überprüfen Sie, ob Ansible richtig installiert ist und welche Version es hat.

$ansible -v

Installieren Sie Ansible unter Ubuntu:

Python ist heutzutage ein Standardpaket in den meisten Linux-Distributionen. Wenn Sie Python nicht installiert haben, führen Sie den folgenden Befehl aus, um das Python-Paket zu installieren.

$sudo apt-get install python3

Um Ansible in Ubuntu zu installieren, installieren wir zuerst das Repository, indem wir den folgenden Befehl ausführen.

$sudo apt-add-repository ppa:ansible/ansible

Aktualisieren Sie den System-Paketindex, indem Sie den unten stehenden Befehl update ausführen.

$sudo apt-get update -y

Installieren Sie nun Ansible.

$sudo apt-get install -y ansible

Überprüfen Sie, ob Ansible richtig installiert ist und welche Version es hat.

$ansible -v

Installieren Sie Ansible mit Python PIP auf CentOS, Debian und Ubuntu:

Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie Ansible mit dem Python-Paketinstaller installieren. Führen wir den folgenden Befehl aus, um python3-pip zu installieren.

Für CentOS 7 und darunter:

$sudo yum install python3 python3-pip -y

Für CentOS 8:

$sudo dnf install python3 python3-pip -y

Für Ubuntu und Debian:

$sudo apt-get install python3 python3-pip

Als wir python und pip installiert haben, führen wir den folgenden Befehl auf jedem Betriebssystem aus, um Ansible zu installieren.

$sudo pip3 install ansible

Überprüfen Sie, ob Ansible richtig installiert ist und welche Version es hat.

$ansible -v

Konfiguration der Ansible-Controller-Hosts:

Wir müssen zuerst die Datei „hosts“ einrichten, bevor wir mit unseren anderen Knoten kommunizieren können. Diese Datei enthält alle IP- oder Hostnamen der verwalteten Knoten.

Hinweis: Es ist nicht immer notwendig, eine Hosts-Datei zu verwenden, um sich mit verwalteten Knoten zu verbinden. Aber dann müssen wir jedes Mal die IP oder den Hostnamen des Servers des verwalteten Knotens verwenden, während wir jeden Befehl ausführen.

Erstellen Sie die Datei (falls sie noch nicht vorhanden ist) mit Root-Rechten, indem Sie den folgenden Befehl ausführen:

$sudo touch /etc/ansible/hosts

Bevor Sie in die Datei schreiben, lassen Sie uns einen Blick darauf werfen und die Beispiel-Hosts-Datei verstehen:


alias ansible_ssh_host=your_node_server_ip

Eine Hosts-Datei sollte der obigen Syntax folgen. Schauen wir uns die einzelnen Parameter an.

: Mit diesem Parameter wird eine Gruppe erstellt. Alle IP-Adressen oder Hostnamen der verwalteten Knoten unter dem Parameter group_name fallen in dieselbe Gruppe. Wenn wir zum Beispiel mehrere Webserver in unserer Infrastruktur haben, können wir hier alle IP-Adressen oder Hostnamen des verwalteten Knotens hinzufügen.

alias: Dieser Parameter wird verwendet, um dem verwalteten Knotenserver einen Alias zu geben, um den verwalteten Knotenserver zu identifizieren. Wenn wir zum Beispiel mehrere Webserver in unserer Infrastruktur haben, können wir host1, host2, host3 als Alias angeben. Der Hauptvorteil der Vergabe von Aliasen ist, dass wir, wenn wir den Ansible-Befehl ausführen, um die Konfiguration eines einzelnen Servers zu ändern, einen Alias verwenden können, um die erforderliche Aufgabe auf dem Server zu identifizieren und durchzuführen.

ansible_ssh_host=Ihre_node_server_ip: Dieser Parameter verweist den Alias auf eine verwaltete Knoten-IP-Adresse oder einen Hostnamen.

Wir werden das CentOS 8 als kontrollierten Knoten mit Ansible verwenden. Wie oben erwähnt, verwendet Ansible den Port 22 des Remote-Hosts für die Verbindung.

Wir nehmen an, dass die IP-Adressen unserer CentOS-Managed-Node-Server 192.168.0.2, 192.168.0.3 und 192.168.0.4 lauten.

Um dem Ansible-Controller-Node die Kommunikation mit den Managed Nodes zu ermöglichen, müssen wir bestätigen, dass die Managed Nodes über Port 22 erreichbar sind, der ein SSH-Port ist. Führen Sie den folgenden Befehl aus, um die Konnektivität nacheinander auf allen drei verwalteten Knoten vom Controller aus zu bestätigen.

$ssh [email protected]
$ssh [email protected]
$ssh [email protected]

Sie werden aufgefordert, das Passwort des Root-Benutzers aller Knoten einzugeben. Ansible funktioniert sehr reibungslos, wenn Sie eine passwortlose Authentifizierung zwischen dem Ansible-Controller und den verwalteten Knoten konfiguriert haben. Mit verschiedenen Parametern im Ansible-Befehl kann die Passwort-Authentifizierung auch funktionieren.

Da wir die ssh-Konnektivität zwischen dem Ansible-Controller und den verwalteten Knoten konfiguriert haben, müssen wir die hosts-Datei so konfigurieren, dass sie eine Verbindung zu allen verwalteten Knoten herstellt. Wie bereits erwähnt, können wir mehrere Node-Server-Aliase in einer einzigen Gruppe hinzufügen. In diesem Fall fügen wir alle drei Knoten hinzu und weisen ihnen jeweils einen Alias als host1, host2 und host3 zu. Unsere hosts-Datei sollte nach dem Hinzufügen aller verwalteten Node-Details wie unten aussehen. Führen Sie den folgenden Befehl aus, um die Hosts-Datei zu bearbeiten, die wir zuvor erstellt haben.

Öffnen Sie die Datei mit Root-Rechten, indem Sie den folgenden Befehl ausführen:

$sudo vi /etc/ansible/hosts

Lassen Sie uns die unten erwähnte Konfiguration in der hosts-Datei hinzufügen.


host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Hier haben wir alle verwalteten Knoten-IPs und Aliase in einer Gruppe namens node_servers hinzugefügt.

Lassen Sie uns nun versuchen, eine Verbindung zu den verwalteten Knoten vom Ansible-Controller aus herzustellen.

$ansible -m ping node_servers

Der obige Befehl verwendet das Modul ping, um sich mit der Gruppe „node_servers“ zu verbinden, die wir oben in der hosts-Datei definiert haben.

Es können aus verschiedenen Gründen Fehler auftreten.

  1. Ansible versucht standardmäßig, sich mit dem verwalteten Knoten unter Verwendung des aktuellen Benutzernamens zu verbinden, wenn Sie keinen angegeben haben. Wenn dieser Benutzer auf dem Node-Server nicht existiert, erhalten Sie die folgende Fehlermeldung.
  2. Wenn der ssh-Port 22 auf den verwalteten Nodes nicht für eine Verbindung geöffnet ist. (Wie bereits erwähnt, stellt Ansible eine Verbindung über den ssh-Port her)
  3. Wenn die IP in der Hosts-Datei nicht korrekt ist.

Wenn eine der oben genannten Bedingungen nicht erfüllt ist, erhalten Sie den folgenden Fehler.

host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}

Sagen wir Ansible ausdrücklich, dass es sich mit verwalteten Knoten in der Gruppe „node_servers“ mit dem Benutzer james verbinden soll. Erstellen Sie das Verzeichnis „group_vars“ wie unten beschrieben.

$sudo mkdir /etc/ansible/group_vars

Die Dateien in diesem Verzeichnis werden speziell zur Konfiguration von Variablen verwendet, die wir in unseren Ansible-Playbooks verwenden können.

Lassen Sie uns eine Variablendatei für unser Setup erstellen, indem wir den folgenden Befehl ausführen:

$sudo vim /etc/ansible/group_vars/node_servers.yml

Fügen Sie der Datei folgenden Code hinzu:

---
ansible_ssh_user: james

YML-Dateien beginnen immer mit „—“ in der ersten Zeile. Speichern und schließen Sie diese Datei, wenn Sie fertig sind. Jetzt wird Ansible immer den Benutzer james für die Gruppe node_servers verwenden, unabhängig davon, mit welchem Benutzer Sie gerade einen Befehl ausführen.

Überprüfen Sie die Verbindung des verwalteten Knotens:

Nun, da wir unsere Hosts eingerichtet haben und genügend Konfigurationsdetails haben, um uns erfolgreich mit unseren verwalteten Knoten zu verbinden, können wir denselben Befehl ausprobieren, den wir zuvor ausgeführt haben.

$ansible -m ping servers 

Ansible wird eine Ausgabe wie diese zurückgeben:

host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host3 | SUCCESS => {„changed“: false, „ping“: „pong“}

Dies ist ein grundlegender Test, um sicherzustellen, dass Ansible eine Verbindung zu seinen verwalteten Knoten hat.

Abschluss:

Es ist nicht notwendig, das CentOS-Betriebssystem für verwaltete Knoten zu verwenden. Sie können die gleiche Testkonfiguration, die wir oben verwendet haben, für CentOS, RedHat, Ubuntu und jede andere Linux-Distribution verwenden.

How To Install and Test Ansible on Linux

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.