Wie installiert und testet man Ansible unter Linux?

Ansible ist ein weit verbreitetes, in der Sprache Python geschriebenes Konfigurationsmanagement-Tool, mit dessen Hilfe einzelne oder mehrere Maschinen gleichzeitig konfiguriert werden können. Ansible kann verwendet werden, um folgende Aufgaben auszuführen

  • Konfiguration von Grund auf von einzelnen oder mehreren Knoten
  • Einsätze
  • Änderungen der Konfiguration
  • patchen.
  • Dienstverwaltung
  • und viele andere

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

Jeder Rechner, der sich mit dem entfernten Rechner an Port 22 verbinden kann, kann ein steuernder Knoten werden. Ein steuernder Knoten ist ein Knoten, auf dem Sie Ansible installieren können, und ein verwalteter Knoten wird von steuernden Knoten verwaltet.

Werfen wir einen Blick auf die Installation von Ansible auf dem Controller-Knoten.

Installieren Sie Ansible auf CentOS 7:

Da Python die einzige Voraussetzung für die Installation von Ansible ist, wollen wir Python installieren, indem wir den untenstehenden 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 Aktualisierungsbefehl ausführen.

$sudo yum update -y

Sobald 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 ob es die richtige Version ist.

$ansible -v

Installieren Sie Ansible auf CentOS 8:

Schauen wir uns die Installationsschritte für CentOS 8 an. Lassen Sie uns Python auf CentOS 8 installieren.

$sudo dnf install python3

Sobald Python installiert ist, lassen Sie uns EPEL Repo installieren, indem wir den unten stehenden Befehl ausführen.

$sudo dnf install epel-release -y

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

$sudo dnf update -y

Wir sind jetzt 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 korrekt installiert ist und ob es die richtige Version 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, lassen Sie uns zuerst das Repository installieren, indem wir den untenstehenden Befehl ausführen.

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

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

$sudo apt-get update -y

Installieren Sie nun Ansible.&nbsp.

$sudo apt-get install -y ansible

Überprüfen Sie, ob Ansible korrekt installiert ist und seine Version.

$ansible -v

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

Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie Ansible mit dem Python-Paket-Installationsprogramm installieren. Lassen Sie uns den folgenden Befehl ausführen, um python3-pip zu installieren.

Für CentOS 7 und darunter:

$sudo yum install python3 python3-pip -y

Das Betriebssystem CentOS 8:

$sudo dnf install python3 python3-pip -y

Für Ubuntu und Debian:

$sudo apt-get install python3 python3-pip

Da wir Python und Pip installiert haben, lassen Sie uns den unten stehenden Befehl auf jedem Betriebssystem ausführen, um Ansible zu installieren.

$sudo pip3 install ansible

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

$ansible -v

Konfigurieren möglicher Controller-Hosts:

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

Hinweis: Es ist nicht immer erforderlich, eine hosts-Datei zu verwenden, um eine Verbindung zu verwalteten Knoten herzustellen. Aber dann müssen wir jedes Mal bei der Ausführung jedes Befehls die IP oder den Hostnamen des Servers des verwalteten Knotens verwenden.

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

$sudo touch /etc/ansible/hosts

Bevor wir in die Datei schreiben, wollen wir uns die Beispieldatei hosts ansehen und verstehen:

[group_name]
alias ansible_ssh_host=your_node_server_ip

Eine hosts-Datei sollte der obigen Syntax folgen. Werfen wir einen Blick auf jeden Parameter.

[Gruppenname]: Dieser Parameter erzeugt eine Gruppe. Alle verwalteten Knoten-IP-Adressen oder Hostnamen unter dem Parameter group_name fallen in die gleiche Gruppe. Wenn wir beispielsweise mehrere Webserver in unserer Infrastruktur haben, können wir hier alle IP-Adressen oder die Hostnamen des verwalteten Knotens hinzufügen.

alias: Dieser Parameter wird verwendet, um dem verwalteten Knotenserver einen Alias zur Identifizierung des verwalteten Knotenservers zu geben. Wenn wir zum Beispiel mehrere Webserver in unserer Infrastruktur haben, können wir host1, host2, host3 als Alias angeben. Der Hauptvorteil der Angabe eines Alias besteht darin, dass wir, wenn wir den Befehl Ansible ausführen werden, um die Konfiguration eines einzelnen Servers zu ändern, einen Alias verwenden können, um die erforderliche Aufgabe auf dem Server zu identifizieren und auszuführen.

ansible_ssh_host=Ihr_Knoten_server_ip: Dieser Parameter verweist den Alias auf die IP-Adresse oder den Hostnamen eines verwalteten Knotens.

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

Wir gehen davon aus, dass die IP-Adressen unseres CentOS-verwalteten Knotenservers 192.168.0.2, 192.168.0.3 und 192.168.0.4 lauten.

Damit der Ansible-Controller-Knoten mit verwalteten Knoten kommunizieren kann, müssen wir bestätigen, dass verwaltete Knoten auf Port 22, der ein SSH-Port ist, zugänglich sind. Führen Sie den unten stehenden 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 kennwortlose Authentifizierung zwischen dem Ansible-Controller und verwalteten Knoten konfiguriert haben. Mit verschiedenen Parametern im Ansible-Befehl kann auch die Passwortauthentifizierung funktionieren.

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

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

$sudo vi /etc/ansible/hosts

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

[node_servers]
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.

Versuchen wir nun, vom Ansible-Controller aus eine Verbindung zu verwalteten Knoten herzustellen.

$ansible -m ping node_servers

Der obige Befehl verwendet einen Modul-Ping, um eine Verbindung mit der Gruppe „node_servers“ herzustellen, die wir oben in der Datei hosts definiert haben.

Sie können aus verschiedenen Gründen auf Fehler stoßen.

  1. Ansible wird standardmäßig versuchen, sich mit dem verwalteten Knoten unter Ihrem aktuellen Benutzernamen zu verbinden, falls Sie keinen angegeben haben. Wenn dieser Benutzer auf dem Knotenserver nicht existiert, erhalten Sie die untenstehende Fehlermeldung.
  2. Wenn ssh-Port 22 nicht für Verbindungen auf verwalteten Knoten geöffnet ist. (Wie bereits erwähnt, verbindet Ansible auf dem ssh-Port)
  3. Wenn die IP in der hosts-Datei nicht korrekt ist.

Wenn eine der obigen Bedingungen fehlschlägt, werden Sie den untenstehenden Fehler feststellen.

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
}

Lassen Sie uns Ansible ausdrücklich mitteilen, dass es eine Verbindung zu verwalteten Knoten in der Gruppe „node_servers“ mit dem Benutzer james herstellen soll. Erstellen Sie das Verzeichnis group_vars wie unten erwähnt.

$sudo mkdir /etc/ansible/group_vars

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

Lassen Sie uns eine variable Datei für unser Setup erstellen, indem wir den unten stehenden Befehl ausführen:

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

Fügen Sie untenstehenden Code in die Datei ein:

---
ansible_ssh_user: james

YML-Datei beginnt immer mit „—“ in der ersten Zeile. Lassen Sie uns diese Datei speichern und schließen, wenn Sie fertig sind. Nun wird Ansible immer den Benutzer james für die Gruppe node_servers verwenden, unabhängig vom aktuellen Benutzer, den Sie zur Ausführung eines Befehls verwenden.

Überprüfen Sie die Verbindung des verwalteten Knotens:

Nun, da wir unsere Hosts eingerichtet und genug 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 => { „geändert
„: falsch, „ping“: „pong“ }

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

Schlussfolgerung:

Es ist nicht erforderlich, das CentOS-Betriebssystem für verwaltete Knoten zu verwenden. Sie können dieselbe Testkonfiguration verwenden, die wir oben für CentOS, RedHat, Ubuntu und alle anderen Linux-Distributionen verwendet haben.

Das könnte Dich auch interessieren …