Ansible ist ein leistungsstarkes und einfach zu bedienendes Automatisierungstool, das Administratoren und DevOps-Teams dabei hilft, Systeme effizient zu verwalten. Durch seine agentenlose Architektur und die Nutzung von SSH eignet es sich ideal für Konfigurationsmanagement, Software-Installationen und Nutzerverwaltung. In diesem Beitrag zeigen wir dir, wie du mit den wichtigsten Ansible-Modulen arbeitest, Nutzer einrichtest und Software auf Remote-Hosts installierst.
1. Einführung in Ansible-Module
Ansible-Module sind wiederverwendbare Skripte, die bestimmte Aufgaben auf den Zielsystemen ausführen. Sie sind das Herzstück von Ansible und decken ein breites Spektrum an Funktionen ab – von der Paketverwaltung bis zur Nutzerverwaltung. Ansible bietet hunderte von Modulen, die je nach Einsatzgebiet genutzt werden können.
Wichtige Module im Überblick:
apt
: Paketverwaltung auf Debian-basierten Systemen (z.B. Ubuntu)yum
: Paketverwaltung auf Red Hat-basierten Systemen (z.B. CentOS, Fedora)user
: Erstellung und Verwaltung von Benutzerngroup
: Verwaltung von Gruppen auf dem Systemservice
: Verwaltung von Diensten (Starten, Stoppen, Neustarten)copy
: Dateien auf Remote-Hosts kopierenfile
: Verwaltung von Dateiattributen (Berechtigungen, Eigentümer, Verzeichnisse)shell
/command
: Shell-Kommandos auf Remote-Hosts ausführen
2. Nutzer-Einrichtung mit Ansible
Die Verwaltung von Nutzern und Gruppen ist eine häufige Aufgabe in der IT-Administration. Mit Ansible kannst du Benutzerkonten auf mehreren Hosts zentral verwalten.
Beispiel-Playbook zur Nutzer-Erstellung
Hier ist ein einfaches Playbook, das einen neuen Benutzer auf mehreren Hosts erstellt:
---
- hosts: all
become: true
tasks:
- name: Erstelle einen neuen Benutzer
user:
name: "john"
state: present
password: "{{ 'geheimesPasswort' | password_hash('sha512') }}"
shell: /bin/bash
groups: "sudo"
Erklärung:
- Der Befehl
user
erstellt einen Benutzer mit dem Namenjohn
und setzt das Passwort sowie die Bash-Shell. - Die Option
groups: "sudo"
fügt den Benutzer dersudo
-Gruppe hinzu, um ihm Administratorrechte zu geben. - Das Passwort wird mithilfe des Jinja2-Filters
password_hash
sicher gehasht.
Nutzer löschen
Falls du einen Benutzer entfernen möchtest, kannst du einfach das state
auf absent
setzen:
- name: Lösche einen Benutzer
user:
name: "john"
state: absent
3. Gruppenverwaltung
Neben der Nutzerverwaltung ist es oft notwendig, bestimmte Gruppen für Benutzer zu definieren. Das group
-Modul hilft dir dabei.
Beispiel für das Erstellen einer Gruppe:
- name: Erstelle eine Gruppe
group:
name: "entwickler"
state: present
Erklärung: Dieser Task erstellt die Gruppe entwickler
, falls sie noch nicht existiert.
4. Software-Installation mit Ansible
Eine der Hauptaufgaben von Ansible ist die Verwaltung und Installation von Software auf Remote-Systemen. Ansible bietet dafür eine Vielzahl von Modulen, abhängig vom Betriebssystem.
Paketinstallation auf Debian-basierten Systemen mit apt
Das apt
-Modul wird auf Debian-basierten Systemen wie Ubuntu verwendet. Hier ist ein Beispiel für die Installation von nginx
:
---
- hosts: webserver
become: true
tasks:
- name: Update der Paketliste
apt:
update_cache: yes
- name: Installiere Nginx
apt:
name: nginx
state: present
Erklärung:
- Der erste Task aktualisiert die Paketliste mit
update_cache: yes
. - Der zweite Task installiert das Paket
nginx
, falls es noch nicht vorhanden ist (state: present
).
Paketinstallation auf Red Hat-basierten Systemen mit yum
Für CentOS, RHEL und Fedora-Systeme verwendest du das yum
-Modul:
---
- hosts: webserver
become: true
tasks:
- name: Installiere Nginx auf Red Hat-basierten Systemen
yum:
name: nginx
state: present
5. Dienstverwaltung mit Ansible
Nachdem Software installiert wurde, musst du möglicherweise Dienste starten, stoppen oder neustarten. Hier kommt das service
-Modul ins Spiel.
Dienst starten und aktivieren
Hier ist ein Beispiel, um sicherzustellen, dass der nginx
-Dienst läuft und beim Systemstart aktiviert ist:
- name: Starte und aktiviere Nginx
service:
name: nginx
state: started
enabled: yes
Erklärung:
state: started
stellt sicher, dass der Dienst läuft.enabled: yes
aktiviert den Dienst für den Systemstart.
Dienst stoppen
Falls du den Dienst stoppen möchtest, kannst du den state
auf stopped
setzen:
- name: Stoppe Nginx
service:
name: nginx
state: stopped
6. Dateien und Verzeichnisse verwalten
Das file
-Modul ist ein vielseitiges Werkzeug, um Berechtigungen zu setzen, Dateien zu erstellen oder Verzeichnisse zu verwalten.
Beispiel: Verzeichnis erstellen
Um ein Verzeichnis auf einem Remote-Host zu erstellen, kannst du das file
-Modul wie folgt verwenden:
- name: Erstelle ein Verzeichnis
file:
path: /var/www/html
state: directory
mode: '0755'
Erklärung:
path
gibt den Pfad des Verzeichnisses an.state: directory
stellt sicher, dass es ein Verzeichnis ist.mode: '0755'
setzt die Berechtigungen für das Verzeichnis.
Beispiel: Datei kopieren
Das copy
-Modul erlaubt es dir, Dateien auf Remote-Hosts zu kopieren. Hier ein Beispiel, um eine lokale Datei auf den Server zu kopieren:
- name: Kopiere eine Datei auf den Remote-Host
copy:
src: /local/path/to/file.conf
dest: /etc/nginx/nginx.conf
mode: '0644'
Fazit
In diesem Tutorial haben wir einen umfassenden Überblick über wichtige Ansible-Module gegeben, die für die tägliche Systemadministration unverzichtbar sind. Von der Einrichtung neuer Benutzer und Gruppen bis hin zur Installation von Software und Verwaltung von Diensten deckt Ansible alle wesentlichen Aufgaben ab, die für die Automatisierung von IT-Infrastrukturen notwendig sind.
Mit diesen grundlegenden Kenntnissen bist du in der Lage, dein Netzwerk effizient zu verwalten und Aufgaben wie Software-Installationen oder Nutzer-Einrichtungen automatisiert auf mehreren Systemen auszuführen. Ansible bietet jedoch noch viel mehr – durch das Erstellen komplexer Playbooks und das Verwenden von Rollen kannst du deine Automatisierung noch weiter ausbauen.
Viel Spaß beim Automatisieren! Wenn du Fragen hast oder deine eigenen Tipps teilen möchtest, lass es uns in den Kommentaren wissen.