↓ Zum Hauptinhalt springen
  1. Anleitungen/

Ansible installieren: Server automatisieren unter Linux

Patrick Adams
Autor
Patrick Adams
Linux-Administrator und IT-Specialist. Ich schreibe über Server, Self-Hosting und Open-Source-Software, praxisnah und selbst getestet. Mehr über mich →
Inhaltsverzeichnis
Mit Ansible erledigst du Aufgaben auf vielen Servern gleichzeitig, statt dich auf jedem einzeln anzumelden. Auf den Zielservern brauchst du dafür nichts zu installieren, ein SSH-Zugang reicht.
Voraussetzungen: Ein Rechner mit Debian oder Ubuntu, auf dem Ansible läuft, und SSH-Zugriff per Schlüssel auf die Server, die du verwalten willst. Auf den Zielservern muss Python 3 installiert sein, was bei Debian und Ubuntu standardmäßig der Fall ist.

Ansible installieren
#

System aktualisieren
#

sudo apt update && sudo apt upgrade -y

Installation unter Debian
#

Debian bringt Ansible direkt in den offiziellen Paketquellen mit:

sudo apt install ansible -y

Installation unter Ubuntu
#

Unter Ubuntu bekommst du über das offizielle PPA eine aktuellere Version:

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ansible/ansible --yes --update
sudo apt install ansible -y

Das Paket ansible enthält neben dem Kern auch viele nützliche Module, zum Beispiel für Docker oder Firewalls. Mit ansible-core bekommst du nur die Grundausstattung.

Installation prüfen
#

ansible --version

Erste Schritte mit Ansible
#

Projektordner und Inventar anlegen
#

Im Inventar trägst du die Server ein, die Ansible verwalten soll:

mkdir -p ~/ansible && cd ~/ansible && nano inventory.ini
[server]
server1.deine-domain.de
server2.deine-domain.de

[server:vars]
ansible_user=admin

Statt Domains kannst du auch IP-Adressen eintragen. Bei ansible_user steht der Benutzer, mit dem Ansible sich per SSH anmeldet.

Verbindung testen
#

ansible server -i inventory.ini -m ping

Antwortet jeder Server mit pong, klappt die Verbindung.

Erstes Playbook: Alle Server aktualisieren
#

Ein Playbook beschreibt, was Ansible tun soll. Leg die Datei update.yml an:

nano update.yml
- name: Server aktualisieren
hosts: server
become: true
tasks:
- name: Paketlisten aktualisieren und alle Pakete upgraden
ansible.builtin.apt:
update_cache: true
upgrade: dist

- name: Nicht mehr benötigte Pakete entfernen
ansible.builtin.apt:
autoremove: true
autoclean: true

- name: Prüfen, ob ein Neustart nötig ist
ansible.builtin.stat:
path: /var/run/reboot-required
register: reboot_required

- name: Hinweis auf Neustart ausgeben
ansible.builtin.debug:
msg: "Dieser Server muss neu gestartet werden."
when: reboot_required.stat.exists

Playbook ausführen
#

ansible-playbook -i inventory.ini update.yml --ask-become-pass

Mit --ask-become-pass fragt Ansible einmal nach deinem sudo-Passwort. Danach werden alle Server nacheinander aktualisiert, und am Ende siehst du, auf welchen sich etwas geändert hat und welche einen Neustart brauchen.

Willst du ein Playbook erst testen, ohne etwas zu verändern, hängst du --check an. Ansible zeigt dir dann nur, was es tun würde.

Verwandte Artikel