Ansible unter Red Hat Enterprise Linux installieren

Red Hat Enterprise LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie Ansible Core auf einem Red Hat Enterprise Linux (RHEL) System installieren. Ansible ist ein leistungsstarkes Automatisierungstool, mit dem Sie Systeme verwalten und konfigurieren, Anwendungen bereitstellen und komplexe IT-Workflows orchestrieren können.

Sie verwenden den Paketmanager dnf mit sudo-Rechten, um das Paket ansible-core zu installieren, das die Ansible-Engine und die Befehlszeilentools bereitstellt. Nach der Installation überprüfen Sie die korrekte Funktionsweise von Ansible, indem Sie die Version abrufen und grundlegende Befehle ausführen.

Dies ist eine grundlegende Fähigkeit für Systemadministratoren und DevOps-Ingenieure, die mit Red Hat Enterprise Linux-Systemen arbeiten.

Ansible Core mit dnf installieren

In diesem Schritt installieren Sie das Paket ansible-core mithilfe des dnf-Paketmanagers. Ansible Core bietet die wesentliche Ansible-Engine, einschließlich ansible, ansible-playbook und anderer für Automatisierungsaufgaben erforderlicher Befehlszeilentools.

Der dnf (Dandified YUM) Paketmanager ist das Standardwerkzeug zur Verwaltung von Softwarepaketen unter Red Hat Enterprise Linux. Da die Installation von Software administrative Rechte erfordert, müssen Sie den Befehl sudo verwenden.

Führen Sie den folgenden Befehl aus, um Ansible Core mit automatischer Bestätigung zu installieren:

sudo dnf install ansible-core -y

Das Flag -y beantwortet alle Eingabeaufforderungen automatisch mit "yes", wodurch die Installation nicht-interaktiv abläuft. Das System lädt ansible-core zusammen mit seinen Python-Abhängigkeiten herunter und installiert sie, einschließlich Jinja2 für Templating und PyYAML für die YAML-Verarbeitung.

Sie sollten eine Ausgabe sehen, die der folgenden ähnelt und den Fortschritt der Paketauflösung und Installation anzeigt:

Updating Subscription Management repositories.
Last metadata expiration check: ...
Dependencies resolved.
================================================================================
 Package                  Arch   Version                Repository         Size
================================================================================
Installing:
 ansible-core             noarch 2.16.x-x.el9            rhel-9-appstream   xx M
Installing dependencies:
 python3-jinja2           noarch x.x.x-x.el9              rhel-9-appstream   xxx k
 python3-yaml             x86_64 x.x.x-x.el9              rhel-9-appstream   xxx k
 ...

Transaction Summary
================================================================================
Install  XX Packages

Complete!

Die Ansible-Installation überprüfen

Nachdem Sie Ansible Core installiert haben, überprüfen wir den Erfolg der Installation, indem wir die Version prüfen und sicherstellen, dass die wesentlichen Befehlszeilentools verfügbar sind.

Überprüfen Sie zunächst die Ansible-Version mit folgendem Befehl:

ansible --version

Dieser Befehl zeigt detaillierte Informationen zu Ihrer Ansible-Installation an, einschließlich der Core-Version, der Python-Version und der Speicherorte verschiedener Komponenten. Sie sollten eine Ausgabe wie diese sehen:

ansible [core 2.14.18]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

Hier ist die Bedeutung der einzelnen Zeilen:

  • ansible [core 2.14.18]: Zeigt die installierte Ansible Core-Version an.
  • config file: Verweist auf die Hauptkonfigurationsdatei von Ansible, die Standardeinstellungen enthält.
  • configured module search path: Verzeichnisse, in denen Ansible nach benutzerdefinierten Modulen sucht.
  • ansible python module location: Speicherort des Ansible Python-Kerncodes.
  • ansible collection location: Verzeichnisse, in denen Ansible-Collections (gepackte Module und Plugins) gespeichert sind.
  • executable location: Der tatsächliche Speicherort der Ansible-Binärdatei.
  • python version: Die Version des Python-Interpreters, den Ansible verwendet.
  • jinja version: Die Version der Templating-Engine, die Ansible für dynamische Inhalte nutzt.
  • libyaml = True: Bestätigt, dass der schnelle YAML-Parser für eine bessere Leistung verfügbar ist.

Dies bestätigt, dass Ansible ordnungsgemäß installiert und einsatzbereit ist. Überprüfen wir nun auch, ob der Befehl ansible-playbook verfügbar ist:

ansible-playbook --version

Sie sollten ähnliche Versionsinformationen für das Tool ansible-playbook sehen, das für die Ausführung von Ansible-Playbooks unerlässlich ist.

Ansible mit einem einfachen Befehl testen

In diesem Schritt testen Sie Ihre Ansible-Installation, indem Sie einen einfachen Befehl auf dem lokalen System ausführen. Wechseln Sie in das Projektverzeichnis und verwenden Sie die vorkonfigurierte Inventardatei, um einen Ansible Ad-hoc-Befehl auszuführen.

Navigieren Sie zum Projektverzeichnis und testen Sie die grundlegende Ping-Funktionalität. Speichern Sie die Ausgabe in einer Datei, damit Sie sie erneut überprüfen können und der Schritt-Verifizierer das Ergebnis zuverlässig bestätigen kann:

cd /home/labex/project
ansible localhost -m ping | tee ping-output.txt

Das ping-Modul sendet keine ICMP-Pakete; stattdessen überprüft es, ob Ansible eine Verbindung zum Ziel herstellen und Python-Code ausführen kann. Eine erfolgreiche Antwort sieht so aus:

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Hier ist die Aufschlüsselung dieser Ausgabe:

  • localhost | SUCCESS: Zeigt an, dass der Befehl erfolgreich auf dem localhost-Ziel ausgeführt wurde.
  • ansible_facts: Enthält Systeminformationen, die während der Ausführung ermittelt wurden.
  • discovered_interpreter_python: Der Pfad zum Python-Interpreter, den Ansible gefunden hat und verwenden wird.
  • changed: false: Zeigt an, dass keine Änderungen am System vorgenommen wurden (ping ist schreibgeschützt).
  • ping: "pong": Die klassische Antwort, die die Ansible-Konnektivität bestätigt.

Die "pong"-Antwort bestätigt, dass Ansible korrekt funktioniert und mit dem Zielsystem kommunizieren kann.

Testen wir nun auch das Sammeln von Systeminformationen mit dem setup-Modul und speichern diese Ausgabe ebenfalls:

ansible localhost -m setup -a "filter=ansible_distribution*" | tee setup-output.txt

Dieser Befehl verwendet das setup-Modul, um System-Fakten zu sammeln, wobei speziell nach Distributionsinformationen gefiltert wird. Sie sollten eine Ausgabe sehen, die Details zu Ihrem Red Hat Enterprise Linux-System enthält:

localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "RedHat",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/redhat-release",
        "ansible_distribution_file_search_string": "Red Hat",
        "ansible_distribution_file_variety": "RedHat",
        "ansible_distribution_major_version": "9",
        "ansible_distribution_release": "Plow",
        "ansible_distribution_version": "9.6",
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

Verständnis der System-Fakten-Ausgabe:

  • ansible_distribution: Der Name der Linux-Distribution (RedHat).
  • ansible_distribution_file_parsed: Ob Ansible die Distributionsdatei erfolgreich gelesen hat.
  • ansible_distribution_file_path: Die Datei, die Distributionsinformationen enthält.
  • ansible_distribution_file_search_string: Das Textmuster, das zur Identifizierung der Distribution verwendet wurde.
  • ansible_distribution_file_variety: Die Distributionsfamilie (RedHat-Familie).
  • ansible_distribution_major_version: Die Hauptversionsnummer (9).
  • ansible_distribution_release: Der Codename des Releases (Plow).
  • ansible_distribution_version: Die vollständige Versionsnummer (9.6).
  • discovered_interpreter_python: Der von Ansible erkannte Python-Interpreter.

Dies bestätigt, dass Ansible erfolgreich Systeminformationen vom Zielhost sammeln kann, was für die Erstellung bedingter Automatisierungen basierend auf Systemeigenschaften unerlässlich ist.

Verfügbare Ansible-Module erkunden

Ansible wird mit Hunderten von integrierten Modulen für verschiedene Automatisierungsaufgaben geliefert. Lassen Sie uns einige der verfügbaren Module erkunden, um zu verstehen, welche Funktionen direkt nach der Installation verfügbar sind.

Um eine Liste der verfügbaren Module anzuzeigen, führen Sie den folgenden Befehl aus und speichern Sie die ersten Zeilen in einer Datei:

ansible-doc -l | head -20 | tee module-list.txt

Der Befehl ansible-doc -l listet alle verfügbaren Module auf, und head -20 zeigt die ersten 20 Module an. Dies gibt Ihnen einen Eindruck von den umfangreichen Automatisierungsmöglichkeiten, die mit Ansible zur Verfügung stehen. Sie sehen eine Ausgabe ähnlich dieser:

ansible.builtin.add_host               Add a host (and alternatively a grou...
ansible.builtin.apt                    Manages apt-packages
ansible.builtin.apt_key                Add or remove an apt key
ansible.builtin.apt_repository         Add and remove APT repositories
ansible.builtin.assemble               Assemble configuration files from fr...
ansible.builtin.assert                 Asserts given expressions are true
ansible.builtin.async_status           Obtain status of asynchronous task
ansible.builtin.blockinfile            Insert/update/remove a text block su...
ansible.builtin.command                Execute commands on targets
ansible.builtin.copy                   Copy files to remote locations
ansible.builtin.cron                   Manage cron.d and crontab entries
ansible.builtin.debconf                Configure a .deb package
ansible.builtin.debug                  Print statements during execution
ansible.builtin.dnf                    Manages packages with the `dnf' pack...
ansible.builtin.dpkg_selections        Dpkg package selection selections
ansible.builtin.expect                 Executes a command and responds to p...
ansible.builtin.fail                   Fail with custom message
ansible.builtin.fetch                  Fetch files from remote nodes
ansible.builtin.file                   Manage files and file properties
ansible.builtin.find                   Return a list of files based on spec...

Verständnis des Modullisten-Formats:

  • ansible.builtin.: Zeigt an, dass es sich um integrierte Module handelt, die mit Ansible Core geliefert werden.
  • Modulname: Der Name, den Sie beim Aufrufen des Moduls in Playbooks oder Ad-hoc-Befehlen verwenden.
  • Beschreibung: Eine kurze Erklärung der Funktion des Moduls.

Einige wichtige Module, die Sie häufig verwenden werden:

  • command: Führt Shell-Befehle auf Zielsystemen aus.
  • copy: Kopiert Dateien von Ihrer Steuerungsmaschine auf Remote-Hosts.
  • dnf: Installiert, aktualisiert oder entfernt Pakete auf Red Hat-Systemen.
  • file: Erstellt Verzeichnisse, setzt Berechtigungen oder verwaltet Dateieigenschaften.
  • debug: Gibt Nachrichten während der Playbook-Ausführung zur Fehlerbehebung aus.

Um eine detaillierte Dokumentation für ein bestimmtes Modul zu erhalten, können Sie den Befehl ansible-doc mit dem Modulnamen verwenden. Leiten Sie die Ausgabe in eine Datei um, damit der Befehl nicht-interaktiv bleibt und Sie ihn später erneut einsehen können. Um beispielsweise mehr über das copy-Modul zu erfahren:

ansible-doc copy | tee copy-doc.txt

Dies zeigt eine umfassende Dokumentation für das copy-Modul an, einschließlich Beispielen und Parameterbeschreibungen, und speichert gleichzeitig eine Kopie in copy-doc.txt. Der Befehl ansible-doc bietet detaillierte Dokumentation für jedes Ansible-Modul, was es einfach macht, die verschiedenen Automatisierungsmöglichkeiten zu erlernen.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie man Ansible Core auf einem Red Hat Enterprise Linux-System installiert und überprüft. Folgendes haben Sie erreicht:

  1. Ansible Core installiert: Sie haben den Befehl sudo dnf install ansible-core -y verwendet, um das Ansible-Kernpaket und seine Abhängigkeiten aus den offiziellen Red Hat-Repositories zu installieren.

  2. Installation überprüft: Sie haben bestätigt, dass Ansible ordnungsgemäß installiert wurde, indem Sie die Version der Befehle ansible und ansible-playbook überprüft haben.

  3. Grundlegende Funktionalität getestet: Sie haben einfache Ansible-Befehle ausgeführt, um sicherzustellen, dass die Installation korrekt funktioniert, darunter:

    • Verwendung des ping-Moduls zum Testen der Konnektivität.
    • Verwendung des setup-Moduls zum Sammeln von System-Fakten.
  4. Verfügbare Module erkundet: Sie haben gelernt, wie man die umfangreiche Bibliothek von Ansible-Modulen mit ansible-doc entdeckt und deren Dokumentation liest.

Sie verfügen nun über eine voll funktionsfähige Ansible-Installation auf RHEL und verstehen die grundlegenden Befehle, die für den Einstieg in die Automatisierung Ihrer Infrastruktur erforderlich sind. Diese Grundlage bereitet Sie auf fortgeschrittenere Ansible-Themen vor, wie das Schreiben von Playbooks, die Verwaltung von Inventaren und die Implementierung komplexer Automatisierungs-Workflows.