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