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 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.
Jetzt haben wir die Playbooks selbst. Sobald Ansible das Inventar gelesen hat und alle Hosts kennt, beginnt es mit der Suche, was zu tun ist. Das ist das Playbook, bei dem es sich lediglich um eine einfache YAML-Datei handelt, die „Module“ zur Ausführung der Aufgaben verwendet. Die Dokumentation zu diesen Modulen finden Sie auf der Ansible-Website. Wenn etwas nicht klar ist, ist dies [Einsteiger-Ansible-Video] von NetworkChuck leistet gute Erklärungsarbeit.
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 mächtig`
Wenn das funktioniert, können wir unsere Playbooks auf diesem Knoten bereitstellen.
Das von uns bereitgestellte Playbook aktualisiert einfach das System, startet es neu und wartet dann darauf, dass es wieder online ist. Wenn Sie mehrere Knoten in der Gruppe haben, durchläuft sie jeden Knoten einzeln und wartet darauf, dass der vorherige wieder online ist, bevor der nächste neu gestartet wird. Dies gibt den Diensten auf dem Knoten ausreichend Zeit zum Herunterfahren und Migrieren, wenn Sie so etwas verwenden Docker-Schwarm.
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.
-Ethan Edwards
Beteiligen Sie sich an StorageReview
Newsletter | YouTube | LinkedIn | Instagram | Twitter | Facebook | TikTok | RSS Feed