7 tägliche Sysadmin-Aufgaben zur Automatisierung mit Ansible

Ansible, ein kostenloses und Open-Source-Python-basiertes Projekt von Red Hat, ist eine beliebte Konfigurationsmanagement- und IT-Automatisierungsplattform.

Es ist plattformübergreifend und funktioniert mit den meisten modernen Betriebssystemen, einschließlich Linux, Windows und Mac. Es unterstützt eine deklarative Sprache, die in YAML oder YAML Ain’t Markup Language geschrieben ist, um die Systemkonfiguration zu beschreiben.

Ansible hat zusammen mit anderen modernen Konfigurationsmanagementplattformen die IT-Automatisierung und Industriestandards revolutioniert. Konfigurationsmanagement-Tools sind Teil des DevOps-Toolsets geworden und sind ein untrennbarer Bestandteil jedes modernen IT-Prozesslebenszyklus. Dies gilt für jede moderne Infrastrukturumgebung, unabhängig davon, ob sie auf einer lokalen, hybriden oder Cloud-Umgebung basiert. Nicht nur für DevOps, Ansible kann auch dabei helfen, viele alltägliche Aufgaben zu automatisieren, die von einem Systemadministrator ausgeführt werden.

Einer der Vorteile der Verwendung von Ansible ist, dass es ohne Agenten auskommt und neben dem SSH-Zugriff auf den Zielcomputer und der unterstützten Version von Python, die auf den meisten modernen Betriebssystemen bereits standardmäßig installiert ist, nicht viel zum Einstieg benötigt. Da es sich um ein leichtgewichtiges Tool handelt, kann es auch mit einem Legacy für innovative Systeme bereitgestellt und verwendet werden.

Verwendung von Ansible

Orchestrierung

Ansible ist ein Tool der Wahl für die Orchestrierung verschiedener Systemadministrations- und Bereitstellungsaufgaben. Playbooks ermöglichen die Verwendung derselben Orchestrierungs-Workflows über verschiedene Projekte hinweg, und YAML-basierte Konfigurationsdaten ermöglichen das Speichern und Versionieren Ihrer Infrastruktur in einem Git-Repository oder einer beliebigen unterstützten Versionskontrollplattform.

Anwendungsbereitstellung

Ob es sich um eine einfache Anwendung mit wenigen Zeilen Code oder um eine umfangreiche Bereitstellung mit mehreren Ebenen handelt, Ansible ermöglicht die Automatisierung des End-to-End-Lebenszyklus der Anwendungsbereitstellung.

Sicherheit und Compliance

Ansible kann auch dazu beitragen, dass Ihre Systeme gemäß den Richtlinien Ihres Unternehmens gesichert sind und den Industriestandards entsprechen. Es kann auf Tausenden von Servern ausgeführt werden, ein Audit generieren und diese Sicherheitslücken beheben, wodurch der Administrator die vollständige Kontrolle über die Umgebung erhält.

Sehen wir uns nun einige der gängigen Sysadmin-Aufgaben an, die Sie mit Ansible automatisieren können.

Kopieren Sie Dateien von einem lokalen oder entfernten System

Als Systemadministrator ist es üblich, Dateien von einem Verzeichnis in ein anderes zu kopieren. Konfigurationsdateien müssen oft auf Remote-Server kopiert werden, oder manchmal müssen wir Dateien von einem Remote-Standort an einen anderen verschieben.

  7 Bestes V Rising Server-Hosting für alle

Das Ansible-Kopiermodul kann Ihnen dabei helfen, diese Aufgaben in einem Playbook zu erledigen.

Es ist eine Routineaufgabe für einen Systemadministrator, den Status verwalteter Server zu kennen und vordefinierte Aktionen gemäß den Richtlinien der Organisation durchzuführen. Eine solche Aufgabe besteht darin, die Serververfügbarkeit zu kennen. Mit Ansible können wir Betriebszeitwerte einfach abrufen und zusammen drucken. Ein Beispiel zum Kopieren der NTP-Konfiguration von einem lokalen auf einen Remote-Server mit dem Kopiermodul ist unten dargestellt:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Copy a new ntp configuration file and back up the original, if it differs
      copy:
        src: ./ntp.conf
        dest: /etc/ntp.conf
        owner: root
        group: root
        mode: '0644'
        backup: yes

Konfigurieren Sie zusätzliche Cronjobs

Das Einrichten geplanter Jobs zur Ausführung von Routineaufgaben ist Teil der Verwaltung eines jeden Servers. Sie können automatische Backups, Patches, Auditing usw. zu bestimmten Tages- oder Monatszeiten automatisch planen und so produktive Zeit für Ihre Nutzung lassen.

Cron ist ein solches Tool in Linux, das die Planung unterstützt, und Ansible kann Ihnen helfen, diese Jobs hinzuzufügen oder zu ändern. Als Beispiel zeigt das folgende Playbook, wie Sie mit Ansible ganz einfach einen rsync-Job als root auf einigen oder allen Ihrer Server festlegen können.

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

Festplatten und Dateisysteme verwalten

Ansible kann verwendet werden, um Festplatten, Partitionslayouts, Dateisysteme und Mounts zu verwalten, einschließlich /etc/fstab auf Linux-Servern. Verschiedene Ansible-Module machen dies möglich. Hier ist ein Beispiel, das eine Partition auf einer 100-GB-Festplatte erstellt, sie mit dem ext4-Dateisystem formatiert, ein neues Verzeichnis zum Mounten der Partition erstellt und sie schließlich in einem bestimmten Verzeichnis mountet. Ein Eintrag in /etc/fstab wird je nach Moduloptionen auch durch temporäres oder permanentes Mounten erstellt.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Create a partition
      parted:
        device: /dev/sdb
        number: 1
        part_end: "100%"
        state: present
    - name: Format new partition
      filesystem:
        fstype: ext4
        dev: /dev/sdb1
    - name: Create mount directory
      file:
        path: /data
        state: directory
    - name: Mount partition
      mount:
        path: /data
        src: /dev/sdb1
        fstype: ext4
        state: mounted

Sammeln Sie Serverprotokolle

Die Aufbewahrung von Protokollen an einem geeigneten Ort ist manchmal für Sicherheit, Audit und Analyse unerlässlich. Ansible ermöglicht das Sammeln von Protokollen von verschiedenen Servern in Ihrer Unternehmensumgebung und bewahrt sie einfach an Ihrem definierten Ort auf. Hier ist das Playbook, um dies zu erreichen:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
  
    - name: Find logs
      find:
        paths: /var/log/
        patterns: '*.log'
        recurse: yes
      register: _logs

    - name: Fetch logs
      fetch:
        src: "{{ item.path }}"
        dest: /tmp/logs
      with_items: "{{ _logs.files }}"

Pakete und Software installieren oder entfernen

Pakete müssen oft auf Benutzeranfragen oder als Teil der anfänglichen Server-Builds installiert werden. Möglicherweise müssen wir auch bestimmte Pakete entfernen, die nicht mehr benötigt werden oder einige kritische Fehler aufweisen usw. Ansible ermöglicht Ihnen die einfache Installation oder Entfernung von Paketen, ohne dass Sie zu jedem Server gehen und manuelle Befehle ausführen müssen. Hier ist ein Beispiel, das die Installation und Entfernung von jeweils einem Paket für Ubuntu- und RHEL/CentOS-basierte Linux-Server zeigt.

---
- hosts: ubuntu
  gather_facts: no
  tasks:
    - name: Install lsof utility
      apt:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      apt:
        pkg: arp-scan
        state: absent
      sudo: yes
      
 ---
- hosts: centos
  gather_facts: no
  tasks:
    - name: Install lsof utility
      yum:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      yum:
        pkg: arp-scan
        state: absent
      sudo: yes

Benutzer verwalten

Benutzer und Gruppen bilden die Grundstruktur, um die herum Unix/Linux-basierte Systeme Zugriff und Berechtigungen verwalten. In einer großen Organisation kann die Verwaltung von Benutzern und Gruppen trotz Automatisierung zur Unterstützung der Umgebung eine große Herausforderung darstellen.

  21 Beste kostenlose Hookup-Websites

Mit Ansible hat der Systemadministrator ein hervorragendes Tool zum Erstellen, Ändern und Löschen von Benutzern und Gruppen mit allen verschiedenen Möglichkeiten, die im Betriebssystem unterstützt werden.

Hier ist ein einfaches Beispiel, das das Erstellen und Löschen von Benutzern und Gruppen mit Ansible zeigt. Nachdem dieses Playbook ausgeführt wurde, werden auf den Zielservern groupA und groupB mit den angegebenen GIDs erstellt, während user1 entfernt wird, falls vorhanden. Ein neuer Benutzer ohne Shell wird als Benutzer2 mit gegebener UID, zugewiesenen Gruppen und gesperrtem Passwort erstellt.

---
- 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

Verwaltung von Diensten

Dienste sind Prozess-Daemons, die im Hintergrund ausgeführt werden und Dienste wie sshd bereitstellen, die SSH-Konnektivität usw. bereitstellen. Mit Ansible können Sie System- und Benutzerdienste verwalten, z. B. diese starten, stoppen und neu starten. Hier ist ein Beispiel-Playbook, um das zu demonstrieren:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Restart ssh daemon
      service:
        name: ssh
        state: restarted
    - name: Restart sssd daemon
      service:
        name: sssd
        state: stopped
    - name: Restart httpd daemon
      service:
        name: httpd
        state: started

Im obigen Beispiel wird der SSH-Dienst neu gestartet, während als nächstes der SSSD-Dienst gestoppt wird. Der httpd-Daemon wird gegen Ende gestartet. Da Ansible idempotent ist, wird jeder bereits gestartete oder gestoppte Dienst nicht geändert, während ein Neustart immer den Dienststatus ändert. Denken Sie daran, den Dienstnamen zu überprüfen, da verschiedene Linux-Distributionen andere Namen verwenden, sogar für denselben Dienst wie ssh und sshd.

  Ist mein iPhone wasserdicht?

Zusammenfassung 👨‍💻

Ansible erleichtert das Leben eines Systemadministrators, indem es Ihnen ermöglicht, sich wiederholende und zeitaufwändige Aufgaben automatisiert auszuführen und menschliche Fehler und Aufwand zu reduzieren. Darüber hinaus ermöglicht es die Speicherung von Konfigurationsdaten in einem zentralen Code-Repository wie Git, sodass mehrere Benutzer zusammenarbeiten und jede Aktivität überprüfen können.

Weitere Informationen zu Ansible und seinen umfangreichen Modulen finden Sie unter its Dokumentation.