Table of Contents
Motivation
Eine einzelne Ubuntu-Maschine zu warten, ist noch überschaubar. Man loggt sich per SSH ein, installiert ein paar Pakete, macht ein Update – und dann läuft die Kiste wieder.
In der Robotik bleibt es aber selten bei einer Maschine. Sobald mehrere Roboter im Einsatz sind, sitzt man plötzlich vor einem kleinen Zoo aus Linux-Systemen.
Dann beginnt die klassische Runde:
SSH auf Rechner eins, Updates einspielen.
SSH auf Rechner zwei, dieselben Updates einspielen.
SSH auf Rechner drei – na, Du ahnst es schon.
Spätestens nach dem fünften Roboter merkt man: Das ist weniger Systemadministration und mehr Fleißarbeit mit Copy-Paste.
Genau hier kommt Ansible ins Spiel. Mit sogenannten Playbooks beschreibt man einfach den gewünschten Zustand der Systeme – welche Pakete installiert sein sollen, welche Konfigurationen gelten, welche Updates eingespielt werden. Ansible kümmert sich dann darum, diese Zustände automatisch auf allen Zielrechnern umzusetzen.
Gerade in Robotik-Umgebungen mit vielen verteilten Rechnern sorgt dieser Ansatz dafür, dass Wartung nicht mehr Handarbeit ist – sondern planbar, reproduzierbar und vor allem deutlich entspannter.
Ansible
Ansible wurde 2012 von Michael DeHaan entwickelt und als Open-Source-Projekt veröffentlicht. 2015 wurde das Unternehmen Ansible, Inc. von Red Hat übernommen, das wiederum seit 2019 zu IBM gehört.
Es ist ein agentenloses Automatisierungstool – das heißt, auf den Zielrechnern muss keine zusätzliche Software installiert werden. Ansible verbindet sich einfach per SSH und führt die gewünschten Aufgaben aus.
Setup
Für dieses Tutorial brauchst Du einen Ubuntu-PC und einen Raspberry Pi mit einem installierten Ubuntu. Auf deinem Control-Rechner (also deinem PC) läuft Ansible und der SSH Client, auf dem Raspberry (also dem Remote-Rechner) muss der SSH-Server aktiviert sein.
Installation
Auf deinem Control-Rechner installierst du Ansible wie folgt:
sudo apt update
sudo apt install ansible
sudo apt install sshpass
Jetzt kannst Du testen, ob die Installation geklappt hat:
ansible --version
SSH aktivieren
Damit Ansible funktioniert, muss auf dem Raspberry aka Remote-Rechner SSH eingerichtet sein.
Probier mal im Terminal deines Control-Rechners aus, dich mit dem Raspberry zu verbinden:
ssh pi@192.168.178.50
Falls das nicht klappt, musst du SSH auf dem Raspberry aktivieren. Das geht ganz einfach über die raspi-config:
sudo raspi-config
Dann navigierst du zu “Interfacing Options” -> “SSH” und aktivierst den SSH-Server.
Projektordner
Auf deinem Control-Rechner legst du dir z.B. einen Projektordner an:
mkdir ~/ansible
cd ansible
touch hosts
touch ansible.cfg
touch update_pi.yml
Die Ordnerstruktur soll nachher so aussehen:
ansible/
├── hosts
├── update_pi.yml
└── ansible.cfg
hosts-Datei anlegen
In der hosts-Datei stehen die Rechner und ihre IP-Adressen bzw. ihre A-Records.
[raspberry]
pi1 ansible_host=192.168.178.66 ansible_user=<username>
ansible.cfg
Die ansible.cfg Datei ist die Konfigurationsdatei für Ansible.
Hier kannst du verschiedene Einstellungen vornehmen, z.B. den Pfad zu deiner hosts-Datei.
Ein einfaches Beispiel sieht so aus
[defaults]
inventory = hosts
Playbooks
Playbooks sind die Ansible-Äquivalente zu Skripten, sie beschreiben die gewünschten Zustände der Zielrechner.
Ein einfaches Playbook für die Updates des Raspberrys könnte so aussehen:
update_pi.yml
---
- name: Update Raspberry Pi
hosts: raspberry
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Upgrade all packages
apt:
upgrade: dist
Im Detail
| Ansible | Bash |
|---|---|
| become: yes | sudo |
| apt: update_cache: yes | apt update |
| upgrade: dist | apt upgrade |
| autoremove: yes | apt autoremove |
Ansible starten
Wenn du diese drei Dateien anegelegt hast, kann es auch schon losgehen
ping
Der ping-Befehl ist ein Testmodul von Ansible, das überprüft, ob der Host erreichbar und ausführbar ist.
Wenn du Passwort-Login benutzt musst du Ansible sagen, dass es nach einem SSH-Passwort fragen soll:
Das -k steht für –ask-pass
ansible -i hosts raspberry -m ping -k
SSH password:
Wenn alles funktioniert, solltest du folgenden Output sehen:
pi1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Playbook starten
Jetzt zum eigentlichen Task:
ansible-playbook -i hosts update_pi.yml -k -K
Da wir sudu apt update / upgrade machen wollen, müssen wir auch das root-PW übergeben. Das machen wir mit dem Flag -K.
-K steht für –ask-become-pass, damit wird Ansible nach dem sudo-Passwort fragen.
Zertifikat-Login
Da wir aber nicht permanent die
Ansible unterstützt auch die Authentifizierung mit Zertifikaten, was sicherer ist als die Passwort-Authentifizierung.
Dazu musst du auf deinem Control-Rechner ein SSH-Schlüsselpaar generieren und den öffentlichen Schlüssel auf den
Zielrechner kopieren.
ssh-keygen -t rsa -b 4096 -C "@ansible-controller"
ssh-copy-id @192.168.178.66
Danach kannst du Ansible ohne Passwort verwenden, indem du einfach den Hostnamen angibst:
ansible-playbook -i hosts update_pi.yml -K
Weitere Beispiele
Ubuntu-Pakete installieren
Man kann natürlich auch andere Pakete installieren, z.B. git:
tasks:
- name: Install git
apt:
name: git
state: present
update_cache: yes
Git Repository klonen
Auch das Klonen eines Git-Repositories ist mit Ansible kein Problem:
tasks:
- name: Clone Git repo
git:
repo: https://github.com/user/meinprojekt.git
dest: /home/pi/meinprojekt
version: main
Fazit
Ansible ist ein mächtiges Werkzeug, um die Wartung von Robotern zu automatisieren. Es ermöglicht dir, den Zustand deiner
Systeme zu beschreiben und automatisch umzusetzen, ohne dich manuell auf jedem Rechner einzuloggen. Gerade in Umgebungen
mit vielen verteilten Rechnern spart das enorm viel Zeit und Nerven.






