V programu Ansible lahko določite tri vrste dejstev po meri.
1) Globalna dejstva: Ta dejstva so dostopna vsem gostiteljem v vaši inventarni datoteki.
2) Skupinska dejstva: Ta dejstva so dostopna samo določenemu naboru gostiteljev ali gostiteljski skupini.
3) Dejstva gostitelja: Ta dejstva so dostopna samo določenemu gostitelju.
V tem članku vam bom pokazal, kako delati z dejstvi po meri Ansible. Torej, začnimo.
Pogoji:
Če želite preizkusiti primere tega članka,
1) V računalniku mora biti nameščen Ansible.
2) Za avtomatizacijo Ansible morate imeti konfiguriranih vsaj 6 gostiteljev Linuxa.
V LinuxHintu je veliko člankov, namenjenih namestitvi programa Ansible in konfiguriranju gostiteljev za avtomatizacijo Ansible. Po potrebi jih lahko preverite.
Nastavitev imenika projektov:
Preden začnemo, ustvarimo projektni imenik, da bomo lahko organizirali svoje projektne datoteke.
Če želite ustvariti imenik projekta dejstva po meri / v vašem DOMOV imenik, zaženite naslednji ukaz:
$ mkdir -pv dejstva po meri / playbooks, host_vars, group_vars
Zdaj se pomaknite do dejstva po meri / imenik, kot sledi:
$ cd dejstva po meri /
Ustvarite konfiguracijsko datoteko Ansible ansible.prim v imeniku vašega projekta, kot sledi:
$ nano ansible.prim
V naslednje vrstice vnesite vaš ansible.prim mapa.
[privzeto]inventar = gostitelji
host_key_checking = False
Ko končate, pritisnite
Zdaj ustvarite datoteko inventarja Ansible gostitelji v imeniku vašega projekta, kot sledi:
$ nano gostitelji
Vnesite naslednje vrstice v svoj gostitelja inventarna datoteka.
vm1.nodekite.comvm2.nodekite.com
[splet]
vm3.nodekite.com
vm4.nodekite.com
[baza podatkov]
vm [5: 6].nodekite.com
Ko končate, pritisnite
Če želite v svoji inventarni datoteki navesti vse razpoložljive gostitelje, zaženite naslednji ukaz:
$ ansible all --list-hostsKot lahko vidite, imam v svoji inventarni datoteki šest gostiteljev.
Za seznam gostiteljev, ki so na voljo v splet skupino datoteke z inventarjem zaženite naslednji ukaz:
$ ansible web --list-hostsKot lahko vidite, imam dva gostitelja (vm3.nodekite.com in vm4.nodekite.com) v splet skupina moje inventarne datoteke.
Za seznam gostiteljev, ki so na voljo v zbirka podatkov skupino datoteke z inventarjem zaženite naslednji ukaz:
Baza podatkov $ ansible --list-hostsKot vidite, imam dva gostitelja (vm5.nodekite.com in vm6.nodekite.com) v zbirka podatkov skupina moje inventarne datoteke.
Delo z odgovornimi globalnimi dejstvi:
V tem poglavju vam bom pokazal, kako v svoji inventarni datoteki določite globalna dejstva / spremenljivke Ansible in do njih dostopate iz svojih knjig za igranje Ansible. Pokazal vam bom tudi, kako v ločeni datoteki določite globalna dejstva / spremenljivke.
Najprej odprite gostitelja datoteka z naslednjim ukazom:
$ nano gostitelji
Zdaj dodajte označene vrstice v svoj gostitelja inventarna datoteka. Ko končate, pritisnite
"
Globalna dejstva dodate v vsi: vars odsek. Tu sem dodal spletni_url globalno dejstvo.
Zdaj ustvarite novo igro print_global_fact.yaml v igralne knjige / imenik, kot sledi:
$ nano playbooks / print_global_fact.yaml
Nato v vrstico vnesite naslednje vrstice print_global_fact.yaml mapa.
- gostitelji: vsiuporabnik: ansible
naloge:
- ime: Natisnite vrednost globalnega dejstva 'web_url'
odpravljanje napak:
msg: 'Spletni URL: web_url'
Namen te knjige je tiskati spletni_url globalno dejstvo.
Ko končate, pritisnite
Zdaj zaženite print_global_fact.yaml playbook, kot sledi:
$ ansible-playbook playbooks / print_global_fact.yaml
Kot lahko vidite, lahko vsi gostitelji v moji inventarni datoteki dostopajo do globalnega dejstva spletni_url.
Globalna dejstva lahko dodate tudi v ločeno datoteko. Tako lahko inventarno datoteko ohranite čisto. Poglejmo, kako to storiti.
Najprej odstranimo globalna dejstva iz gostitelja inventarna datoteka.
$ nano gostitelji
Zdaj odstranite označene vrstice iz inventarne datoteke in pritisnite
Nato ustvarite novo datoteko vse v group_vars / imenik, kot sledi:
$ nano group_vars / vse
Če dodamo še globalno dejstvo spletni_url, vnesite naslednjo vrstico v group_vars / all mapa.
spletni_url: https: // www.linuxhint.comKo končate, pritisnite
Če želite preveriti, ali lahko dostopate do globalnega dejstva spletni_url, zaženite print_global_fact.yaml igro znova, kot sledi:
$ ansible-playbook playbooks / print_global_fact.yaml
Kot lahko vidite, lahko vsi gostitelji v moji inventarni datoteki dostopajo do globalnega dejstva spletni_url.
Delo z dejstvi Ansible Group:
V tem poglavju vam bom pokazal, kako v svoji inventarni datoteki definirate dejstva / spremenljivke skupine Ansible in do njih dostopate iz svojih knjig za igranje Ansible. Pokazal vam bom tudi, kako v ločeni datoteki določite skupinska dejstva / spremenljivke.
Najprej odprite gostitelja datoteka z naslednjim ukazom:
$ nano gostitelji
Če imate gostiteljsko skupino skupina1, nato dodate dejstva / spremenljivke skupine za to gostiteljsko skupino v skupina1: vari del vaše inventarne datoteke.
[skupina1]..
[skupina1: različice]
spremenljivka1 = vrednost1
spremenljivka2 = vrednost2
Na primer, da dodate skupino dejstev / spremenljivk domena in database_backends za splet gostiteljsko skupino, lahko vnesete označene vrstice v svojo inventarno datoteko.
Ko končate, pritisnite
Če želite natisniti in preizkusiti, ali lahko dostopamo do skupinskih dejstev, ustvarite novo igro print_group_facts.yaml v igralne knjige / imenik, kot sledi:
$ nano playbooks / print_group_facts.yaml
Vnesite naslednje vrstice v svoj print_group_facts.yaml mapa.
- gostitelji: spletuporabnik: ansible
naloge:
- ime: Natisni dejstva o skupini
odpravljanje napak:
msg: 'Domain Name: domain_name Backend baze podatkov: database_backend'
Ko končate, pritisnite
Zdaj zaženite print_group_facts.yaml playbook, kot sledi:
$ ansible-playbook playbooks / print_group_facts.yaml
Kot lahko vidite, so gostitelji v splet skupina lahko dostopa do domena in database_backend skupino dejstev / spremenljivk.
Zdaj pa počistimo datoteko z inventarjem in poglejmo, kako v ločeno datoteko dodamo skupinska dejstva / spremenljivke.
Najprej odprite gostitelja inventarna datoteka, kot sledi:
$ nano dejstva
Odstranite označene črte iz gostitelja inventarna datoteka. Ko končate, pritisnite
Ker dodajamo skupinske spremenljivke za splet gostiteljska skupina, ustvarite novo datoteko splet (enako kot ime skupine) v group_vars / imenik, kot sledi:
$ nano group_vars / web
Če želite dodati skupinska dejstva domena in database_backend za splet gostiteljski skupini, dodajte naslednje vrstice v group_vars / web mapa.
ime_domene: splet.linuxhint.comdatabase_backend: pgsql
Ko končate, pritisnite
Če želite preveriti, ali gostitelji v splet Skupina lahko dostopa do dejstev v skupini, zažene print_group_facts.yaml playbook, kot sledi:
$ ansible-playbook playbooks / print_group_facts.yaml
Kot lahko vidite, so gostitelji v splet skupina lahko dostopa do domena in database_backend skupino dejstev / spremenljivk.
Delo z dejstvi o odgovornih gostiteljih:
V tem razdelku vam bom pokazal, kako v svoji inventarni datoteki določite dejstva / spremenljivke gostitelja Ansible in do njih dostopate iz svojih knjig za igranje Ansible. Pokazal vam bom tudi, kako v ločeni datoteki definirate dejstva / spremenljivke gostitelja.
Najprej odprite gostitelja datoteka z naslednjim ukazom:
$ nano gostitelji
Dejstva / spremenljivke gostitelja lahko dodate za imenom DNS ali naslovom IP gostitelja v datoteki inventarja, kot sledi:
www.domena1.com spremenljivka1 = vrednost1 spremenljivka2 = vrednost2192.168.22.2 spremenljivka1 = vrednost3 spremenljivka2 = vrednost4
Na primer, lahko dodate dejstva / spremenljivke gostitelja domena in database_backend za gostitelje vm3.nodekite.com in vm4.nodekite.com, kot je označeno na spodnjem posnetku zaslona.
Upoštevajte, da je vrednost domena in database_backend dejstva / spremenljivke se pri vsakem gostitelju razlikujejo.
Ko končate z dodajanjem dejstev / spremenljivk gostitelja, pritisnite
Ker sem dodal enaka dejstva / spremenljivke kot v primeru skupinske dejstva / spremenljivke, lahko uporabimo print_group_facts.yaml playbook, da preizkusite tudi dostopnost teh dejstev / spremenljivk.
Zaženite print_group_facts.yaml playbook, kot sledi:
$ ansible-playbook playbooks / print_group_facts.yaml
Kot lahko vidite, so dejstva / spremenljivke gostitelja dostopne določenemu gostitelju. Vrednosti se razlikujejo tudi za vsakega gostitelja.
Ker so vsi gostitelji v ločeni vrstici v moji inventarni datoteki, bi lahko brez težav dodal dejstva / spremenljivke gostitelja v svojo inventarno datoteko. Če pa obsege uporabljate za definiranje gostiteljev v datoteki inventarja, kot je označeno na spodnjem posnetku zaslona, ne morete dodati takšnih dejstev / spremenljivk.
Dejstva / spremenljivke gostitelja lahko dodate v ločeno datoteko, tako kot ste to storili za globalna in skupinska dejstva / spremenljivke.
Če želite dodati dejstva / spremenljivke gostitelja za vm5.nodekite.com gostitelj, ustvarite novo datoteko vm5.nodekite.com (enako kot gostiteljsko ime DNS) v gostitelji_vars / imenik, kot sledi:
$ nano host_vars / vm5.nodekite.com
Lahko dodate dejstva / spremenljivke gostitelja db_port in db_name za gostitelja vm5.nodekite.com z naslednjimi vrsticami.
db_port: 3306db_name: demo1
Ko končate, pritisnite
Na enak način, da dodate dejstva / spremenljivke gostitelja za gostitelja vm6.nodekite.com, ustvari novo datoteko vm6.nodekite.com v gostitelji_vars / imenik, kot sledi:
$ nano host_vars / vm6.nodekite.com
Lahko dodate dejstva / spremenljivke gostitelja db_port in db_name za gostitelja vm6.nodekite.com z naslednjimi vrsticami.
db_port: 8877db_name: app1
Ko končate, pritisnite
Če želite natisniti in preizkusiti, ali lahko dostopamo do dejstev / spremenljivk gostitelja, ustvarite novo igro print_host_facts.yaml v igralne knjige / imenik, kot sledi:
$ nano playbooks / print_host_facts.yaml
Zdaj vnesite naslednje vrstice v print_host_facts.yaml mapa.
- gostitelji: baza podatkovuporabnik: ansible
naloge:
- ime: Natisni dejstva o gostiteljih
odpravljanje napak:
msg: 'Ime baze podatkov: db_name Vrata baze podatkov: db_port'
Ko končate, pritisnite
Če želite preveriti, ali gostitelj vm5.nodekite.com in vm6.nodekite.com lahko dostopa do dejstev / spremenljivk gostitelja, zažene print_host_facts.yaml playbook, kot sledi:
$ ansible-playbook playbooks / print_host_facts.yaml
Kot vidite, gostitelji vm5.nodekite.com in vm6.nodekite.com lahko dostopate do db_name in db_port gostiteljica dejstev / spremenljivk.
Vse skupaj: prednost pred odgovornimi dejstvi
V tem poglavju bom govoril o prednostnem dejstvu / spremenljivki Ansible. Torej, začnimo.
Preden začnemo, očistimo inventarno datoteko.
Odprite gostitelja datoteka z naslednjim ukazom:
$ nano gostitelji
Odstranite označeni odsek iz inventarne datoteke.
Tako naj bi v tem trenutku izgledala vaša inventarna datoteka.
Zdaj dodajte označeno vrstico v svojo inventarno datoteko. Te vrstice dodajo globalna dejstva / spremenljivke fact_scope in pristanišče.
Nato dodajte označene vrstice v svojo inventarno datoteko. Te vrstice dodajo fact_scope in pristanišče dejstva / spremenljivke za gostitelje v zbirka podatkov skupini.
Na koncu dodajte fact_scope in pristanišče gostiteljica dejstev / spremenljivk za vm3.nodekite.com in vm4.nodekite.com gostitelji, kot je označeno na spodnjem posnetku zaslona.
Ko končate, pritisnite
Če želite natisniti vrednost globalnih, skupinskih in gostiteljskih dejstev / spremenljivk, ustvarite novo igro dejstvo_prednost.yaml v igralne knjige / imenik, kot sledi:
$ nano playbooks / fact_precedence.yaml
Vnesite naslednje vrstice v dejstvo_prednost.yaml mapa.
- gostitelji: vsiuporabnik: ansible
naloge:
- ime: Natisnite vsa dejstva
odpravljanje napak:
msg: 'Obseg dejstev: fact_scope Vrata: port'
Ko končate, pritisnite
Če želite natisniti globalna, skupinska in gostiteljska dejstva / spremenljivke, zaženite dejstvo_prednost.yaml playbook, kot sledi:
$ ansible-playbook playbooks / fact_precedence.yaml
Kot lahko vidite, se natisnejo globalna, skupinska in gostiteljska dejstva / spremenljivke.
Opazite, da so skupna dejstva / spremenljivke nadomestila globalna dejstva / spremenljivke (1). Upoštevajte tudi, da so gostiteljska dejstva / spremenljivke nadomestila skupinsko in globalna dejstva / spremenljivke (2).
Prednost dejstva / spremenljivke Ansible je naslednja:
Dejstvo gostitelja> Dejstvo skupine> Globalno dejstvoZaključek:
Po branju tega članka boste lahko udobno delali z globalnimi, skupinskimi in gostiteljskimi dejstvi / spremenljivkami Ansible. Ne pozabite na prednostno dejstvo po meri Ansible. Pomagal vam bo lažje odpraviti napake v knjigah Ansible.