Ansible Einstieg Teil 1

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.

Ansible Logo (Quelle: Von Ansible/Red Hat – Wikipedia)

Ü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

1Einführung
2Das Inventory
3Über Rollen und Tasks
4Die Module
5Playbooks
6Konfiguration
7gather_facts
8eigene 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.

Olli Graf -raspithek.de
keygen-ed25519Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ansible Erzeugung des ssh Schlüsselpaars

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.

Schematische Darstellung: Control Nodes und Managed Nodes
Olli Graf -raspithek.de
nodesCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Schematische Darstellung: Control Nodes und Managed Nodes

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.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner