7 tägliche Sysadmin-Aufgaben zur Automatisierung mit Ansible

Einführung in Ansible: Eine leistungsstarke Automatisierungsplattform

Ansible, ein von Red Hat entwickeltes, kostenfreies Open-Source-Projekt auf Python-Basis, erfreut sich großer Beliebtheit als Plattform für Konfigurationsmanagement und IT-Automatisierung.

Die Plattform zeichnet sich durch ihre Vielseitigkeit aus und ist mit den gängigsten Betriebssystemen wie Linux, Windows und macOS kompatibel. Sie verwendet eine deklarative Sprache, die in YAML (YAML Ain’t Markup Language) formuliert wird, um die Systemkonfiguration präzise zu beschreiben.

Ansible hat, zusammen mit anderen modernen Konfigurationsmanagement-Tools, die IT-Automatisierung und Industriestandards grundlegend verändert. Diese Tools sind zu einem unverzichtbaren Bestandteil der DevOps-Toolsets und des modernen IT-Prozesslebenszyklus geworden. Dies gilt unabhängig davon, ob die zugrundeliegende Infrastruktur lokal, hybrid oder cloudbasiert ist. Ansible automatisiert nicht nur DevOps-Prozesse, sondern auch viele alltägliche Aufgaben, die traditionell von Systemadministratoren ausgeführt werden.

Ein wesentlicher Vorteil von Ansible ist, dass es ohne Agenten auskommt. Für den Einsatz ist lediglich ein SSH-Zugang zum Zielsystem sowie eine unterstützte Python-Version erforderlich, die auf den meisten modernen Betriebssystemen bereits vorinstalliert ist. Dank seiner schlanken Architektur eignet es sich sowohl für moderne als auch für ältere Systeme.

Anwendungsbereiche von Ansible

Orchestrierung

Ansible ist ein ideales Werkzeug zur Orchestrierung diverser Systemadministrations- und Bereitstellungsaufgaben. Durch die Verwendung von Playbooks können Sie Orchestrierungs-Workflows wiederholt in verschiedenen Projekten anwenden. Die YAML-basierte Konfiguration ermöglicht es Ihnen, Ihre Infrastruktur in Git-Repositories oder anderen Versionskontrollsystemen zu speichern und zu verwalten.

Anwendungsbereitstellung

Unabhängig davon, ob es sich um einfache oder komplexe Anwendungen handelt, unterstützt Ansible die Automatisierung des gesamten Lebenszyklus der Anwendungsbereitstellung.

Sicherheit und Compliance

Ansible hilft Ihnen dabei, sicherzustellen, dass Ihre Systeme den Unternehmensrichtlinien und Branchenstandards entsprechen. Es kann auf einer Vielzahl von Servern eingesetzt werden, um Audits durchzuführen und Sicherheitslücken zu beheben. Dies gibt Administratoren die volle Kontrolle über ihre Umgebung.

Im Folgenden betrachten wir einige gängige Aufgaben, die Sie mit Ansible automatisieren können.

Dateiverwaltung mit Ansible

Das Kopieren von Dateien zwischen verschiedenen Verzeichnissen ist eine alltägliche Aufgabe für Systemadministratoren. Ansible kann diese Aufgaben durch das Kopiermodul in Playbooks erledigen, was das Kopieren von Konfigurationsdateien oder den Datentransfer zwischen Servern erleichtert.

Darüber hinaus ist es wichtig, den Status verwalteter Server zu überwachen und vordefinierte Aktionen durchzuführen. Mit Ansible lassen sich beispielsweise Betriebszeitwerte einfach abrufen und ausgeben. Das folgende Beispiel demonstriert, wie Sie die NTP-Konfiguration von einem lokalen auf einen Remote-Server kopieren:

    ---
    - hosts: all
      gather_facts: no
      become: yes
      tasks:
        - name: Kopiere neue NTP-Konfigurationsdatei und sichere das Original, falls es sich unterscheidet
          copy:
            src: ./ntp.conf
            dest: /etc/ntp.conf
            owner: root
            group: root
            mode: '0644'
            backup: yes
    

Cron-Jobs verwalten

Die Planung von Routineaufgaben ist essenziell für jedes Servermanagement. Mit Ansible können Sie Cron-Jobs in Linux hinzufügen oder modifizieren, was Ihnen erlaubt, automatisierte Backups, Patches, Audits und andere Aufgaben zu bestimmten Zeiten zu planen. Dies schafft wertvolle Zeit für andere wichtige Aufgaben. Das folgende Playbook zeigt, wie Sie einen Rsync-Job als Root-Nutzer definieren:

    ---
    - hosts: all
      gather_facts: no
      become: yes
      tasks:
        - name: Cron-Job bereitstellen
          cron:
            name: "Rsync-Job festlegen"
            user: root
            minute: "5"
            hour: "4"
            job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
    

Festplatten und Dateisysteme verwalten

Ansible ermöglicht die Verwaltung von Festplatten, Partitionen, Dateisystemen und Mounts. Verschiedene Module bieten hierfür die benötigten Funktionen. Das folgende Beispiel zeigt, wie Sie eine Partition erstellen, formatieren, ein Mount-Verzeichnis anlegen und die Partition mounten. Zusätzlich wird ein Eintrag in der Datei `/etc/fstab` hinzugefügt, um die Partition dauerhaft zu mounten.

    ---
    - hosts: all
      gather_facts: no
      become: yes
      tasks:
        - name: Erstelle eine Partition
          parted:
            device: /dev/sdb
            number: 1
            part_end: "100%"
            state: present
        - name: Formatiere neue Partition
          filesystem:
            fstype: ext4
            dev: /dev/sdb1
        - name: Erstelle Mount-Verzeichnis
          file:
            path: /data
            state: directory
        - name: Mounte Partition
          mount:
            path: /data
            src: /dev/sdb1
            fstype: ext4
            state: mounted
  

Serverprotokolle sammeln

Das Sammeln und Speichern von Protokollen ist für Sicherheit, Audits und Analysen unerlässlich. Ansible kann Protokolle von verschiedenen Servern sammeln und an einem zentralen Ort speichern. Das folgende Playbook zeigt, wie Sie dies erreichen können:

    ---
    - hosts: all
      gather_facts: no
      become: yes
      tasks:
    
        - name: Finde Protokolle
          find:
            paths: /var/log/
            patterns: '*.log'
            recurse: yes
          register: _logs
    
        - name: Sammle Protokolle
          fetch:
            src: "{{ item.path }}"
            dest: /tmp/logs
          with_items: "{{ _logs.files }}"
    

Software und Pakete installieren und entfernen

Die Installation und Entfernung von Softwarepaketen ist eine häufige Aufgabe in der Systemadministration. Ansible ermöglicht die Automatisierung dieser Aufgaben. Das folgende Beispiel zeigt, wie Sie Pakete unter Ubuntu und RHEL/CentOS installieren und entfernen:

    ---
    - hosts: ubuntu
      gather_facts: no
      tasks:
        - name: Installiere lsof-Utility
          apt:
            pkg: lsof
            state: latest
          sudo: yes
        - name: Entferne ARP-Scan-Utility
          apt:
            pkg: arp-scan
            state: absent
          sudo: yes
          
    ---
    - hosts: centos
      gather_facts: no
      tasks:
        - name: Installiere lsof-Utility
          yum:
            pkg: lsof
            state: latest
          sudo: yes
        - name: Entferne ARP-Scan-Utility
          yum:
            pkg: arp-scan
            state: absent
          sudo: yes
  

Benutzerverwaltung

Die Verwaltung von Benutzern und Gruppen ist grundlegend für den Zugriff und die Berechtigungsverwaltung in Unix/Linux-Systemen. Ansible bietet Ihnen ein hervorragendes Werkzeug, um Benutzer und Gruppen zu erstellen, zu ändern und zu löschen. Das folgende Beispiel demonstriert, wie Sie Benutzer und Gruppen erstellen und entfernen:

    ---
    - hosts: all
      gather_facts: no
      become: yes
      tasks:
        - group:
            gid: 12310
            name: groupA
            state: present
        - group:
            gid: 12311
            name: groupB
            state: present
        - user:
            name: user1
            state: absent
        - user:
            name: user2
            uid: 12427
            shell: /bin/false
            password_lock: yes
            groups: groupA, groupB
  

Diensteverwaltung

Dienste sind Prozesse, die im Hintergrund laufen und Funktionen wie die SSH-Verbindung bereitstellen. Ansible ermöglicht die Verwaltung von System- und Benutzerdiensten, inklusive Starten, Stoppen und Neustarten. Das folgende Playbook zeigt, wie dies funktioniert:

    ---
    - hosts: all
      gather_facts: no
      become: yes
      tasks:
        - name: Starte SSH-Daemon neu
          service:
            name: ssh
            state: restarted
        - name: Stoppe SSSD-Daemon
          service:
            name: sssd
            state: stopped
        - name: Starte httpd-Daemon
          service:
            name: httpd
            state: started
    

Im obigen Beispiel wird der SSH-Dienst neu gestartet, der SSSD-Dienst gestoppt und der httpd-Daemon gestartet. Ansible ist idempotent, das heißt, dass bereits gestartete oder gestoppte Dienste nicht beeinflusst werden. Beachten Sie, dass die Dienstnamen je nach Linux-Distribution variieren können.

Zusammenfassung

Ansible vereinfacht das Leben von Systemadministratoren erheblich, indem es wiederholende Aufgaben automatisiert, menschliche Fehler reduziert und Zeit spart. Die Möglichkeit, Konfigurationsdaten in einem zentralen Repository zu speichern, fördert die Zusammenarbeit und ermöglicht eine einfache Überprüfung von Aktivitäten.

Für weitere Informationen zu Ansible und seinen zahlreichen Modulen, konsultieren Sie bitte die offizielle Dokumentation.