Come usare fatti personalizzati Ansible

Come usare fatti personalizzati Ansible
I fatti sono come variabili in ansible. Ansible genera molti fatti, a seconda dell'host, automatizza. Se hai bisogno, 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 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]
Inventario = host
host_key_checking = false

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.com
VM2.nodekite.com
[ragnatela]
VM3.nodekite.com
VM4.nodekite.com
[Banca dati]
VM [5: 6].nodekite.com

Una 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.Yaml

Quindi, digita le seguenti righe in print_global_fact.Yaml file.

- Host: tutto
Utente: Ansible
compiti:
- Nome: stampare il valore del fatto globale 'web_url'
debug:
MSG: 'Web URL: Web_url'

Lo 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.Yaml

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 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.Yaml

Come 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]
..
[Gruppo1: vars]
variabile1 = value1
variabile2 = value2

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.Yaml

Digita le seguenti righe nel tuo print_group_facts.Yaml file.

- Host: Web
Utente: Ansible
compiti:
- Nome: fatti del gruppo di stampa
debug:
MSG: 'Domain Name: Domain_name backend del database: database_backend'

Una 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.Yaml

Come 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.com
Database_backend: pgsql

Una 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.Yaml

Come 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 = value2
192.168.22.2 variabile1 = valore3 variabile2 = value4

Ad 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.Yaml

Come 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.com

Puoi aggiungere i fatti/variabili host db_port E db_name per l'host VM6.nodekite.com Con le seguenti righe.

DB_PORT: 8877
db_name: app1

Una 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.Yaml

Ora, digita le seguenti righe in print_host_facts.Yaml file.

- Host: database
Utente: Ansible
compiti:
- Nome: stampare fatti host
debug:
msg: 'nome del database: db_name porta del database: db_port'

Una 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.Yaml

Come 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.Yaml

Digitare le seguenti righe in fact_precedence.Yaml file.

- Host: tutto
Utente: Ansible
compiti:
- Nome: stampa tutti i fatti
debug:
MSG: 'Fact Scope: fact_scope port: port'

Una 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.Yaml

Come 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 globale

Conclusione:

Dopo 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.