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
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.comevm2.nodokite.come
[ragnatela]
vm3.nodokite.come
vm4.nodokite.come
[Banca dati]
vm[5:6].nodokite.come
Quando hai finito, premi
Per elencare tutti gli host disponibili nel tuo file di inventario, esegui il seguente comando:
$ ansible all --list-hostsCome 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-hostsCome 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-hostsCome 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
'
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: tuttiutente: 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
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
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.comeQuando hai finito, premi
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
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: webutente: ansible
compiti:
- nome: Stampa i fatti del gruppo
eseguire il debug:
msg: 'Nome dominio: domain_name Backend database: database_backend'
Quando hai finito, premi
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
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.comedatabase_backend: pgsql
Quando hai finito, premi
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=valore2192.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
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: 3306db_name: demo1
Quando hai finito, premi
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: 8877db_name: app1
Quando hai finito, premi
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: databaseutente: ansible
compiti:
- nome: Stampa informazioni sull'host
eseguire il debug:
msg: 'Nome database: db_name Porta database: db_port'
Quando hai finito, premi
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
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: tuttiutente: ansible
compiti:
- nome: Stampa tutti i fatti
eseguire il debug:
msg: 'Ambito di fatto: fact_scope Porta: port'
Quando hai finito, premi
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 globaliConclusione:
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.