So bauen Sie Ansible Inventory im JSON -Format auf

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

In diesem Artikel werde ich Ihnen zeigen, 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 haben, die für die Ansible -Automatisierung konfiguriert sind.

Es gibt viele Artikel unter LinuxHint, die der Installation von Ansible und Konfigurieren von Hosts für Ansible Automation gewidmet sind. Sie können sie bei Bedarf überprüfen.

Erstellen eines Projektverzeichnisses:

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

Lassen Sie uns vor dem Start ein Projektverzeichnis erstellen, damit wir unsere Projektdateien organisieren können.

Ich habe ein neues Projektverzeichnis erstellt JSON-Inventorium/ in meinem HEIM Verzeichnis, wie Sie im Screenshot unten sehen können.

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

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

Wählen Sie nun das Projektverzeichnis aus JSON-Inventorium/ und klicken Sie auf OK.

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

Klicken Sie nun auf Neue Datei und erstellen Sie eine neue Datei Ansible.CFG.

Geben Sie dann die folgenden Zeilen in die Ansible.CFG Datei.

[Standardeinstellungen]
Inventory = Hosts.JSON
host_key_checking = false

Sobald Sie fertig sind, drücken Sie + S um die zu retten Ansible.CFG Datei.

Genauso erstellen Sie a Gastgeber.JSON Datei. Dies ist die JSON -Inventardatei. Lass es vorerst leer. Wir werden später daran arbeiten.

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

Hinzufügen von Hosts zur JSON -Inventardatei:

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie Hosts zu Ihrer Inventardatei im JSON -Format hinzufügen können.

Im Gastgeber.JSON Inventardatei fügen Sie eine hinzu alle Abschnitt.


"alle":

In alle Abschnitt fügen Sie a hinzu Gastgeber Abschnitt und fügen Sie Ihre Hosts hinzu.


"alle":
"Hosts":
"Host1": Null,
"Host2": Null


Zum Beispiel können Sie die Hosts hinzufügen VM1.Nodekite.com Und VM2.Nodekite.com im Gastgeber.JSON Inventardatei wie folgt.


"alle":
"Hosts":
"VM1.Nodekite.com ": null,
"VM2.Nodekite.com ": null


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

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

$ ansible-list-hosts alle

Wie Sie sehen können, haben die Hosts, die ich in meiner Bestandsdatei hinzugefügt habe (VM1.Nodekite.com Und VM2.Nodekite.com) sind aufgeführt.

Gruppierung von Hosts in der JSON -Inventardatei:

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie Hosts in Ihrer JSON -Inventardatei gruppieren können.

Die Standard -Host -Gruppe in Ansible ist alle. Der alle Gruppe hat alle Hosts aus jeder Gruppe (einschließlich der Hosts von alle Gruppe).

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


"alle":

"Kinder":
"Gruppe 1":
,
"Gruppe2":



Zum Beispiel die Hosts hinzufügen VM3.Nodekite.com Und VM4.Nodekite.com im Netz Gruppe und um die Gastgeber hinzuzufügen VM5.Nodekite.com Und VM6.Nodekite.com im db Gruppe, Geben Sie die folgenden Zeilen in Ihrer JSON -Inventardatei ein.


"alle":
"Hosts":
"VM1.Nodekite.com ": null,
"VM2.Nodekite.com ": null
,
"Kinder":
"Netz":
"Hosts":
"VM3.Nodekite.com ": null,
"VM4.Nodekite.com ": null

,
"db":
"Hosts":
"VM5.Nodekite.com ": null,
"VM6.Nodekite.com ": null




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

Hier fügen die markierten Zeilen die Hosts hinzu VM3.Nodekite.com Und VM4.Nodekite.com im Netz Gruppe.

Die markierten Zeilen fügen die Hosts hinzu VM5.Nodekite.com Und VM6.Nodekite.com im db Gruppe.

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

$ ansible-list-hosts alle

Wie Sie sehen können, alle Hosts aus jeder Gruppe (Netz, db, Und alle) sind angezeigt.

Um die verfügbaren Hosts von der aufzulisten Netz Nur Gruppenbefehl ausführen: Aus den folgenden Befehl ausführen:

$ ansible-List-Hosts Web

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

Auf die gleiche Weise können Sie alle verfügbaren Hosts von der auflisten db Gruppe mit dem folgenden Befehl:

$ ansible-list-hosts db

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

Hinzufügen globaler Fakten in der JSON -Inventardatei:

In Ansible werden Variablen auch als Fakten bezeichnet. Globale Fakten oder globale Variablen sind von jedem Host jeder Gruppe in Ihrer JSON -Inventardatei zugänglich. In diesem Abschnitt werde ich Ihnen zeigen, wie Sie globale Fakten oder globale Variablen in Ansible hinzufügen können.

Sie können globale Fakten oder globale Variablen in der hinzufügen vars Abschnitt im Inneren alle Abschnitt Ihrer JSON -Inventardatei wie folgt:


"alle":
"Hosts":

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

,
"db":




Zum Beispiel können Sie die globalen Fakten/Variablen hinzufügen Webroot Und Index im vars Abschnitt Ihrer JSON -Inventardatei wie folgt:


"alle":
"Hosts":
"VM1.Nodekite.com ": null,
"VM2.Nodekite.com ": null
,
"vars":
"Webroot": "/var/www/html",
"Index": "Index.PHP "
,
"Kinder":
"Netz":
"Hosts":
"VM3.Nodekite.com ": null,
"VM4.Nodekite.com ": null

,
"db":
"Hosts":
"VM5.Nodekite.com ": null,
"VM6.Nodekite.com ": null




Sobald 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 Spielbuch erstellen print_vars1.Yaml. Der Zweck dieses Spielbuchs besteht darin, die Fakten/Variablen mit dem zu drucken debuggen Modul von Ansible. Es wird uns auch helfen, Fakt/variable Vorrang später zu verstehen.

Erstellen Sie also ein neues Spielbuch print_vars1.Yaml in deinem Playbooks/ Verzeichnis und Geben Sie die folgenden Zeilen in Ihrem an print_vars1.Yaml Datei.

- Hosts: Alles
Benutzer: Ansible
Aufgaben:
- Name: Drucken Sie Webroot und Index aus
debuggen:
msg: 'webroot webroot und index index'

Sobald 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 die aus print_vars1.Yaml Spielbuch wie folgt:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Das Spielbuch sollte erfolgreich ausgeführt werden.

Scrollen Sie zurück zum AUFGABE Abschnitt. Wie Sie sehen können, 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 Hostgruppe hinzufügen. In diesem Abschnitt werde ich Ihnen zeigen, wie Sie Gruppenfakten/Variablen in Ihre JSON -Inventardatei hinzufügen können.

Ich werde das gleiche hinzufügen Webroot Und Index Fakten in der Netz Hostgruppe meiner JSON -Inventardatei. Der Wert dieser Tatsachen wird unterschiedlich sein. Ich habe es getan, damit Sie auch verstehen können, wie Fakten/variable Vorrang in Ansible funktioniert.

Um die Fakten hinzuzufügen Webroot Und Index im Netz Hostgruppe, fügen Sie a hinzu vars Abschnitt in der Netz Abschnitt Ihrer JSON -Inventardatei wie folgt:


"alle":
"Hosts":
"VM1.Nodekite.com ": null,
"VM2.Nodekite.com ": null
,
"vars":
"Webroot": "/var/www/html",
"Index": "Index.PHP "
,
"Kinder":
"Netz":
"Hosts":
"VM3.Nodekite.com ": null,
"VM4.Nodekite.com ": null
,
"vars":
"Webroot": "/web/public_html",
"Index": "Index.html "

,
"db":
"Hosts":
"VM5.Nodekite.com ": null,
"VM6.Nodekite.com ": null




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

Um die Fakten zu überprüfen, führen Sie die aus 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 erhältlich VM3.Nodekite.com Und VM4.Nodekite.com, die Gastgeber in der Netz Gruppe.

Beachten Sie auch, dass die Gruppenfakten (Webroot Und Index) ersetzte die globalen Fakten (Webroot Und Index). Sie können also sagen, dass die Gruppenfakten einen höheren Vorrang als die globalen Fakten haben.

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

Sie können auch Host-spezifische Fakten/Variablen in Ihre JSON-Inventardatei hinzufügen. In diesem Abschnitt zeige ich Ihnen, wie Sie host-spezifische Fakten/Variablen in Ihre JSON-Inventardatei hinzufügen können.

Für globale oder Gruppenfakten haben wir den Wert der Gastgeber gehalten Null.

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

"Hosts":
"host1":
"var1": "value1",
"var2": "value2",
,
"Host2":
"var2": "value3",
"var3": "value4",

Zum Beispiel das hinzufügen Index Host -Tatsache an die VM5.Nodekite.com Host, ersetzen Null mit den Host -Fakten wie folgt.


"alle":
"Hosts":
"VM1.Nodekite.com ": null,
"VM2.Nodekite.com ": null
,
"vars":
"Webroot": "/var/www/html",
"Index": "Index.PHP "
,
"Kinder":
"Netz":
"Hosts":
"VM3.Nodekite.com ": null,
"VM4.Nodekite.com ": null
,
"vars":
"Webroot": "/web/public_html",
"Index": "Index.html "

,
"db":
"Hosts":
"VM5.Nodekite.com ":
"Index": "Index.py "
,
"VM6.Nodekite.com ": null




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

Führen Sie die verfügbaren Fakten aus, um die verfügbaren Fakten zu überprüfen print_vars1.Yaml Spielbuch wie folgt:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Wie Sie sehen können, die Index Tatsache ist nur für die verfügbar VM5.Nodekite.com Gastgeber.

Beachten Sie auch, dass die Host -Fakt die globale Tatsache ersetzt hat. Die Host -Fakten/Variablen haben die höchste Vorrang in Ansible. Die Host -Fakten/Variablen ersetzen also die Gruppenfakten/Variablen und globale Fakten/Variablen.

Abschluss:

In diesem Artikel habe ich Ihnen gezeigt, wie Sie eine Ansible -Inventardatei im JSON -Format erstellen können. Ich habe Ihnen gezeigt, wie Sie Hosts hinzufügen, Hostgruppen hinzufügen, globale Fakten hinzufügen, Gruppenfakten hinzufügen und Host -Fakten in Ihre Bestandsdatei im JSON -Format hinzufügen.