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 set specifico di host o da un gruppo host.
3) Fatti ospitanti: Questi fatti sono accessibili solo da un particolare host.
In questo articolo, ti mostrerò come lavorare con fatti personalizzati 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.
Impostazione di una directory del 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 personalizzato -facts/playbooks, host_vars, group_vars
Ora, naviga su Fatti personalizzati/ directory come segue:
$ cd fatti personalizzati/
Crea un file di configurazione Ansible Ansible.cfg Nella directory del progetto come segue:
$ nano ansible.cfg
Digita le seguenti righe il tuo Ansible.cfg file.
[impostazioni predefinite]Una volta che hai finito, premere + X seguito da Y E per salvare il Ansible.cfg file di configurazione.
Ora, crea un file di inventario ansible ospiti Nella directory del progetto come segue:
$ nano hosts
Digita le seguenti righe nel tuo Ospite file di inventario.
VM1.nodekite.comUna volta che hai finito, premere + X seguito da Y E per salvare il ospiti file di inventario.
Per elencare tutti gli host disponibili nel tuo file di inventario, eseguire il seguente comando:
$ ansible tutti--list-host
Come puoi vedere, ho sei host nel mio file di inventario.
Per elencare gli host disponibili in ragnatela Gruppo del tuo file di inventario, eseguire il seguente comando:
$ ansible web--list-host
Come puoi vedere, ho due host (VM3.nodekite.com E VM4.nodekite.com) nel ragnatela Gruppo del mio file di inventario.
Per elencare gli host disponibili in Banca dati Gruppo del tuo file di inventario, eseguire il seguente comando:
$ ansible database--list-host
Come puoi vedere, ho due host (VM5.nodekite.com E VM6.nodekite.com) 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.
Innanzitutto, apri il Ospite File di inventario con il seguente comando:
$ nano hosts
Ora aggiungi le linee contrassegnate nel tuo Ospite file di inventario. Una volta che hai finito, premere + X seguito da Y E Per salvare il file.
'
Aggiungi fatti globali in Tutti: vars sezione. Qui, ho aggiunto il Web_url Fatto globale.
Ora, crea un nuovo playbook print_global_fact.Yaml nel playbooks/ directory come segue:
$ nano playbooks/print_global_fact.YamlQuindi, digita le seguenti righe in print_global_fact.Yaml file.
- Host: tuttoLo scopo di questo playbook è stampare il Web_url Fatto globale.
Una volta che hai finito, premere + X seguito da Y E per salvare il print_global_fact.Yaml file.
Ora, esegui il print_global_fact.Yaml Playbook come segue:
$ ansible-playbook playbooks/print_global_fact.YamlCome 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 farlo.
Innanzitutto, rimuoviamo i fatti globali dal Ospite file di inventario.
$ nano hosts
Ora rimuovi le righe contrassegnate dal file di inventario e premi + X, seguito da Y E Per salvare il file di inventario.
Quindi, crea un nuovo file Tutto nel group_vars/ directory come segue:
$ nano group_vars/tutti
Per aggiungere il fatto globale Web_url, digitare nella riga seguente in GROUP_VARS/All file.
Web_url: https: // www.Linuxhint.com
Una volta che hai finito, premere + X seguito da Y E per salvare il GROUP_VARS/All file.
Per verificare se è possibile accedere al fatto globale Web_url, corri il print_global_fact.Yaml Playbook di nuovo come segue:
$ ansible-playbook playbooks/print_global_fact.YamlCome puoi vedere, tutti gli host nel mio file di inventario possono accedere al fatto globale Web_url.
Lavorare con fatti di gruppo Ansible:
In questa sezione, ti mostrerò come definire 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.
Innanzitutto, apri il Ospite File di inventario con il seguente comando:
$ nano hosts
Se hai un gruppo host gruppo 1, Quindi aggiungi fatti/variabili di gruppo per quel gruppo host in a Gruppo1: vars sezione del tuo file di inventario.
[gruppo 1]Ad esempio, per aggiungere i fatti/le variabili del gruppo nome del dominio E database_backends per il ragnatela Gruppo host, è possibile digitare le righe contrassegnate nel tuo file di inventario.
Una volta che hai finito, premere + X seguito da Y E Per salvare il file di inventario.
Per stampare e testare se possiamo accedere ai fatti del gruppo, creare un nuovo playbook print_group_facts.Yaml nel playbooks/ directory come segue:
$ nano playbooks/print_group_facts.YamlDigita le seguenti righe nel tuo print_group_facts.Yaml file.
- Host: WebUna volta che hai finito, premere + X seguito da Y E per salvare il print_group_facts.Yaml file.
Ora, esegui il print_group_facts.Yaml Playbook come segue:
$ ansible-playbook playbooks/print_group_facts.YamlCome puoi vedere, gli host in ragnatela Il gruppo può accedere al file 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.
Innanzitutto, apri il Ospite File di inventario come segue:
$ nano fatti
Rimuovere le linee contrassegnate da Ospite file di inventario. Una volta che hai finito, premere + X seguito da Y E per salvare il ospiti file di inventario.
Mentre 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.
Domain_name: Web.Linuxhint.comUna volta che hai finito, premere + X seguito da Y E per salvare il GROUP_VARS/Web file.
Per verificare se gli host in ragnatela Il gruppo può accedere ai fatti del gruppo, eseguire il print_group_facts.Yaml Playbook come segue:
$ ansible-playbook playbooks/print_group_facts.YamlCome puoi vedere, gli host in ragnatela Il gruppo può accedere al file nome del dominio E database_backend Fatti/variabili di gruppo.
Lavorare con i fatti dell'ospite Ansible:
In questa sezione, ti mostrerò come definire 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.
Innanzitutto, apri il Ospite File di inventario con il seguente comando:
$ nano hosts
È possibile 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 = value1 variabile2 = value2Ad esempio, è possibile aggiungere fatti/variabili host nome del dominio E database_backend per gli host VM3.nodekite.com E VM4.nodekite.com, come contrassegnato nello screenshot seguente.
Si noti che il valore del nome del dominio E database_backend Fatti/variabili sono diverse per ciascun host.
Una volta che hai finito di aggiungere fatti/variabili host, premere + X, seguito da Y E per salvare il Ospite file di inventario.
Come ho aggiunto gli stessi fatti/variabili dell'esempio di fatti/variabili di gruppo, possiamo usare il print_group_facts.Yaml Playbook per testare anche l'accessibilità di questi fatti/variabili.
Corri il print_group_facts.Yaml Playbook come segue:
$ ansible-playbook playbooks/print_group_facts.YamlCome puoi vedere, i fatti/variabili dell'host sono accessibili al loro host specificato. I valori sono diversi anche per ciascun host.
Poiché ciascuno degli host è in una riga separata nel mio file di inventario, potrei facilmente aggiungere fatti/variabili host nel mio file di inventario. Ma, se usi intervalli per definire gli host nel tuo file di inventario come contrassegnato nello screenshot seguente, non è possibile aggiungere fatti/variabili dell'host come questo.
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.nodekite.com host, crea un nuovo file VM5.nodekite.com (uguale al nome DNS host) in host_vars/ directory come segue:
$ nano host_vars/vm5.nodekite.com
Puoi aggiungere i fatti/variabili host db_port E db_name per l'host VM5.nodekite.com Con le seguenti righe.
DB_PORT: 3306
db_name: demo1
Una volta che hai finito, premere + X seguito da Y E per salvare il VM5.nodekite.com file.
Allo stesso modo, per aggiungere fatti/variabili dell'host per l'host VM6.nodekite.com, Crea un nuovo file VM6.nodekite.com nel host_vars/ directory come segue:
$ nano host_vars/vm6.nodekite.comPuoi aggiungere i fatti/variabili host db_port E db_name per l'host VM6.nodekite.com Con le seguenti righe.
DB_PORT: 8877Una volta che hai finito, premere + X seguito da Y E per salvare il VM6.nodekite.com file.
Per stampare e testare se possiamo accedere ai fatti/variabili host, crea un nuovo playbook print_host_facts.Yaml nel playbooks/ directory come segue:
$ nano playbooks/print_host_facts.YamlOra, digita le seguenti righe in print_host_facts.Yaml file.
- Host: databaseUna volta che hai finito, premere + X seguito da Y E per salvare il print_host_facts.Yaml file.
Per verificare se l'host VM5.nodekite.com E VM6.nodekite.com può accedere ai fatti/variabili host, eseguire il print_host_facts.Yaml Playbook come segue:
$ ansible-playbook playbooks/print_host_facts.YamlCome puoi vedere, gli host VM5.nodekite.com E VM6.nodekite.com può accedere al db_name E db_port Fatti/variabili host.
Mettere tutto insieme: Ansible Facts Precedence
In questa sezione, parlerò di fatti/prima variabile. Quindi iniziamo.
Prima di iniziare, ripuliamo il file di inventario.
Apri il Ospite File di inventario con il seguente comando:
$ nano hosts
Rimuovere la sezione contrassegnata dal file di inventario.
Ecco come dovrebbe guardare il tuo file di inventario a questo punto.
Ora aggiungi la riga contrassegnata nel tuo file di inventario. Queste righe aggiungono fatti/variabili globali fact_scope E porta.
Quindi, aggiungi le righe contrassegnate nel tuo file di inventario. Queste righe aggiungono il fact_scope E porta fatti/variabili per gli host in Banca dati gruppo.
Infine, aggiungi il fact_scope E porta fatti/variabili ospita per il VM3.nodekite.com E VM4.nodekite.com host, come contrassegnato nello screenshot qui sotto.
Una volta che hai finito, premere + X seguito da Y E Per salvare il file di inventario.
Per stampare il valore dei fatti/variabili globali, di gruppo e host, crea un nuovo playbook fact_precendence.Yaml nel playbooks/ directory come segue:
$ nano playbooks/fact_precedence.YamlDigitare le seguenti righe in fact_precedence.Yaml file.
- Host: tuttoUna volta che hai finito, premere + X seguito da Y E per salvare il fact_precedence.Yaml file.
Per stampare i fatti/variabili globali e ospiti, eseguire il fact_precedence.Yaml Playbook come segue:
$ ansible-playbook playbooks/fact_precedence.YamlCome puoi vedere, i fatti/variabili dell'host globali, di gruppo e host vengono stampati.
Si noti che i fatti/variabili del gruppo hanno sostituito i fatti/le variabili globali (1). Inoltre, si noti che i fatti/variabili ospitanti hanno sostituito sia i fatti/le variabili del gruppo che il gruppo (2).
La precedenza di fatto/variabile di Ansible è la seguente:
Fatto host> Fatto di gruppo> Fatto globaleDopo aver letto questo articolo, dovresti essere in grado di lavorare comodamente con fatti/variabili globali, di gruppo e ospitare Ansible. Ricorda la precedenza del fatto personalizzato Ansible. Ti aiuterà a eseguire il debug dei tuoi playbook Ansible più facilmente.