Ansible on RHEL: Enterprise Automation (Artikel 109)
Die Nutzung von Ansible im Red Hat Ökosystem. Erfahren Sie alles über ansible-core, zertifizierte Collections und die mächtigen RHEL System Roles zur Standardisierung Ihrer Flotte.
# Ansible on RHEL: Das Herz der Red Hat Automatisierung
TL;DR / Management Summary Ansible ist heute der De-facto-Standard für Konfigurations-Management und wird von Red Hat als strategisches Produkt vorangetrieben. In der RHEL-Welt nutzen wir ansible-core für die Basis-Automatisierung und greifen auf die RHEL System Roles zurück – eine Sammlung von zertifizierten, stabilen Playbooks, die komplexe Aufgaben wie Kernel-Tuning, SAP-Vorbehandlung oder Microsoft AD-Anbindung standardisiert lösen.
# 1. Einführung & Architektur
Die Red Hat Integration.
Ansible ist in RHEL tief verwurzelt. Viele System-Tools nutzen intern Ansible-Logik.
# Der Automatisierungs-Stack (Mermaid)
graph TD
A[Admin Control Node] -->|ansible-core| B[Inventory]
A --> C[RHEL System Roles]
A --> D[Certified Collections]
B/C/D -->|SSH| E[RHEL Host 1]
B/C/D -->|SSH| F[RHEL Host 2]
E --> G[dnf, selinux, nmcli]
F --> G
# 2. Installation & Core-Komponenten
Bereit für die Flotte.
In RHEL 8/9 ist Ansible Teil des AppStream oder des Ansible Repositories.
# Installation
sudo dnf install ansible-core
# RHEL System Roles installieren
Dies ist der wichtigste Schritt für Enterprise-Admins:
sudo dnf install rhel-system-roles
Die Rollen befinden sich danach unter /usr/share/ansible/roles/rhel-system-roles.<name>.
# 3. RHEL System Roles in Aktion
Standardisierung statt Scripting.
Anstatt eigene Playbooks für Netzwerk-Bonds oder SELinux zu schreiben, nutzen wir die zertifizierten Rollen.
# Beispiel: Firewall & SELinux konfigurieren
Datei: setup_security.yml
- hosts: all
vars:
# Variablen für die SELinux Rolle
selinux_policy: targeted
selinux_state: enforcing
# Variablen für die Firewall Rolle
firewall:
- service: http
state: enabled
roles:
- rhel-system-roles.selinux
- rhel-system-roles.firewall
# 4. Day-2 Operations: Zertifizierte Module
RHEL-spezifische Aufgaben lösen.
Ansible bietet spezialisierte Module für Red Hat Technologien:
- redhat_subscription: Verwaltet den
subscription-manager. - dnf: Das mächtige Modul für Paket-Updates und Modul-Streams.
- nmcli: Zur Konfiguration des NetworkManagers.
# Beispiel: Subscription automatisch registrieren
- name: Register system
community.general.redhat_subscription:
state: present
username: "{{ rh_user }}"
password: "{{ rh_pass }}"
auto_attach: yes
# 5. Troubleshooting & “War Stories”
Wenn die Automatisierung hinkt.
# Story 1: “Der Python-Pfad-Konflikt”
Symptom: Ansible schlägt fehl mit “Module not found”, obwohl das Paket auf dem Zielsystem installiert ist.
Ursache: Auf RHEL 8/9 gibt es oft mehrere Python-Versionen (3.6, 3.9, 3.11). Ansible nutzt standardmäßig /usr/bin/python, was in RHEL oft nicht existiert oder veraltet ist.
Lösung: Setzen Sie den Python-Interpreter im Inventory explizit:
ansible_python_interpreter=/usr/bin/python3.9.
# Story 2: “SELinux vs. Ansible Temp”
Symptom: Ansible kann keine Befehle ausführen, Fehlermeldung: “Failed to set permissions on the temporary files”.
Ursache: Das /tmp Verzeichnis auf dem Zielhost ist so gehärtet, dass Skripte dort nicht ausgeführt werden dürfen (noexec).
Lösung: Ändern Sie das Remote-Temp-Verzeichnis in der ansible.cfg:
remote_tmp = ~/.ansible/tmp.
# 6. Fazit & Empfehlung
- RHEL System Roles: Nutzen Sie diese Rollen konsequent. Sie werden von Red Hat gepflegt und bei OS-Upgrades automatisch aktualisiert.
- Ansible Automation Platform (AAP): Wenn Sie hunderte Server, RBAC und eine GUI brauchen, ist AAP (der Nachfolger von Ansible Tower) der nächste logische Schritt.
- Best Practice: Führen Sie Ihre Playbooks regelmäßig via Cron oder CI/CD aus, um “Configuration Drift” zu vermeiden.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Liste aller System Roles | ls /usr/share/ansible/roles/ |
| Fakten über RHEL Host | ansible <host> -m setup |
| Paket via DNF installieren | ansible <host> -m dnf -a "name=htop state=present" |
| Subscription Info | ansible <host> -m community.general.redhat_subscription_info |
| Vault Datei erstellen | ansible-vault create secrets.yml |
| Playbook Check | ansible-playbook --check site.yml |