linux-rhel-centos-fedora automation ansible rhel red-hat iac

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