Come costruire l'inventario ansible in formato JSON

Come costruire l'inventario ansible in formato JSON
Per impostazione predefinita, un file di inventario Ansible utilizza il formato di configurazione INI. Puoi anche utilizzare il formato di configurazione JSON (JavaScript Object Notation) anche per i file di inventario Ansible.

In questo articolo, ti mostrerò come utilizzare il formato di configurazione JSON per creare i file di inventario Ansible. Quindi iniziamo.

Prerequisiti:

Se vuoi provare gli esempi di questo articolo,

1) Devi avere Ansible installato sul tuo computer.
2) Devi avere almeno 6 host Linux configurati per l'automazione Ansible.

Ci sono molti articoli su Linuxhint dedicati all'installazione di Ansible e alla configurazione di host per Ansible Automation. Puoi verificarli se necessario.

Creazione di una directory di progetto:

In questo articolo, utilizzerò il codice Visual Studio per la modifica del file di configurazione Ansible, del file di inventario e dei playbook. Puoi usare qualsiasi editor o IDE che desideri.

Prima di iniziare, creiamo una directory di progetto in modo da poter organizzare i nostri file di progetto.

Ho creato una nuova directory di progetto JSON-INVENTORY/ nel mio CASA directory come puoi vedere nello screenshot qui sotto.

Una volta creata una nuova directory di progetto, aprilo con il tuo editor di testo preferito o IDE.

Nel codice Visual Studio, vai a File > Cartella aperta… come contrassegnato nello screenshot seguente.

Ora, seleziona la directory del progetto JSON-INVENTORY/ e fare clic su OK.

La directory del progetto dovrebbe essere aperta con il codice Visual Studio.

Ora, fai clic su Nuovo file e crea un nuovo file Ansible.cfg.

Quindi, digita le seguenti righe in Ansible.cfg file.

[impostazioni predefinite]
Inventario = host.JSON
host_key_checking = false

Una volta che hai finito, premere + S per salvare il Ansible.cfg file.

Allo stesso modo, crea un ospiti.JSON file. Questo è il file di inventario JSON. Lascialo vuoto per ora. Ci lavoreremo più tardi.

Ora, fai clic su Nuova cartella e crea una nuova directory Playbooks Come mostrato nello screenshot seguente.

Aggiunta di host al file di inventario JSON:

In questa sezione, ti mostrerò come aggiungere host al tuo file di inventario in formato JSON.

Nel ospiti.JSON file di inventario, aggiungi un Tutto sezione.


"Tutto":

In Tutto sezione, aggiungi un ospite sezione e aggiungi i tuoi host.


"Tutto":
"hosts":
"host1": null,
"host2": null


Ad esempio, puoi aggiungere gli host VM1.nodekite.com E VM2.nodekite.com nel ospiti.JSON File di inventario come segue.


"Tutto":
"hosts":
"VM1.nodekite.com ": null,
"VM2.nodekite.com ": null


Una volta che hai finito, premere + S per salvare il ospiti.JSON file.

Puoi controllare quali host sono disponibili nel tuo file di inventario con il seguente comando:

$ ansible-list-host tutti

Come puoi vedere, gli host che ho aggiunto nel mio file di inventario (VM1.nodekite.com E VM2.nodekite.com) sono elencati.

Raggruppando gli host nel file di inventario JSON:

In questa sezione, ti mostrerò come raggruppare gli host nel tuo file di inventario JSON.

Il gruppo host predefinito in Ansible è Tutto. IL Tutto Il gruppo ha tutti gli host di ogni gruppo (compresi gli host di Tutto gruppo).

Aggiungi gruppi host in bambini sezione del tuo file di inventario JSON.


"Tutto":
..
"bambini":
"gruppo 1":
,
"Gruppo2":



Ad esempio, per aggiungere gli host VM3.nodekite.com E VM4.nodekite.com nel ragnatela gruppo e per aggiungere gli host VM5.nodekite.com E VM6.nodekite.com nel db Gruppo, digita le seguenti righe nel tuo file di inventario JSON.


"Tutto":
"hosts":
"VM1.nodekite.com ": null,
"VM2.nodekite.com ": null
,
"bambini":
"ragnatela":
"hosts":
"VM3.nodekite.com ": null,
"VM4.nodekite.com ": null

,
"db":
"hosts":
"VM5.nodekite.com ": null,
"VM6.nodekite.com ": null




Una volta che hai finito, premere + S per salvare il ospiti.JSON file.

Qui, le linee contrassegnate aggiungono gli host VM3.nodekite.com E VM4.nodekite.com nel ragnatela gruppo.

Le linee contrassegnate aggiungono gli host VM5.nodekite.com E VM6.nodekite.com nel db gruppo.

Ora puoi elencare tutti gli host disponibili nel tuo file di inventario JSON con il seguente comando:

$ ansible-list-host tutti

Come puoi vedere, tutti gli host di ogni gruppo (ragnatela, db, E Tutto) vengono visualizzati.

Per elencare gli host disponibili da ragnatela Solo gruppo, eseguire il seguente comando:

$ ansible-list-host web

Come puoi vedere, tutti gli host in ragnatela il gruppo viene visualizzato.

Allo stesso modo, puoi elencare tutti gli host disponibili da db Gruppo con il seguente comando:

$ ansible-list-host db

Come puoi vedere, tutti gli host in db il gruppo viene visualizzato.

Aggiunta di fatti globali nel file di inventario JSON:

In Ansible, le variabili sono anche chiamate fatti. I fatti globali o le variabili globali sono accessibili da ogni host di ogni gruppo nel tuo file di inventario JSON. In questa sezione, ti mostrerò come aggiungere fatti globali o variabili globali in Ansible.

Puoi aggiungere fatti globali o variabili globali in Var sezione all'interno Tutto Sezione del tuo file di inventario JSON come segue:


"Tutto":
"hosts":
..
,
"vars":
"variabile1": "value1",
"variabile2": "value2"
,
"bambini":
"ragnatela":
..
,
"db":
..



Ad esempio, puoi aggiungere i fatti/le variabili globali Webroot E indice nel Var Sezione del tuo file di inventario JSON come segue:


"Tutto":
"hosts":
"VM1.nodekite.com ": null,
"VM2.nodekite.com ": null
,
"vars":
"Webroot": "/var/www/html",
"indice": "indice.php "
,
"bambini":
"ragnatela":
"hosts":
"VM3.nodekite.com ": null,
"VM4.nodekite.com ": null

,
"db":
"hosts":
"VM5.nodekite.com ": null,
"VM6.nodekite.com ": null




Una volta che hai finito, premere + S Per salvare il file di inventario JSON.

Per verificare se i fatti/variabili globali funzionano, creerò un nuovo playbook print_vars1.Yaml. Lo scopo di questo playbook è stampare i fatti/le variabili utilizzando il debug Modulo di Ansible. Ci aiuterà anche a comprendere i fatti/la precedenza variabile in seguito.

Quindi, crea un nuovo playbook print_vars1.Yaml nel tuo playbooks/ directory e digita le seguenti righe nel tuo print_vars1.Yaml file.

- Host: tutto
Utente: Ansible
compiti:
- Nome: stampa Webroot e indice
debug:
msg: 'WebRoot WebRoot e indice index'

Una volta che hai finito, premere + S per salvare il print_vars1.Yaml file.

Per verificare se i fatti/variabili globali funzionano, esegui il print_vars1.Yaml Playbook come segue:

$ ansible-playbook playbooks/print_vars1.Yaml

Il playbook dovrebbe funzionare con successo.

Scorri indietro a COMPITO sezione. Come puoi vedere, il Webroot E indice Fatti/variabili sono applicati a tutti gli host nel mio file di inventario JSON. Quindi, fatti/variabili globali funzionano.

Aggiunta di fatti di gruppo nel file di inventario JSON:

Puoi aggiungere fatti/variabili anche per un gruppo host specifico. In questa sezione, ti mostrerò come aggiungere fatti/variabili di gruppo nel tuo file di inventario JSON.

Aggiungerò lo stesso Webroot E indice fatti nel ragnatela Gruppo host del mio file di inventario JSON. Il valore di questi fatti sarà diverso. L'ho fatto in modo che tu possa anche capire come funziona fatti/precedenti variabili.

Per aggiungere i fatti Webroot E indice nel ragnatela Gruppo host, aggiungi un file Var sezione nella ragnatela Sezione del tuo file di inventario JSON come segue:


"Tutto":
"hosts":
"VM1.nodekite.com ": null,
"VM2.nodekite.com ": null
,
"vars":
"Webroot": "/var/www/html",
"indice": "indice.php "
,
"bambini":
"ragnatela":
"hosts":
"VM3.nodekite.com ": null,
"VM4.nodekite.com ": null
,
"vars":
"Webroot": "/web/public_html",
"indice": "indice.html "

,
"db":
"hosts":
"VM5.nodekite.com ": null,
"VM6.nodekite.com ": null




Una volta che hai finito, premere + S Per salvare il file di inventario JSON.

Per controllare i fatti, eseguire il print_vars1.Yaml Playbook come segue:

$ ansible-playbook playbooks/print_vars1.Yaml

Come puoi vedere, i fatti del gruppo Webroot E indice sono disponibili solo per gli host VM3.nodekite.com E VM4.nodekite.com, i padroni di casa nel ragnatela gruppo.

Inoltre, nota che i fatti del gruppo (Webroot E indice) ha sostituito i fatti globali (Webroot E indice). Quindi, puoi dire che i fatti del gruppo hanno una precedenza maggiore rispetto ai fatti globali.

Aggiunta di fatti host nel file di inventario JSON:

Puoi aggiungere anche fatti/variabili specifici per host nel tuo file di inventario JSON. In questa sezione, ti mostrerò come aggiungere fatti/variabili specifici dell'host nel tuo file di inventario JSON.

Per i fatti globali o di gruppo, abbiamo mantenuto il valore degli host nullo.

Per aggiungere fatti host, sostituire nullo Con i tuoi fatti host nel file di inventario JSON come segue:

"hosts":
"host1":
"var1": "value1",
"VAR2": "Value2",
,
"host2":
"VAR2": "Value3",
"VAR3": "Value4",

Ad esempio, per aggiungere il file indice Fatto ospite al VM5.nodekite.com host, sostituire nullo con i fatti dell'host come segue.


"Tutto":
"hosts":
"VM1.nodekite.com ": null,
"VM2.nodekite.com ": null
,
"vars":
"Webroot": "/var/www/html",
"indice": "indice.php "
,
"bambini":
"ragnatela":
"hosts":
"VM3.nodekite.com ": null,
"VM4.nodekite.com ": null
,
"vars":
"Webroot": "/web/public_html",
"indice": "indice.html "

,
"db":
"hosts":
"VM5.nodekite.com ":
"indice": "indice.Py "
,
"VM6.nodekite.com ": null




Una volta che hai finito, premere + S Per salvare il file di inventario JSON.

Per controllare i fatti disponibili, eseguire il print_vars1.Yaml Playbook come segue:

$ ansible-playbook playbooks/print_vars1.Yaml

Come puoi vedere, il indice Il fatto è disponibile solo per il VM5.nodekite.com ospite.

Si noti inoltre che il fatto ospite ha sostituito il fatto globale. I fatti/variabili ospitanti hanno la massima precedenza in Ansible. Quindi, i fatti/variabili host sostituiranno i fatti/le variabili del gruppo e i fatti/variabili globali.

Conclusione:

In questo articolo, ti ho mostrato come costruire un file di inventario ansible in formato JSON. Ti ho mostrato come aggiungere host, aggiungere gruppi host, aggiungere fatti globali, aggiungere fatti di gruppo e aggiungere fatti host nel tuo file di inventario in formato JSON.