Ansible Gruppeninventar

AnsibleAnsibleBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab erfahren Sie, wie Sie Ansible-Inventar-Dateien erstellen und konfigurieren. Ansible verwendet Inventar-Dateien, um die von ihm verwalteten Hosts zu definieren und zu organisieren. Sie werden die Grundstruktur einer Inventar-Datei untersuchen, Gruppen erstellen, Gruppenhierarchien aufbauen und Variablen an Gruppen zuweisen. Diese Fähigkeiten sind für die effektive Verwaltung Ihrer Infrastruktur mit Ansible unerlässlich.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 98% ist. Es hat eine positive Bewertungsrate von 99% von den Lernenden erhalten.

Erstellen eines einfachen Inventars

Die Lab-Umgebung wurde bereits so vorkonfiguriert, dass über SSH auf den lokalen Rechner zugegriffen werden kann. Sie können localhost als Zielhost für alle Ansible-Operationen in diesem Lab verwenden.

Eine Ansible-Inventar-Datei definiert die Hosts und Hostgruppen, auf denen Befehle, Module und Aufgaben in einer Playbook ausgeführt werden. Lassen Sie uns eine einfache Inventar-Datei erstellen.

Erstellen Sie eine neue Datei namens inventory im Verzeichnis /home/labex/project:

nano /home/labex/project/inventory

Fügen Sie der Datei den folgenden Inhalt hinzu:

localhost ansible_connection=local

Lassen Sie uns dies analysieren:

  • localhost: Dies ist der Name des Hosts. In diesem Fall handelt es sich um den lokalen Rechner.
  • ansible_connection=local: Dies ist eine Ansible-Variable, die Ansible anweist, lokal mit diesem Host zu verbinden, anstatt über SSH. Dies ist nützlich für die Verwaltung des lokalen Rechners.

Speichern Sie die Datei und verlassen Sie den Editor (in nano drücken Sie Ctrl+X, dann Y und anschließend Enter).

Jetzt lassen Sie uns unser Inventar mit Ansible's ping-Modul testen. Das ping-Modul verwendet tatsächlich nicht das ICMP-Ping-Protokoll; stattdessen überprüft es, ob Ansible eine Verbindung zum Host herstellen und Python-Code ausführen kann.

Führen Sie diesen Befehl aus:

ansible -i inventory -m ping all

Lassen Sie uns diesen Befehl analysieren:

  • -i inventory: Gibt die zu verwendende Inventar-Datei an.
  • -m ping: Weist Ansible an, das ping-Modul zu verwenden.
  • all: Zielt auf alle Hosts im Inventar ab.

Sie sollten eine Ausgabe sehen, die auf eine erfolgreiche Verbindung hinweist:

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Wenn Sie diese Ausgabe sehen, bedeutet dies, dass Ansible erfolgreich eine Verbindung zum localhost hergestellt und das ping-Modul ausgeführt hat.

Gruppieren von Hosts

Ansible ermöglicht es Ihnen, Hosts in Gruppen zu organisieren. Dies ist nützlich, um Konfigurationen auf mehrere Hosts gleichzeitig anzuwenden oder Aufgaben auf ihnen auszuführen. Lassen Sie uns unser Inventar so ändern, dass es eine Gruppe enthält.

Bearbeiten Sie die inventory-Datei:

nano /home/labex/project/inventory

Aktualisieren Sie den Inhalt wie folgt:

[webservers]
localhost ansible_connection=local

Dies definiert eine Gruppe namens webservers, die unseren lokalen Host enthält. In Ansible werden Gruppen definiert, indem der Gruppenname in eckige Klammern [] gesetzt wird. Alle Hosts, die unter einer Gruppe aufgeführt sind, gehören zu dieser Gruppe.

Speichern Sie die Datei und verlassen Sie den Editor.

Jetzt lassen Sie uns unsere Gruppe mit dem ping-Modul testen:

ansible -i inventory -m ping webservers

Dieser Befehl ähnelt dem vorherigen, aber anstelle von all richten wir uns jetzt auf die webservers-Gruppe.

Sie sollten die gleiche erfolgreiche Ausgabe wie zuvor sehen, aber jetzt richten wir uns explizit auf die webservers-Gruppe. Dies mag mit nur einem Host unnötig erscheinen, aber je größer Ihr Inventar wird, desto nützlicher wird das Gruppieren, um bestimmte Hostgruppen anzusteuern.

Erstellen von Gruppenhierarchien

Ansible unterstützt verschachtelte Gruppen, sodass Sie Hierarchien erstellen können. Dies ist nützlich, um Hosts basierend auf ihren Rollen oder Umgebungen zu organisieren. Lassen Sie uns eine weitere Gruppe hinzufügen und eine Hierarchie erstellen.

Bearbeiten Sie die inventory-Datei:

nano /home/labex/project/inventory

Aktualisieren Sie den Inhalt wie folgt:

[webservers]
localhost ansible_connection=local

[production:children]
webservers

Dies erstellt eine neue Gruppe namens production, die alle Hosts der webservers-Gruppe enthält. Das Suffix :children teilt Ansible mit, dass es sich bei dieser Gruppe um eine Gruppe von Gruppen und nicht um eine Gruppe von Hosts handelt.

Hier ist, was diese Hierarchie bedeutet:

  • Jeder Host in der webservers-Gruppe ist auch implizit in der production-Gruppe.
  • Sie können Konfigurationen auf alle Produktionshosts anwenden, indem Sie die production-Gruppe ansteuern.
  • Sie können bei Bedarf auch weiterhin nur die webservers ansteuern.

Speichern Sie die Datei und verlassen Sie den Editor.

Testen Sie die neue Gruppenhierarchie:

ansible -i inventory -m ping production

Dieser Befehl sollte alle Hosts in der production-Gruppe pingen, was alle Hosts in der webservers-Gruppe umfasst. In unserem Fall ist es immer noch nur der localhost, aber in einer realen Umgebung ermöglicht diese Struktur eine leistungsstarke und flexible Hostverwaltung.

Zuweisen von Variablen zu Gruppen

Ansible ermöglicht es Ihnen, Variablen in der Inventar-Datei Gruppen zuzuweisen. Diese Variablen können in Playbooks und Vorlagen verwendet werden, wodurch Ihr Ansible-Code flexibler und wiederverwendbarer wird.

Bearbeiten Sie die inventory-Datei:

nano /home/labex/project/inventory

Aktualisieren Sie den Inhalt wie folgt:

[webservers]
localhost ansible_connection=local

[production:children]
webservers

[webservers:vars]
http_port=80

Dies weist der Variable http_port mit dem Wert 80 alle Hosts in der webservers-Gruppe zu. Das Suffix :vars wird verwendet, um Variablen für eine Gruppe zu definieren.

Speichern Sie die Datei und verlassen Sie den Editor.

Jetzt erstellen wir ein einfaches Playbook, um diese Variable anzuzeigen. Ein Playbook ist eine YAML-Datei, die eine Reihe von Aufgaben definiert, die auf Hosts ausgeführt werden sollen. Erstellen Sie eine neue Datei namens show_http_port.yml:

nano /home/labex/project/show_http_port.yml

Fügen Sie den folgenden Inhalt hinzu:

---
- name: Show HTTP Port
  hosts: webservers
  tasks:
    - name: Display HTTP Port
      debug:
        msg: "The HTTP port is {{ http_port }}"

Dieses Playbook:

  • Zielt auf die webservers-Gruppe ab
  • Hat eine einzelne Aufgabe, die das debug-Modul verwendet, um eine Nachricht anzuzeigen
  • Verwendet die Syntax {{ http_port }}, um auf die Variable zu verweisen, die wir in der Inventar-Datei definiert haben

Speichern Sie die Datei und verlassen Sie den Editor.

Führen Sie das Playbook aus:

ansible-playbook -i inventory show_http_port.yml

Sie sollten eine Ausgabe sehen, die den Wert des HTTP-Ports anzeigt:

PLAY [Show HTTP Port] ********************************************************

TASK [Gathering Facts] ********************************************************
ok: [localhost]

TASK [Display HTTP Port] ******************************************************
ok: [localhost] => {
    "msg": "The HTTP port is 80"
}

PLAY RECAP ********************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Dies zeigt, dass die Variable, die wir in der Inventar-Datei definiert haben, in unserem Playbook zugänglich ist.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Ansible-Inventarverwaltung gelernt. Sie haben eine einfache Inventar-Datei erstellt und gelernt, wie Sie das Ansible-ping-Modul verwenden, um die Konnektivität zu überprüfen. Sie haben untersucht, wie Sie Hosts gruppieren und Gruppenhierarchien erstellen können, was für die Organisation und Verwaltung größerer Infrastrukturen unerlässlich ist. Schließlich haben Sie gelernt, wie Sie Variablen Gruppen zuweisen und in einem einfachen Playbook verwenden können.

Diese Fähigkeiten bilden die Grundlage für die Arbeit mit Ansible und werden Ihnen bei der Bearbeitung komplexerer Automatisierungsaufgaben unschätzbar sein. Denken Sie daran, dass eine effektive Inventarverwaltung der Schlüssel zu skalierbaren und wartbaren Ansible-Projekten ist. Wenn Sie Ihre Reise mit Ansible fortsetzen, sollten Sie auch fortgeschrittenere Inventarfunktionen wie dynamische Inventare und Inventar-Plugins erkunden.

Übung ist der Schlüssel zur Beherrschung dieser Konzepte. Versuchen Sie, komplexere Inventare zu erstellen, experimentieren Sie mit verschiedenen Gruppenstrukturen und verwenden Sie Variablen in fortgeschritteneren Playbooks. Je mehr Sie mit Ansible arbeiten, desto vertrauter werden Sie sich mit seinen leistungsstarken Automatisierungsfunktionen fühlen.