Ansible

Come utilizzare i fatti personalizzati di Ansible

Come utilizzare i fatti personalizzati di Ansible
I fatti sono come le variabili in Ansible. Ansible genera molti fatti, a seconda dell'host che automatizza. Se necessario, puoi anche definire fatti/variabili personalizzati in Ansible.

Puoi definire tre tipi di fatti personalizzati in Ansible.

1) Fatti globali: Questi fatti sono accessibili da ogni host nel tuo file di inventario.
2) Fatti di gruppo: Questi fatti sono accessibili solo da un insieme specifico di host o da un gruppo di host.
3) Fatti dell'ospite: Questi fatti sono accessibili solo da un particolare host.

In questo articolo, ti mostrerò come lavorare con i fatti personalizzati di 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 degli host per l'automazione di Ansible. Puoi controllarli se necessario.

Configurazione di una directory di progetto:

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

Per creare una directory di progetto fatti personalizzati/ nel tuo CASA directory, eseguire il seguente comando:

$ mkdir -pv custom-facts/playbooks,host_vars,group_vars

Ora vai a fatti personalizzati/ directory come segue:

$ cd fatti personalizzati/

Crea un file di configurazione Ansible ansible.cfg nella directory del tuo progetto come segue:

$ nano ansible.cfg

Digita nelle seguenti righe il tuo ansible.cfg file.

[predefiniti]
inventario           = host
host_key_checking   = Falso

Quando hai finito, premi + X seguito da e per salvare il ansible.cfg file di configurazione.

Ora, crea un file di inventario Ansible padroni di casa nella directory del tuo progetto come segue:

$ nano host

Digita le seguenti righe nel tuo dell'ospite file di inventario.

vm1.nodokite.come
vm2.nodokite.come
[ragnatela]
vm3.nodokite.come
vm4.nodokite.come
[Banca dati]
vm[5:6].nodokite.come

Quando hai finito, premi + X seguito da e per salvare il padroni di casa file di inventario.

Per elencare tutti gli host disponibili nel tuo file di inventario, esegui il seguente comando:

$ ansible all --list-hosts

Come puoi vedere, ho sei host nel mio file di inventario.

Per elencare gli host disponibili nel ragnatela gruppo del tuo file di inventario, esegui il seguente comando:

$ ansible web --list-hosts

Come puoi vedere, ho due host (vm3.nodokite.come e vm4.nodokite.come) nel ragnatela gruppo del mio file di inventario.

Per elencare gli host disponibili nel Banca dati gruppo del tuo file di inventario, esegui il seguente comando:

$ database ansible --list-hosts

Come puoi vedere, ho due host (vm5.nodokite.come e vm6.nodokite.come) nel Banca dati gruppo del mio file di inventario.

Lavorare con Ansible Global Facts:

In questa sezione, ti mostrerò come definire fatti/variabili globali Ansible nel tuo file di inventario e accedervi dai tuoi playbook Ansible. Ti mostrerò anche come definire fatti/variabili globali in un file separato.

Per prima cosa, apri il dell'ospite file di inventario con il seguente comando:

$ nano host

Ora aggiungi le linee contrassegnate nel tuo dell'ospite file di inventario. Quando hai finito, premi + X seguito da e per salvare il file.

'

Aggiungi fatti globali nel all:vars sezione. Ecco, ho aggiunto il web_url fatto globale.

Ora crea un nuovo playbook print_global_fact.igname nel libri di gioco/ directory come segue:

$ nano playbook/print_global_fact.igname

Quindi, digita le seguenti righe nel print_global_fact.igname file.

- host: tutti
utente: ansible
compiti:
- nome: stampa il valore del fatto globale 'web_url'
eseguire il debug:
msg: 'URL web: web_url'

Lo scopo di questo playbook è stampare il web_url fatto globale.

Quando hai finito, premi + X seguito da e per salvare il print_global_fact.igname file.

Ora, esegui il print_global_fact.igname playbook come segue:

$ ansible-playbook playbooks/print_global_fact.igname

Come puoi vedere, tutti gli host nel mio file di inventario possono accedere al fatto globale web_url.

Puoi anche aggiungere fatti globali in un file separato. In questo modo, puoi mantenere pulito il file di inventario. Vediamo come fare.

Per prima cosa, rimuoviamo i fatti globali dal dell'ospite file di inventario.

$ nano host

Ora, rimuovi le linee contrassegnate dal file di inventario e premi + X, seguito da e per salvare il file di inventario.

Quindi, crea un nuovo file tutti nel group_vars/ directory come segue:

$ nano group_vars/all

Per aggiungere il fatto globale web_url, digita la seguente riga nel group_vars/all file.

web_url: https://www.linuxhint.come

Quando hai finito, premi + X seguito da e per salvare il group_vars/all file.

Per verificare se puoi accedere al fatto globale web_url, corri il print_global_fact.igname playbook di nuovo come segue:

$ ansible-playbook playbooks/print_global_fact.igname

Come puoi vedere, tutti gli host nel mio file di inventario possono accedere al fatto globale web_url.

Lavorare con i fatti del gruppo Ansible:

In questa sezione, ti mostrerò come definire i fatti/variabili del gruppo Ansible nel tuo file di inventario e accedervi dai tuoi playbook Ansible. Ti mostrerò anche come definire fatti/variabili di gruppo in un file separato.

Per prima cosa, apri il dell'ospite file di inventario con il seguente comando:

$ nano host

Se hai un gruppo host gruppo 1, quindi aggiungi fatti/variabili di gruppo per quel gruppo host in a group1:vars sezione del tuo file di inventario.

[gruppo 1]

[gruppo1:variabili]
variabile1=valore1
variabile2=valore2

Ad esempio, per aggiungere i fatti/variabili del gruppo nome del dominio e database_backend per il ragnatela gruppo host, puoi digitare le linee contrassegnate nel tuo file di inventario.

Quando hai finito, premi + X seguito da e per salvare il file di inventario.

Per stampare e verificare se possiamo accedere ai fatti del gruppo, crea un nuovo playbook print_group_facts.igname nel libri di gioco/ directory come segue:

$ nano playbook/print_group_facts.igname

Digita le seguenti righe nel tuo print_group_facts.igname file.

- host: web
utente: ansible
compiti:
- nome: Stampa i fatti del gruppo
eseguire il debug:
msg: 'Nome dominio: domain_name Backend database: database_backend'

Quando hai finito, premi + X seguito da e per salvare il print_group_facts.igname file.

Ora, esegui il print_group_facts.igname playbook come segue:

$ ansible-playbook playbooks/print_group_facts.igname

Come puoi vedere, i padroni di casa nel ragnatela il gruppo può accedere al nome del dominio e database_backend fatti/variabili di gruppo.

Ora, ripuliamo il file di inventario e vediamo come aggiungere fatti/variabili di gruppo in un file separato.

Per prima cosa, apri il dell'ospite file di inventario come segue:

$ nano fatti

Rimuovere le linee contrassegnate dal from dell'ospite file di inventario. Quando hai finito, premi + X seguito da e per salvare il padroni di casa file di inventario.

Poiché stiamo aggiungendo variabili di gruppo per ragnatela gruppo host, crea un nuovo file ragnatela (uguale al nome del gruppo) nel group_vars/ directory come segue:

$ nano group_vars/web

Per aggiungere i fatti del gruppo nome del dominio e database_backend per il ragnatela gruppo host, aggiungi le seguenti righe in group_vars/web file.

nome_dominio: web.linuxhint.come
database_backend: pgsql

Quando hai finito, premi + X seguito da e per salvare il group_vars/web file.

Per verificare se gli host nel ragnatela il gruppo può accedere ai fatti del gruppo, eseguire il print_group_facts.igname playbook come segue:

$ ansible-playbook playbooks/print_group_facts.igname

Come puoi vedere, i padroni di casa nel ragnatela il gruppo può accedere al nome del dominio e database_backend fatti/variabili di gruppo.

Lavorare con Ansible Host Facts:

In questa sezione, ti mostrerò come definire i fatti/variabili dell'host Ansible nel tuo file di inventario e accedervi dai tuoi playbook Ansible. Ti mostrerò anche come definire fatti/variabili host in un file separato.

Per prima cosa, apri il dell'ospite file di inventario con il seguente comando:

$ nano host

Puoi aggiungere fatti/variabili host dopo il nome DNS o l'indirizzo IP dell'host nel tuo file di inventario come segue:

www.dominio1.com      variabile1=valore1       variabile2=valore2
192.168.22.2         variabile1=valore3       variabile2=valore4

Ad esempio, puoi aggiungere fatti/variabili dell'host nome del dominio e database_backend per i padroni di casa vm3.nodokite.come e vm4.nodokite.come, come indicato nello screenshot qui sotto.

Si noti che il valore di nome del dominio e database_backend fatti/variabili sono diversi per ogni host.

Una volta che hai finito di aggiungere i fatti/variabili dell'host, premi + X, seguito da e per salvare il dell'ospite file di inventario.

Poiché ho aggiunto gli stessi fatti/variabili dell'esempio del gruppo di fatti/variabili, possiamo usare il print_group_facts.igname playbook per testare l'accessibilità anche di questi fatti/variabili.

Corri il print_group_facts.igname playbook come segue:

$ ansible-playbook playbooks/print_group_facts.igname

Come puoi vedere, i fatti/variabili dell'host sono accessibili all'host specificato. I valori sono diversi anche per ogni host.

Poiché ciascuno degli host si trova in una riga separata nel mio file di inventario, potrei facilmente aggiungere fatti/variabili host nel mio file di inventario. Tuttavia, se utilizzi gli intervalli per definire gli host nel tuo file di inventario come contrassegnato nello screenshot qui sotto, non puoi aggiungere fatti/variabili dell'host in questo modo.

Puoi aggiungere fatti/variabili host in un file separato, proprio come hai fatto per i fatti/variabili globali e di gruppo.

Per aggiungere fatti/variabili host per il vm5.nodokite.come host, crea un nuovo file vm5.nodokite.come (uguale al nome DNS dell'host) nel host_vars/ directory come segue:

$ nano host_vars/vm5.nodokite.come

Puoi aggiungere i fatti/variabili dell'host db_port e db_name per l'ospite vm5.nodokite.come con le seguenti righe.

db_port: 3306
db_name: demo1

Quando hai finito, premi + X seguito da e per salvare il vm5.nodokite.come file.

Allo stesso modo, per aggiungere fatti/variabili dell'host per l'host vm6.nodokite.come, crea un nuovo file vm6.nodokite.come nel host_vars/ directory come segue:

$ nano host_vars/vm6.nodokite.come

Puoi aggiungere i fatti/variabili dell'host db_port e db_name per l'ospite vm6.nodokite.come con le seguenti righe.

db_port: 8877
db_name: app1

Quando hai finito, premi + X seguito da e per salvare il vm6.nodokite.come file.

Per stampare e verificare se possiamo accedere ai fatti/variabili dell'host, crea un nuovo playbook print_host_facts.igname nel libri di gioco/ directory come segue:

$ nano playbook/print_host_facts.igname

Ora, digita le seguenti righe nel print_host_facts.igname file.

- host: database
utente: ansible
compiti:
- nome: Stampa informazioni sull'host
eseguire il debug:
msg: 'Nome database: db_name Porta database: db_port'

Quando hai finito, premi + X seguito da e per salvare il print_host_facts.igname file.

Per verificare se l'host vm5.nodokite.come e vm6.nodokite.come può accedere ai fatti/variabili dell'host, eseguire il print_host_facts.igname playbook come segue:

$ ansible-playbook playbooks/print_host_facts.igname

Come puoi vedere, i padroni di casa vm5.nodokite.come e vm6.nodokite.come può accedere al db_name e db_port fatti/variabili dell'host.

Mettere tutto insieme: la precedenza dei fatti Ansible

In questa sezione parlerò di Ansible fatto/precedenza variabile. Quindi iniziamo.

Prima di iniziare, ripuliamo il file di inventario.

Apri il dell'ospite file di inventario con il seguente comando:

$ nano host

Rimuovi la sezione contrassegnata dal file di inventario.

Ecco come dovrebbe apparire il tuo file di inventario a questo punto.

Ora aggiungi la linea contrassegnata nel tuo file di inventario. Queste righe aggiungono i fatti/variabili globali fact_scope e porta.

Quindi, aggiungi le linee contrassegnate nel tuo file di inventario. Queste righe aggiungono il fact_scope e porta fatti/variabili per gli host nel Banca dati gruppo.

Infine, aggiungi il fact_scope e porta ospitare fatti/variabili per il vm3.nodokite.come e vm4.nodokite.come host, come indicato nello screenshot qui sotto.

Quando hai finito, premi + X seguito da e per salvare il file di inventario.

Per stampare il valore dei fatti/variabili globali, di gruppo e host, creare un nuovo playbook fact_precendence.igname nel libri di gioco/ directory come segue:

$ nano playbook/fact_precedence.igname

Digita le seguenti righe nel fact_precedence.igname file.

- host: tutti
utente: ansible
compiti:
- nome: Stampa tutti i fatti
eseguire il debug:
msg: 'Ambito di fatto: fact_scope    Porta: port'

Quando hai finito, premi + X seguito da e per salvare il fact_precedence.igname file.

Per stampare i fatti/variabili globali, di gruppo e host, eseguire il comando fact_precedence.igname playbook come segue:

$ playbook ansible-playbook/fact_precedence.igname

Come puoi vedere, vengono stampati i fatti/variabili globali, di gruppo e host.

Notare che i fatti/variabili del gruppo hanno sostituito i fatti/variabili globali (1). Inoltre, si noti che i fatti/variabili host hanno sostituito sia il gruppo che i fatti/variabili globali (2).

La precedenza di fatto/variabile di Ansible è la seguente:

Fatto host > Fatti di gruppo > Fatti globali

Conclusione:

Dopo aver letto questo articolo, dovresti essere in grado di lavorare comodamente con fatti/variabili Ansible globali, di gruppo e host. Ricorda la precedenza dei fatti personalizzati di Ansible. Ti aiuterà a eseguire il debug dei tuoi playbook Ansible più facilmente.

Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...
Come mostrare l'overlay OSD in app e giochi Linux a schermo intero
Giocare a giochi a schermo intero o utilizzare app in modalità a schermo intero senza distrazioni può tagliarti fuori dalle informazioni di sistema ri...