Ansible

So erstellen Sie Ansible Inventory im JSON-Format

So erstellen Sie Ansible Inventory im JSON-Format
Standardmäßig verwendet eine Ansible-Inventardatei das INI-Konfigurationsformat. Sie können auch das Konfigurationsformat JSON (JavaScript Object Notation) für Ansible-Inventardateien verwenden.

In diesem Artikel zeige ich Ihnen, wie Sie das JSON-Konfigurationsformat verwenden, um die Ansible-Inventardateien zu erstellen. Also lasst uns anfangen.

Voraussetzungen:

Wenn Sie die Beispiele dieses Artikels ausprobieren möchten,

1) Sie müssen Ansible auf Ihrem Computer installiert haben.
2) Sie müssen mindestens 6 Linux-Hosts für die Ansible-Automatisierung konfiguriert haben.

Es gibt viele Artikel auf LinuxHint, die sich mit der Installation von Ansible und der Konfiguration von Hosts für die Ansible-Automatisierung beschäftigen. Sie können sie bei Bedarf überprüfen.

Erstellen eines Projektverzeichnisses:

In diesem Artikel werde ich Visual Studio Code zum Bearbeiten der Ansible-Konfigurationsdatei, der Inventardatei und der Playbooks verwenden. Sie können jeden beliebigen Editor oder jede beliebige IDE verwenden.

Bevor Sie beginnen, erstellen wir ein Projektverzeichnis, damit wir unsere Projektdateien organisieren können.

Ich habe ein neues Projektverzeichnis erstellt json-Inventar/ in meinem ZUHAUSE Verzeichnis, wie Sie im Screenshot unten sehen können.

Nachdem Sie ein neues Projektverzeichnis erstellt haben, öffnen Sie es mit Ihrem bevorzugten Texteditor oder IDE.

Gehen Sie in Visual Studio Code zu Datei > Ordner öffnen… wie im Screenshot unten markiert.

Wählen Sie nun das Projektverzeichnis aus json-Inventar/ und klicke auf OK.

Das Projektverzeichnis sollte mit Visual Studio Code geöffnet werden.

Klicken Sie nun auf Neue Datei  und erstelle eine neue Datei ansible.cfg.

Geben Sie dann die folgenden Zeilen in die ein ansible.cfg Datei.

[Standardwerte]
Inventar          = Gastgeber.json
host_key_checking  = Falsch

Wenn Sie fertig sind, drücken Sie + S um die zu retten ansible.cfg Datei.

Erstellen Sie auf die gleiche Weise a Gastgeber.json Datei. Dies ist die JSON-Inventardatei. Lass es vorerst leer. Daran arbeiten wir später.

Klicken Sie nun auf Neuer Ordner  und erstelle ein neues Verzeichnis Spielbücher wie im Screenshot unten gezeigt.

Hinzufügen von Hosts zur JSON-Inventardatei:

In diesem Abschnitt zeige ich Ihnen, wie Sie Hosts zu Ihrer Inventardatei im JSON-Format hinzufügen.

In dem Gastgeber.json Inventardatei, fügen Sie eine alle Sektion.


"alle":

Im alle Abschnitt, fügen Sie a . hinzu Gastgeber Abschnitt und fügen Sie Ihre Gastgeber hinzu.


"alle":
"Gastgeber":
"host1": null,
"host2": null


Sie können beispielsweise die Hosts hinzufügen vm1.Knotendrachen.com und vm2.Knotendrachen.com in dem Gastgeber.json Inventardatei wie folgt.


"alle":
"Gastgeber":
"vm1.Knotendrachen.com": null,
"vm2.Knotendrachen.com": null


Wenn Sie fertig sind, drücken Sie + S um die zu retten Gastgeber.json Datei.

Sie können mit dem folgenden Befehl überprüfen, welche Hosts in Ihrer Inventardatei verfügbar sind:

$ ansible --list-hosts all

Wie Sie sehen können, haben die Hosts, die ich in meiner Inventardatei hinzugefügt habe (vm1.Knotendrachen.com und vm2.Knotendrachen.com) sind aufgeführt.

Gruppieren von Hosts in der JSON-Inventardatei:

In diesem Abschnitt zeige ich Ihnen, wie Sie Hosts in Ihrer JSON-Inventardatei gruppieren.

Die Standard-Hostgruppe in Ansible ist alle. Das alle group hat alle Hosts aus jeder Gruppe (einschließlich der Hosts aus alle Gruppe).

Sie fügen Hostgruppen in der in Kinder Abschnitt Ihrer JSON-Inventardatei.


"alle":

"Kinder":
"Gruppe 1":
,
"gruppe2":



Um beispielsweise die Hosts hinzuzufügen vm3.Knotendrachen.com und vm4.Knotendrachen.com in dem Netz Gruppe und um die Hosts hinzuzufügen vm5.Knotendrachen.com und vm6.Knotendrachen.com in dem db group geben Sie die folgenden Zeilen in Ihre JSON-Inventardatei ein.


"alle":
"Gastgeber":
"vm1.Knotendrachen.com": null,
"vm2.Knotendrachen.com": null
,
"Kinder":
"Netz":
"Gastgeber":
"vm3.Knotendrachen.com": null,
"vm4.Knotendrachen.com": null

,
"db":
"Gastgeber":
"vm5.Knotendrachen.com": null,
"vm6.Knotendrachen.com": null




Wenn Sie fertig sind, drücken Sie + S um die zu retten Gastgeber.json Datei.

Hier fügen die markierten Zeilen die Hosts hinzu vm3.Knotendrachen.com und vm4.Knotendrachen.com in dem Netz Gruppe.

Die markierten Zeilen fügen die Hosts hinzu vm5.Knotendrachen.com und vm6.Knotendrachen.com in dem db Gruppe.

Jetzt können Sie alle verfügbaren Hosts in Ihrer JSON-Inventardatei mit dem folgenden Befehl auflisten:

$ ansible --list-hosts all

Wie Sie sehen, sind alle Hosts jeder Gruppe (Netz, db, und alle) sind angezeigt.

So listen Sie die verfügbaren Hosts aus dem Netz nur Gruppe, führen Sie den folgenden Befehl aus:

$ ansible --list-hosts web

Wie Sie sehen können, sind alle Gastgeber in der Netz Gruppe werden angezeigt.

Auf die gleiche Weise können Sie alle verfügbaren Hosts aus dem db Gruppe mit folgendem Befehl:

$ ansible --list-hosts db

Wie Sie sehen können, sind alle Gastgeber in der db Gruppe werden angezeigt.

Hinzufügen globaler Fakten in der JSON-Inventardatei:

In Ansible werden Variablen auch als Fakten bezeichnet. Auf globale Fakten oder globale Variablen kann von jedem Host jeder Gruppe in Ihrer JSON-Inventardatei zugegriffen werden. In diesem Abschnitt zeige ich Ihnen, wie Sie globale Fakten oder globale Variablen in ansible hinzufügen.

Sie können globale Fakten oder globale Variablen im vars Abschnitt innen alle Abschnitt Ihrer JSON-Inventardatei wie folgt:


"alle":
"Gastgeber":

,
"vars":
"variable1": "Wert1",
"variable2": "value2"
,
"Kinder":
"Netz":

,
"db":




Sie können beispielsweise die globalen Fakten/Variablen hinzufügen webroot und Index in dem vars Abschnitt Ihrer JSON-Inventardatei wie folgt:


"alle":
"Gastgeber":
"vm1.Knotendrachen.com": null,
"vm2.Knotendrachen.com": null
,
"vars":
"webroot": "/var/www/html",
"index": "index.php"
,
"Kinder":
"Netz":
"Gastgeber":
"vm3.Knotendrachen.com": null,
"vm4.Knotendrachen.com": null

,
"db":
"Gastgeber":
"vm5.Knotendrachen.com": null,
"vm6.Knotendrachen.com": null




Wenn Sie fertig sind, drücken Sie + S um die JSON-Inventardatei zu speichern.

Um zu überprüfen, ob die globalen Fakten/Variablen funktionieren, werde ich ein neues Playbook erstellen print_vars1.yaml. Der Zweck dieses Playbooks ist es, die Fakten/Variablen unter Verwendung der debuggen Modul von Ansible. Es wird uns auch helfen, die Rangfolge von Fakten/Variablen später zu verstehen.

Also, erstelle ein neues Playbook print_vars1.yaml in deinem Spielbücher/ Verzeichnis und geben Sie die folgenden Zeilen in Ihr print_vars1.yaml Datei.

- Gastgeber: alle
Benutzer: ansible
Aufgaben:
- Name: Drucken Sie Webroot und Index
debuggen:
msg: 'WebRoot webroot und Index index'

Wenn Sie fertig sind, drücken Sie + S um die zu retten print_vars1.yaml Datei.

Um zu überprüfen, ob die globalen Fakten/Variablen funktionieren, führen Sie den print_vars1.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/print_vars1.yaml

Das Playbook sollte erfolgreich ausgeführt werden.

Scrollen Sie zurück zum AUFGABE Sektion. Wie Sie sehen können, ist die webroot und Index Fakten/Variablen werden auf jeden Host in meiner JSON-Inventardatei angewendet. Globale Fakten/Variablen funktionieren also.

Hinzufügen von Gruppenfakten in der JSON-Inventardatei:

Sie können auch Fakten/Variablen für eine bestimmte Gastgebergruppe hinzufügen. In diesem Abschnitt zeige ich Ihnen, wie Sie Gruppenfakten/-variablen zu Ihrer JSON-Inventardatei hinzufügen.

Ich werde das gleiche hinzufügen webroot und Index Fakten in der Netz Hostgruppe meiner JSON-Inventardatei. Der Wert dieser Fakten wird unterschiedlich sein. Ich habe es getan, damit Sie auch verstehen können, wie Fakten/Variablenvorrang in Ansible funktionieren.

Um die Fakten hinzuzufügen webroot und Index in dem Netz Hostgruppe, füge ein . hinzu vars Abschnitt in der Netz Abschnitt Ihrer JSON-Inventardatei wie folgt:


"alle":
"Gastgeber":
"vm1.Knotendrachen.com": null,
"vm2.Knotendrachen.com": null
,
"vars":
"webroot": "/var/www/html",
"index": "index.php"
,
"Kinder":
"Netz":
"Gastgeber":
"vm3.Knotendrachen.com": null,
"vm4.Knotendrachen.com": null
,
"vars":
"webroot": "/web/public_html",
"index": "index.html"

,
"db":
"Gastgeber":
"vm5.Knotendrachen.com": null,
"vm6.Knotendrachen.com": null




Wenn Sie fertig sind, drücken Sie + S um die JSON-Inventardatei zu speichern.

Um die Fakten zu überprüfen, führen Sie die print_vars1.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/print_vars1.yaml

Wie Sie sehen können, die Gruppenfakten webroot und Index sind nur für die Gastgeber verfügbar vm3.Knotendrachen.com und vm4.Knotendrachen.com, die Gastgeber in der Netz Gruppe.

Beachten Sie auch, dass die Gruppenfakten (webroot und Index) ersetzte die globalen Fakten (webroot und Index). Man kann also sagen, dass die Gruppenfakten einen höheren Vorrang haben als die globalen Fakten.

Hinzufügen von Host-Fakten in der JSON-Inventardatei:

Sie können Ihrer JSON-Inventardatei auch hostspezifische Fakten/Variablen hinzufügen. In diesem Abschnitt zeige ich Ihnen, wie Sie hostspezifische Fakten/Variablen zu Ihrer JSON-Inventardatei hinzufügen.

Für globale oder gruppenbezogene Fakten haben wir den Wert der Gastgeber beibehalten Null.

Um Host-Fakten hinzuzufügen, ersetzen Sie Null mit Ihren Host-Fakten in der JSON-Inventardatei wie folgt:

"Gastgeber":
"host1":
"var1": "Wert1",
"var2": "value2",
,
"host2":
"var2": "value3",
"var3": "value4",

Um zum Beispiel die hinzuzufügen Index Host-Fakt zu den vm5.Knotendrachen.com hosten, ersetzen Null mit den Host-Fakten wie folgt.


"alle":
"Gastgeber":
"vm1.Knotendrachen.com": null,
"vm2.Knotendrachen.com": null
,
"vars":
"webroot": "/var/www/html",
"index": "index.php"
,
"Kinder":
"Netz":
"Gastgeber":
"vm3.Knotendrachen.com": null,
"vm4.Knotendrachen.com": null
,
"vars":
"webroot": "/web/public_html",
"index": "index.html"

,
"db":
"Gastgeber":
"vm5.Knotendrachen.com":
"index": "index.py"
,
"vm6.Knotendrachen.com": null




Wenn Sie fertig sind, drücken Sie + S um die JSON-Inventardatei zu speichern.

Um die verfügbaren Fakten zu überprüfen, führen Sie die print_vars1.yaml Spielbuch wie folgt:

$ ansible-playbook playbooks/print_vars1.yaml

Wie Sie sehen können, ist die Index Tatsache ist nur für die vm5.Knotendrachen.com Gastgeber.

Beachten Sie auch, dass der Host-Fakt den globalen Fakt ersetzt hat. Die Host-Fakten/Variablen haben die höchste Priorität in Ansible. Die Host-Fakten/-Variablen ersetzen also die Gruppen-Fakten/-Variablen und globalen Fakten/Variablen.

Fazit:

In diesem Artikel habe ich Ihnen gezeigt, wie Sie eine Ansible-Inventardatei im JSON-Format erstellen. Ich habe Ihnen gezeigt, wie Sie Hosts hinzufügen, Hostgruppen hinzufügen, globale Fakten hinzufügen, Gruppenfakten hinzufügen und Hostfakten in Ihrer Inventardatei im JSON-Format hinzufügen.

Cursor springt oder bewegt sich zufällig während der Eingabe in Windows 10
Wenn Sie feststellen, dass Ihr Mauszeiger während der Eingabe auf einem Windows-Laptop oder -Computer automatisch und zufällig springt oder sich von s...
So kehren Sie die Scrollrichtung von Maus und Touchpads in Windows 10 um
Maus und Touchpads machen das Rechnen nicht nur einfach, sondern auch effizienter und weniger zeitaufwendig. Wir können uns ein Leben ohne diese Gerät...
So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...