Puteți defini trei tipuri de fapte personalizate în Ansible.
1) Fapte globale: Aceste informații sunt accesibile de la fiecare gazdă din fișierul dvs. de inventar.
2) Fapte de grup: Aceste fapte sunt accesibile numai de la un anumit set de gazde sau un grup de gazde.
3) Date despre gazdă: Aceste fapte sunt accesibile numai de la o anumită gazdă.
În acest articol, vă voi arăta cum să lucrați cu fapte personalizate Ansible. Asadar, haideti sa începem.
Condiții preliminare:
Dacă doriți să încercați exemplele acestui articol,
1) Trebuie să aveți Ansible instalat pe computer.
2) Trebuie să aveți cel puțin 6 gazde Linux configurate pentru automatizarea Ansible.
Există multe articole despre LinuxHint dedicate instalării Ansible și configurării gazdelor pentru automatizarea Ansible. Le puteți verifica dacă este necesar.
Configurarea unui director de proiect:
Înainte de a începe, să creăm un director de proiect, astfel încât să putem organiza fișierele noastre de proiect.
Pentru a crea un director de proiect fapte personalizate / în dumneavoastră ACASĂ director, executați următoarea comandă:
$ mkdir -pv custom-facts / playbooks, host_vars, group_vars
Acum, navigați la fapte personalizate / director după cum urmează:
$ cd fapte personalizate /
Creați un fișier de configurare Ansible ansible.cfg în directorul dvs. de proiect după cum urmează:
$ nano ansible.cfg
Tastați în rândurile următoare ansible.cfg fişier.
[implicit]inventar = gazde
host_key_checking = Fals
După ce ați terminat, apăsați
Acum, creați un fișier de inventar Ansible gazde în directorul dvs. de proiect după cum urmează:
$ nano gazde
Tastați următoarele linii în a gazdei dosar de inventar.
vm1.nodekite.comvm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[Bază de date]
vm [5: 6].nodekite.com
După ce ați terminat, apăsați
Pentru a lista toate gazdele disponibile în fișierul dvs. de inventar, rulați următoarea comandă:
$ ansible all --list-hostsDupă cum puteți vedea, am șase gazde în fișierul meu de inventar.
Pentru a lista gazdele disponibile în web grupul de fișiere de inventar, executați următoarea comandă:
$ ansible web --list-hostsDupă cum puteți vedea, am două gazde (vm3.nodekite.com și vm4.nodekite.com) în web grupul fișierului meu de inventar.
Pentru a lista gazdele disponibile în Bază de date grupul de fișiere de inventar, executați următoarea comandă:
$ ansible database --list-hostsDupă cum puteți vedea, am două gazde (vm5.nodekite.com și vm6.nodekite.com) în Bază de date grupul fișierului meu de inventar.
Lucrul cu Ansible Global Facts:
În această secțiune, vă voi arăta cum să definiți fapte / variabile globale Ansible în fișierul de inventar și să le accesați din cărțile de joc Ansible. De asemenea, vă voi arăta cum să definiți fapte / variabile globale într-un fișier separat.
Mai întâi, deschideți fișierul a gazdei fișier inventar cu următoarea comandă:
$ nano gazde
Acum, adăugați liniile marcate în a gazdei dosar de inventar. După ce ați terminat, apăsați
'
Adăugați fapte globale în toate: vars secțiune. Aici, am adăugat web_url fapt global.
Acum, creați un nou playbook print_global_fact.yaml în cărți de joacă / director după cum urmează:
$ nano playbooks / print_global_fact.yaml
Apoi, tastați următoarele linii în print_global_fact.yaml fişier.
- gazde: toateutilizator: ansible
sarcini:
- name: Imprimați valoarea faptului global „web_url”
depanare:
msg: 'Adresa URL web: web_url'
Scopul acestui manual este de a imprima fișierul web_url fapt global.
După ce ați terminat, apăsați
Acum, rulați print_global_fact.yaml playbook după cum urmează:
$ ansible-playbook playbooks / print_global_fact.yaml
După cum puteți vedea, toate gazdele din fișierul meu de inventar pot accesa faptul global web_url.
De asemenea, puteți adăuga informații globale într-un fișier separat. În acest fel, puteți păstra fișierul de inventar curat. Să vedem cum să o facem.
În primul rând, să eliminăm faptele globale din a gazdei dosar de inventar.
$ nano gazde
Acum, eliminați liniile marcate din fișierul de inventar și apăsați
Apoi, creați un fișier nou toate în group_vars / director după cum urmează:
$ nano group_vars / all
Pentru a adăuga faptul global web_url, tastați următoarea linie în group_vars / all fişier.
web_url: https: // www.linuxhint.comDupă ce ați terminat, apăsați
Pentru a verifica dacă puteți accesa faptul global web_url, rulați print_global_fact.yaml redă din nou playbook-ul după cum urmează:
$ ansible-playbook playbooks / print_global_fact.yaml
După cum puteți vedea, toate gazdele din fișierul meu de inventar pot accesa faptul global web_url.
Lucrul cu datele Ansible Group:
În această secțiune, vă voi arăta cum să definiți fapte / variabile ale grupului Ansible în fișierul de inventar și să le accesați din cărțile de joc Ansible. De asemenea, vă voi arăta cum să definiți fapte / variabile de grup într-un fișier separat.
Mai întâi, deschideți fișierul a gazdei fișier inventar cu următoarea comandă:
$ nano gazde
Dacă aveți un grup de gazdă Grupa 1, apoi adăugați fapte / variabile ale grupului pentru acel grup gazdă într-un grupul 1: vars secțiunea din fișierul dvs. de inventar.
[Grupa 1]..
[grup1: vars]
variabila1 = valoare1
variabila2 = valoare2
De exemplu, pentru a adăuga datele / variabilele grupului numele domeniului și backback-uri de bază de date pentru web grupul gazdă, puteți introduce liniile marcate în fișierul de inventar.
După ce ați terminat, apăsați
Pentru a imprima și a testa dacă putem accesa datele grupului, creați un nou playbook print_group_facts.yaml în cărți de joacă / director după cum urmează:
$ nano playbooks / print_group_facts.yaml
Tastați următoarele linii în print_group_facts.yaml fişier.
- gazde: webutilizator: ansible
sarcini:
- nume: tipăriți datele grupului
depanare:
msg: 'Nume domeniu: domain_name Backend bază de date: database_backend'
După ce ați terminat, apăsați
Acum, rulați print_group_facts.yaml playbook după cum urmează:
$ ansible-playbook playbooks / print_group_facts.yaml
După cum puteți vedea, gazdele din web grupul poate accesa fișierul numele domeniului și backend_baza de date grupează fapte / variabile.
Acum, să curățăm fișierul de inventar și să vedem cum să adăugăm fapte / variabile de grup într-un fișier separat.
Mai întâi, deschideți fișierul a gazdei fișier de inventar după cum urmează:
$ nano fapte
Eliminați liniile marcate din a gazdei dosar de inventar. După ce ați terminat, apăsați
Pe măsură ce adăugăm variabile de grup pentru web grup gazdă, creați un fișier nou web (la fel ca și numele grupului) în group_vars / director după cum urmează:
$ nano group_vars / web
Pentru a adăuga datele grupului numele domeniului și backend_baza de date pentru web grup gazdă, adăugați următoarele rânduri în group_vars / web fişier.
nume_domeniu: web.linuxhint.combackback_baza de date: pgsql
După ce ați terminat, apăsați
Pentru a verifica dacă gazdele din web grupul poate accesa datele grupului, poate rula print_group_facts.yaml playbook după cum urmează:
$ ansible-playbook playbooks / print_group_facts.yaml
După cum puteți vedea, gazdele din web grupul poate accesa numele domeniului și backend_baza de date grupează fapte / variabile.
Lucrul cu fapte despre gazda Ansible:
În această secțiune, vă voi arăta cum să definiți fapte / variabile ale gazdei Ansible în fișierul de inventar și să le accesați din cărțile de joc Ansible. De asemenea, vă voi arăta cum să definiți fapte / variabile despre gazdă într-un fișier separat.
Mai întâi, deschideți fișierul a gazdei fișier inventar cu următoarea comandă:
$ nano gazde
Puteți adăuga date / variabile despre gazdă după numele DNS sau adresa IP a gazdei în fișierul de inventar, după cum urmează:
www.domeniu1.com variabilă1 = valoare1 variabilă2 = valoare2192.168.22.2 variabilă1 = valoare3 variabilă2 = valoare4
De exemplu, puteți adăuga date / variabile despre gazdă numele domeniului și backend_baza de date pentru gazde vm3.nodekite.com și vm4.nodekite.com, așa cum este marcat în captura de ecran de mai jos.
Observați că valoarea numele domeniului și backend_baza de date faptele / variabilele sunt diferite pentru fiecare gazdă.
După ce ați terminat adăugarea faptelor / variabilelor gazdei, apăsați
Deoarece am adăugat aceleași fapte / variabile ca în exemplul de fapte / variabile de grup, putem folosi print_group_facts.yaml playbook pentru a testa și accesibilitatea acestor fapte / variabile.
Rulați print_group_facts.yaml playbook după cum urmează:
$ ansible-playbook playbooks / print_group_facts.yaml
După cum puteți vedea, faptele / variabilele gazdei sunt accesibile gazdei lor specificate. Valorile sunt diferite și pentru fiecare gazdă.
Deoarece fiecare dintre gazde se află într-o linie separată în fișierul meu de inventar, aș putea adăuga cu ușurință fapte / variabile despre gazdă în fișierul meu de inventar. Dar, dacă utilizați intervale pentru a defini gazde în fișierul de inventar așa cum este marcat în captura de ecran de mai jos, nu puteți adăuga fapte / variabile despre gazdă de genul acesta.
Puteți adăuga date / variabile ale gazdei într-un fișier separat, la fel cum ați făcut pentru datele / variabilele globale și de grup.
Pentru a adăuga date / variabile despre gazdă pentru vm5.nodekite.com gazdă, creați un fișier nou vm5.nodekite.com (la fel ca numele DNS al gazdei) în host_vars / director după cum urmează:
$ nano host_vars / vm5.nodekite.com
Puteți adăuga datele / variabilele gazdei db_port și db_name pentru gazdă vm5.nodekite.com cu rândurile următoare.
db_port: 3306db_name: demo1
După ce ați terminat, apăsați
În același mod, pentru a adăuga date / variabile despre gazdă pentru gazdă vm6.nodekite.com, creați un fișier nou vm6.nodekite.com în host_vars / director după cum urmează:
$ nano host_vars / vm6.nodekite.com
Puteți adăuga datele / variabilele gazdei db_port și db_name pentru gazdă vm6.nodekite.com cu rândurile următoare.
db_port: 8877db_name: app1
După ce ați terminat, apăsați
Pentru a imprima și a testa dacă putem accesa datele / variabilele gazdei, creați un nou playbook print_host_facts.yaml în cărți de joacă / director după cum urmează:
$ nano playbooks / print_host_facts.yaml
Acum, tastați următoarele linii în print_host_facts.yaml fişier.
- gazde: bază de dateutilizator: ansible
sarcini:
- nume: tipăriți datele despre gazdă
depanare:
msg: 'Nume bază de date: db_name Portul bazei de date: db_port'
După ce ați terminat, apăsați
Pentru a verifica dacă gazda vm5.nodekite.com și vm6.nodekite.com poate accesa datele / variabilele gazdei, poate rula print_host_facts.yaml playbook după cum urmează:
$ ansible-playbook playbooks / print_host_facts.yaml
După cum puteți vedea, gazdele vm5.nodekite.com și vm6.nodekite.com poate accesa db_name și db_port gazdă fapte / variabile.
Punând totul laolaltă: Precedența faptelor răspunzătoare
În această secțiune, voi vorbi despre Ansible fact / precedence variabilă. Asadar, haideti sa începem.
Înainte de a începe, să curățăm fișierul de inventar.
Deschide a gazdei fișier inventar cu următoarea comandă:
$ nano gazde
Eliminați secțiunea marcată din fișierul de inventar.
Acesta este modul în care ar trebui să arate fișierul dvs. de inventar în acest moment.
Acum, adăugați linia marcată în fișierul de inventar. Aceste linii adaugă fapte / variabile globale fact_scope și port.
Apoi, adăugați liniile marcate în fișierul de inventar. Aceste linii adaugă fact_scope și port fapte / variabile pentru gazdele din Bază de date grup.
În cele din urmă, adăugați fact_scope și port gazdă fapte / variabile pentru vm3.nodekite.com și vm4.nodekite.com gazde, așa cum este marcat în captura de ecran de mai jos.
După ce ați terminat, apăsați
Pentru a tipări valoarea faptelor / variabilelor globale, de grup și de gazdă, creați un nou playbook fapt_precendență.yaml în cărți de joacă / director după cum urmează:
$ nano playbooks / fact_precedence.yaml
Tastați următoarele linii în fact_precedence.yaml fişier.
- gazde: toateutilizator: ansible
sarcini:
- nume: tipăriți toate faptele
depanare:
msg: 'Fact Scope: fact_scope Port: port'
După ce ați terminat, apăsați
Pentru a imprima datele / variabilele globale, de grup și de gazdă, rulați fact_precedence.yaml playbook după cum urmează:
$ ansible-playbook playbooks / fact_precedence.yaml
După cum puteți vedea, datele / variabilele globale, de grup și de gazdă sunt tipărite.
Observați că faptele / variabilele grupului au înlocuit faptele / variabilele globale (1). De asemenea, observați că faptele / variabilele gazdei au înlocuit atât grupul, cât și faptele / variabilele globale (2).
Precedența de fapt / variabilă a lui Ansible este după cum urmează:
Date despre gazdă> Date despre grup> Date globaleConcluzie:
După ce citiți acest articol, ar trebui să puteți lucra confortabil cu fapte / variabile globale, grup și gazdă Ansible. Amintiți-vă prioritatea faptului personalizat Ansible. Vă va ajuta să depanați mai ușor cărțile de joc Ansible.