Einführung
Der Zugriff auf verwaltete Knoten (Managed Nodes) ist die Grundlage für die Automatisierung mit Ansible. In realen Umgebungen verbindet sich Ansible in der Regel über SSH und nutzt für administrative Aufgaben eine Privilegienerweiterung (Privilege Escalation).
In diesem Lab wird ein temporärer verwalteter Benutzer namens rhce_node erstellt. Sie werden einen SSH-Schlüssel generieren, diesen für den Benutzer autorisieren, den Inventory-Zugriff konfigurieren und sowohl die normale SSH-Ausführung als auch den become-Zugriff überprüfen.
Das SSH-Übungsprojekt erstellen
In diesem Schritt erstellen Sie die Projektverzeichnisse und die Ansible-Standardeinstellungen für den SSH-basierten Zugriff. Das verwaltete Konto existiert bereits, vertraut Ihrem Schlüssel jedoch noch nicht.
Erstellen Sie das Projektverzeichnis und wechseln Sie hinein.
cd /home/labex/project
mkdir -p rhce-ansible/{inventory,keys,playbooks}
cd rhce-ansible
Erstellen Sie die Datei ansible.cfg.
cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
host_key_checking = False
retry_files_enabled = False
interpreter_python = auto_silent
EOF
Dieses Projekt verwendet später im Lab eine echte SSH-Verbindung zu 127.0.0.1. Das Verzeichnis keys hält das Lab-Schlüsselpaar von Ihren normalen ~/.ssh-Dateien getrennt, und host_key_checking = False verhindert eine interaktive Abfrage während dieser kontrollierten lokalen Übung.
Ein SSH-Schlüsselpaar generieren
In diesem Schritt erstellen Sie ein Ed25519-SSH-Schlüsselpaar. Der private Schlüssel verbleibt in keys/rhce_ed25519; der öffentliche Schlüssel kann sicher auf einem verwalteten Konto installiert werden. Die Option -N '' erstellt einen Schlüssel ohne Passphrase für die Lab-Automatisierung.
Bevor Sie Befehle in diesem Schritt ausführen, kehren Sie zum Ansible-Projektverzeichnis zurück. Dies stellt sicher, dass die Befehle konsistent bleiben, auch wenn LabEx jeden Schritt separat ausführt.
cd /home/labex/project/rhce-ansible
Generieren Sie das Schlüsselpaar.
ssh-keygen -t ed25519 -f keys/rhce_ed25519 -N '' -C rhce-ansible-lab
Dies erstellt zwei Dateien. keys/rhce_ed25519 ist der private Schlüssel und muss privat bleiben; keys/rhce_ed25519.pub ist der öffentliche Schlüssel, der im Konto des verwalteten Benutzers installiert werden kann.
Überprüfen Sie den öffentlichen Schlüssel.
cat keys/rhce_ed25519.pub
Die Zeile des öffentlichen Schlüssels sollte mit ssh-ed25519 beginnen und mit dem Kommentar rhce-ansible-lab enden. Sie werden diesen öffentlichen Schlüssel, nicht den privaten, in die Datei authorized_keys kopieren.
Den Schlüssel für den verwalteten Benutzer autorisieren
In diesem Schritt installieren Sie den öffentlichen Schlüssel für den temporären verwalteten Benutzer. Sie ändern nicht den LabEx-SSH-Zugriff für den Benutzer labex; Sie bereiten lediglich rhce_node für dieses Lab vor.
Bevor Sie Befehle in diesem Schritt ausführen, kehren Sie zum Ansible-Projektverzeichnis zurück.
cd /home/labex/project/rhce-ansible
Erstellen Sie das .ssh-Verzeichnis des verwalteten Benutzers.
sudo mkdir -p /home/rhce_node/.ssh
SSH sucht nach vertrauenswürdigen öffentlichen Schlüsseln im .ssh-Verzeichnis des Benutzers. Sie benötigen hier sudo, da das Verzeichnis zum Home-Verzeichnis eines anderen Benutzers gehört.
Installieren Sie Ihren öffentlichen Schlüssel als authorized_keys.
sudo cp keys/rhce_ed25519.pub /home/rhce_node/.ssh/authorized_keys
Korrigieren Sie Eigentumsrechte und Berechtigungen. SSH verweigert die Verwendung von Schlüsseln, wenn Verzeichnisse oder Dateien zu offen sind.
sudo chown -R rhce_node:rhce_node /home/rhce_node/.ssh
sudo chmod 700 /home/rhce_node/.ssh
sudo chmod 600 /home/rhce_node/.ssh/authorized_keys
Die Berechtigungswerte sind bewusst gewählt: 700 erlaubt nur rhce_node den Zugriff auf das .ssh-Verzeichnis, und 600 erlaubt nur diesem Benutzer das Lesen oder Schreiben der authorized_keys. Diese Prüfungen verhindern eine versehentliche Offenlegung von Anmeldedaten.
Inventory für den SSH-Zugriff konfigurieren
In diesem Schritt erstellen Sie einen Inventory-Eintrag, der Ansible mitteilt, wie eine Verbindung zum verwalteten Benutzer über SSH auf dem Localhost hergestellt werden soll.
Bevor Sie Befehle in diesem Schritt ausführen, kehren Sie zum Ansible-Projektverzeichnis zurück.
cd /home/labex/project/rhce-ansible
Schreiben Sie das Inventory.
cat > inventory/hosts <<'EOF'
[managed]
node1 ansible_host=127.0.0.1 ansible_user=rhce_node ansible_ssh_private_key_file=/home/labex/project/rhce-ansible/keys/rhce_ed25519
EOF
Diese Inventory-Zeile trennt den Ansible-Namen von den Verbindungsdetails. node1 ist der Inventory-Alias, ansible_host ist die Zieladresse, ansible_user ist das Remote-Konto und ansible_ssh_private_key_file verweist auf den privaten Schlüssel.
Testen Sie SSH direkt, bevor Sie Ansible verwenden.
ssh -i keys/rhce_ed25519 -o StrictHostKeyChecking=no rhce_node@127.0.0.1 'whoami'
Der Befehl sollte rhce_node ausgeben.
Das direkte Testen von SSH grenzt die Fehlerquelle ein, falls Ansible später fehlschlagen sollte. Wenn die direkte SSH-Anmeldung nicht funktioniert, beheben Sie Probleme mit dem Schlüssel, den Eigentumsrechten, den Berechtigungen oder den Inventory-Verbindungswerten, bevor Sie Ansible-Module untersuchen.
Ansible Ping und Become validieren
In diesem Schritt testen Sie die Ansible-Konnektivität und die Privilegienerweiterung. Die Option -b steht für become, was Ansible anweist, das Modul mit erweiterten Rechten auszuführen.
Bevor Sie Befehle in diesem Schritt ausführen, kehren Sie zum Ansible-Projektverzeichnis zurück.
cd /home/labex/project/rhce-ansible
Führen Sie das Ansible-Ping-Modul über SSH aus.
ansible managed -m ansible.builtin.ping
Diesmal verwendet das ping-Modul keine lokale Verbindungsabkürzung. Ansible sollte sich als rhce_node verbinden, ein kleines Modul übertragen, es mit Python ausführen und pong zurückgeben.
Führen Sie einen Befehl mit Privilegienerweiterung aus. Der Befehl id -u gibt 0 aus, wenn er als Root ausgeführt wird.
ansible managed -b -m ansible.builtin.command -a 'id -u'
Das Flag -b aktiviert become für diesen Befehl. Ein Ergebnis, das 0 enthält, beweist, dass der verwaltete Benutzer die Privilegien über die für das Lab erstellte Sudoers-Regel erweitern kann.
Erstellen Sie eine Datei im Besitz von Root unter Verwendung von Ansible become.
ansible managed -b -m ansible.builtin.copy -a 'content=become_ready dest=/etc/rhce-ansible-become.txt mode=0644'
Das Schreiben unter /etc erfordert administrative Rechte. Dieser letzte Befehl beweist also mehr als nur die Konnektivität: Er bestätigt, dass Ansible sowohl über SSH verbinden als auch bei Bedarf privilegierte Systemänderungen vornehmen kann.
Zusammenfassung
Sie haben ein SSH-Schlüsselpaar generiert, es für einen temporären verwalteten Benutzer autorisiert, den SSH-basierten Inventory-Zugriff konfiguriert und die Privilegienerweiterung mit Ansible become validiert.



