StorageReview.com

Erste Schritte mit Ansible

Unternehmen  ◇  Software

Ansible ist eine großartige Möglichkeit, Änderungen massenhaft auf mehreren Maschinen bereitzustellen. Ich habe es beispielsweise verwendet, um einige grundlegende Einstellungen auf einem neuen Computer vorzunehmen und mehrere Hosts gleichzeitig zu aktualisieren. Es ist auch wichtig zu bedenken, dass Ansible nicht nur in Homelab-Umgebungen verwendet wird, sondern auch in Unternehmensumgebungen sehr beliebt ist, was es zu einer sehr wertvollen Fähigkeit macht.

Ansible auf einer neuen Maschine einrichten

Zuerst müssen wir das „ansible“-Paket installieren. Es sollte so einfach sein wie:

` sudo apt update && sudo apt install ansible `

Und wir müssen unser Ansible-Verzeichnis erstellen, aus dem wir arbeiten können:

` mkdir ~/ansible && cd ~/ansible `

Sie sollten sich jetzt im Ansible-Verzeichnis auf Ihrem lokalen Computer befinden.

Ansible-Übersicht

Wir nutzen die beiden Hauptfunktionen von Ansible: Inventare, die alle Ihre Hosts speichern, und Playbooks, die die „Anweisungen“ zur Ausführung auf den Hosts enthalten. Damit Ansible unser Playbook lesen und die Aktionen ausführen kann, muss es wissen, wo sich die Hosts befinden, also in der Inventardatei. Es handelt sich lediglich um eine „Inventarisierung“ aller Hosts.

Nachdem Ansible das Inventar eingelesen und alle Hosts erkannt hat, beginnen die Playbooks, die auszuführenden Aktionen zu ermitteln. Das Playbook ist eine einfache YAML-Datei, die sogenannte Module verwendet. Die Dokumentation zu diesen Modulen finden Sie auf der Ansible-Website . Sollten Sie etwas nicht verstehen, erklärt dieses Ansible-Einführungsvideo von NetworkChuck die Zusammenhänge gut.

Erstellen unseres Ansible-Inventars

Nachdem wir nun ein grundlegendes Verständnis von Ansible und seiner Funktionsweise haben, können wir unser Inventar erstellen. Das Format kann entweder in YAML oder INI sein. Der Einfachheit halber verwenden wir INI und fügen nur einen Host hinzu.

Hier ist eine Beispieldatei:

inventory.ini:
„`ini
[mächtig]
192.168.1.78
“`

Nennen Sie es „inventory.ini“ in Ihrem „ansible“-Verzeichnis. Diese Datei erstellt eine „Gruppe“ von „Leistungsstarken“ mit einem einzelnen Host von „192.168.1.78“. Wir können dies später in unseren Playbooks verwenden. Sie können ihm je nach Konfiguration einen beliebigen Gruppennamen und eine beliebige IP-Adresse zuweisen. Bei Bedarf können Sie der Gruppe auch weitere Hosts hinzufügen.

Bereitstellen von Ansible-Playbooks

Zunächst möchten wir überprüfen, ob Ansible funktioniert:

Beachten Sie, dass sich unser öffentlicher SSH-Schlüssel in der Datei „authorized_keys“ auf dem Host befinden muss, den wir erreichen möchten. Wenn nicht, schlägt dieser Befehl fehl. Wir verwenden die Gruppe „leistungsstark“, verwenden aber den Namen, den Sie Ihrer Gruppe gegeben haben.

` ansible -i ./inventory.ini -m ping -u administrator powerful `

Wenn das funktioniert, können wir unsere Playbooks auf diesem Knoten bereitstellen.

Das von uns eingesetzte Playbook aktualisiert das System, startet es neu und wartet anschließend, bis es wieder online ist. Bei mehreren Knoten in der Gruppe wird jeder Knoten nacheinander durchlaufen, wobei jeweils auf die Wiederherstellung des vorherigen Knotens gewartet wird, bevor der nächste neu gestartet wird. Dadurch haben die Dienste auf dem Knoten ausreichend Zeit, herunterzufahren und gegebenenfalls zu migrieren, falls Sie beispielsweise Docker Swarm verwenden.

update.yml:
„Yaml
– Name: Alle Knoten aktualisieren und neu starten
sammeln_Fakten: Nein
Hosts: „{{ variable_hosts }}“
werden: ja
Seriennummer: 1

Aufgaben:
– Name: Aktualisieren und Aktualisieren | {{ inventory_hostname }}
geeignet:
# Abwärtskompatibilität erzwingen
force_apt_get: ja
update_cache: ja
Upgrade: 'Ja'

– Name: Neustart | {{ inventory_hostname }}
Neustart:
# wie lange darauf gewartet wird, dass der Knoten nach dem Neustart wieder online ist
reboot_timeout: 300
# wie lange auf den Neustart gewartet werden soll, nachdem die vorherige Aufgabe (apt) abgeschlossen ist
pre_reboot_delay: 60

– Name: Ping | {{ inventory_hostname }}
Klingeln:

– Name: Pause | {{ inventory_hostname }}
Pause:
Minuten: 5
“`

`ansible-playbook -i ./inventory.ini -e variable_hosts=powerful -u Administrator -K ./update.yml`

![Bild der Playbook-Ausführung](./002-ansible-playbook-executed.png)

Erklärung der Flags:
– -i: Geben Sie die Inventardatei an.
– -e: Wir müssen den Host angeben, im Playbook haben wir eine Variable „variable_hosts“, die an das Playbook übergeben wird.
– -u: Dies ist der Benutzer, der zum Ausführen der Befehle auf dem Host verwendet wird.
– -K: Dies weist das Playbook an, den Benutzer zur Eingabe des Sudo-Passworts aufzufordern, andernfalls schlägt das Playbook fehl.

Abschließende Gedanken

Ansible ist ein unglaublich leistungsstarkes und vielseitiges Tool, das für eine Vielzahl von Dingen verwendet werden kann. Wir haben mit diesem Artikel kaum an der Oberfläche gekratzt, aber Sie sollten weiter experimentieren und Aufgaben automatisieren, um mehr darüber zu erfahren. Sei es die Automatisierung von Kubernetes-Bereitstellungen oder einfach nur die Aktualisierung Ihrer Systeme, wie wir es heute getan haben.

Ansible-Site

-Ethan Edwards

Beteiligen Sie sich an StorageReview

Newsletter | YouTube | Podcast (iTunes / Spotify) | Instagram | Twitter | TikTok | RSS-Feed

Gastautor