Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Einen Rechner aus einer Datei einrichten (Ansible)

Nach dieser Lektion: Ich kann ein Playbook schreiben, das einen Rechner einrichtet und beim zweiten Lauf nichts mehr ändert.

Lektion, 55 Min.10 BefehleAnsible-Lab: eine Maschine mit einem Playbook konfigurieren, im Browser

Fünf Server, fünf verschiedene Einrichtungen

Ein mittelständisches Unternehmen betreibt fünf Webserver. Verschiedene Personen haben sie in zwei Jahren von Hand eingerichtet. Einer antwortet langsam, und niemand weiß warum.

Die Lösung: Die Einrichtung steht in einer Datei, und ein Werkzeug gleicht jeden Rechner damit ab. Fällt ein Server aus, bauen Sie in Minuten einen gleichen neu auf.

Am Ende dieser Lektion

Notiz

Ich kann ein Playbook schreiben, das einen Rechner einrichtet und beim zweiten Lauf nichts mehr ändert.

Schlüsselbegriffe

BegriffWas er bedeutetBeispiel
Playbookeine Datei, die beschreibt, wie Rechner eingerichtet sein sollen
Taskein einzelner Schritt in einem Playbook
Modulein eingebautes Werkzeug, das ein Task benutztansible.builtin.file
Inventardie Liste der Rechner, die verwaltet werden
Idempotentgefahrlos wiederholbar, weil der zweite Lauf nichts ändert
Vorlageeine Datei mit Lücken, die Variablen füllen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Playbook sagt, wie der Rechner sein soll

Ein Playbook sagt nicht "lege einen Ordner an". Es sagt "dieser Ordner muss existieren".

Das Werkzeug sieht sich den Rechner an, erkennt, was schon stimmt, und behebt nur, was nicht stimmt. Sie beschreiben den Zielzustand. Die Schritte findet das Werkzeug.

Diese VM enthält einen Projektordner. Wechseln Sie hinein und lesen Sie die Dateien. Die Runs teilen sich ein Terminal, der Wechsel bleibt also bestehen.

In den Projektordner wechseln

Befehl
cd ~/ansible-lab

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Playbook lesen

Befehl
cat site.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Inventar lesen

Befehl
cat inventory.ini

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zweimal ausführen, nichts ändert sich mehr

Ein Task ist idempotent, wenn er beliebig oft laufen darf und stets dasselbe Ergebnis bleibt. Der erste Lauf leistet die Arbeit. Der zweite findet nichts mehr zu tun.

Probieren Sie es aus. Der nächste Run schreibt ein kleines eigenes Playbook, practice.yml. Es legt einen Ordner und eine Notiz in /tmp an. Es liegt neben site.yml und lässt es in Ruhe.

Ein eigenes Übungs-Playbook schreiben

Befehl
printf '%s\n' '- hosts: localhost' '  gather_facts: false' '  vars:' '    team: Finanzen' '  tasks:' '    - name: Notizordner anlegen' '      ansible.builtin.file:' '        path: /tmp/notizen-demo' '        state: directory' '    - name: Notiz schreiben' '      ansible.builtin.copy:' '        dest: /tmp/notizen-demo/notiz.txt' '        content: "Hallo {{ team }}"' > practice.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zum ersten Mal ausführen

Befehl
ansible-playbook practice.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Noch einmal ausführen

Befehl
ansible-playbook practice.yml

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Irrtum

Warnung

Viele halten ein Playbook für ein Shell-Skript in YAML. Ein Skript führt jeden Schritt jedes Mal aus. Ein Modul prüft zuerst und handelt nur, wenn es muss. Nehmen Sie das Modul shell nur, wenn es kein anderes gibt, denn es meldet bei jedem Lauf eine Änderung.

Eine Vorlage füllt Lücken aus Variablen

Eine Vorlage ist eine Datei mit Lücken wie {{ site_name }}. Beim Erzeugen füllt eine Variable jede Lücke.

Ändern Sie die Variable, ändert sich die Datei, ganz ohne Handarbeit. Eine Variable setzen Sie auf der Kommandozeile mit -e.

Lesen Sie zuerst die Vorlage des Labs. Ändern Sie dann das Team im Übungs-Playbook.

Die Vorlage des Labs lesen

Befehl
cat templates/welcome.txt.j2

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Mit einem anderen Team ausführen

Befehl
ansible-playbook practice.yml -e team=Support

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Probelauf: Was würde sich zurückändern?

Befehl
ansible-playbook practice.yml --check --diff

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Notiz lesen

Befehl
cat /tmp/notizen-demo/notiz.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Weiterführend: ein Shell-Task, der immer ändert

Schreiben Sie mit printf ein Playbook shell.yml mit einem einzigen Task. Er nutzt ansible.builtin.shell und führt date > /tmp/notizen-demo/zeitstempel.txt aus. Führen Sie es zweimal aus und lesen Sie jedes Mal die Zusammenfassung.

Ergänzen Sie dann unter dem Task args: mit creates: /tmp/notizen-demo/zeitstempel.txt. Führen Sie es wieder zweimal aus. Erklären Sie, was creates am Ergebnis ändert.

Über dieses Lab und seinen Quellcode: Ansible-Lab: eine Maschine mit einem Playbook konfigurieren, im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.