Für den Ansible Einstieg soll dir dieser Post einen kurzen Überblick geben und die Begrifflichkeiten erklären. Details findest du dann in den nachfolgenden Teilen des Tutorials.
Ansible ermöglicht es dir, wiederholende Aufgaben bei der Serverwartung zu automatisieren und zu vereinfachen. Dies gilt natürlich auch, wenn du mehrere Raspberry Pis einsetzt.
Über Ansible
Ansible wurde 2012 von Michael DeHaan als freie Software zur Orchestrierung von Servern in Python entwickelt und ist für alle großen Linux Distributionen verfügbar.
Der große Vorteil des Systems ist, dass auf den verwalteten Servern keine spezielle Software benötigt wird, ssh und Python reichen aus.
Das Tutorial umfasst mehrere Teile
1 | Einführung |
---|---|
2 | Das Inventory |
3 | Über Rollen und Tasks |
4 | Die Module |
5 | Playbooks |
6 | Konfiguration |
7 | gather_facts |
8 | eigene Module |
Installation
Ich benutze für dieses Tutorial den DietPi Raspi als Control Node und installiere darauf zunächst das Ansible Package
sudo apt install ansible
Jetzt braucht es etwas Vorbereitungsarbeit.
ssh Schlüssel
Es macht es Sinn alle Managed Nodes per Publickey über ssh ansprechen zu können, dass erspart dir die Passwortfummelei. Also legst du zunächst ein Keypair auf dem Control Node an (sofern du das noch nicht getan haben solltest).
ssh-keygen -t ed25519
Alle Eingaben, die danach erfolgen, kannst du einfach mit Return bestätigen.
Danach liegen im Verzeichnis ~/.ssh
die neuen Dateien id_
ed25519 und id_ed25519.pub
. In der ersten Datei ist dein privater Schlüssel gespeichert. Den darfst du niemals irgendwem gegenüber öffentlich machen. Die zweite enthält den öffentlichen Schlüssel. Diese kopierst du jetzt auf jeden Raspi, den du mit Ansible verwalten möchtest.
ssh-copy-id pi@<hostname>
Dies musst du für alle Pis wiederholen. Das wäre mit Hilfe von Ansible viel einfacher, aber so weit sind wir noch nicht. 😉
Damit wird dein Publickey auf den Raspi kopiert und in der Datei ~/.ssh/authorized_keys
abgelegt. Wenn du dich jetzt mit ssh einloggen willst, sendet ssh deinen privaten Schlüssel ans Remotesystem, dass diesen gegen den Publickey prüft und dadurch die Autorisierung feststellt. Für Ansible hat dies den Vorteil, dass du kein Passwort irgendwo ablegen musst, dass ggf. ausspioniert werden könnte.
Konfiguration
Ansible kann über eine zentrale Konfigurationsdatei ansible.cfg
konfiguriert werden.
Testaufbau
Für dieses Tutorial benutze ich folgenden Testaufbau:
- einen Raspberry Pi 4B als Control Node (terry)
- vier Raspberry Pi 4B in einem Stackgehäuse als Managed Nodes (quimby, willie, kirk, brandine)
terry benutzt DietPi OS, die Managed Nodes laufen auf Raspberry Pi OS / Debian 12.
Inventory
Im Inventory werden alle Managed Nodes verwaltet und ggf. Gruppen zugeordnet. Üblicherweise heißt
diese Datei inventory.yml
.
Playbooks
Playbooks sind definierte Abläufe von Aufgaben, die auf einem Managed Node abgearbeitet werden sollen.
Module
Ansible stellt viele Module bereit die in den Playbooks abgearbeitet werden können. Beispiele für häufig benutze Module sind apt
, file oder user. Beinah jedes Programm zur Systemverwaltung steht als Modul zur Verfügung
Ad-Hoc Kommandos
AD-HOC Kommandos kannst du mal eben auf die Schnelle außerhalb eines Playbooks absetzen, um etwas schnell zu testen.
Falls du das ohne mehrere Raspis nachvollziehen möchtest, kannst du gerne virtualisierte Server aufsetzen (z.B. mit VirtualBox oder Proxmox).
Control Node und Managed Nodes
Der Control Node ist der Raspi, von dem alle Aktionen ausgehen und auf dem die Ansible Software installiert ist.
Managed Nodes werden vom Control Node verwaltet und auf ihnen lediglich der Login über ssh
möglich sein und Python installiert sein.
Wie es oben steht, dient dieser Post nur als kurzer Ansible Einstieg. Im nächsten Kapitel erkläre ich dir das Inventory und wir setzen das erste AD-HOC Kommando ab.
Update 14.09.23 15:57 Algorithmus zur Keyerzeugung von rsa auf ed25519 umgestellt.