Vadnica za začetnike - odgovorne knjige, spremenljivke in inventar

Beginner S Tutorial Ansible Playbooks



Knjige predvajanja Ansible so datoteke, ki vsebujejo naloge, ki se izvajajo za konfiguriranje gostiteljev z Ansible. Odgovorne knjige o igrah so napisane v formatu YAML. YAML je zelo preprosta oblika datoteke, tako kot JSON. V naslednjem razdelku tega članka vam bom pokazal, kako izgledajo knjige z igrami Ansible YAML.

Datoteke inventarja Ansible vodijo seznam gostiteljev, ki jih želite konfigurirati ali upravljati z Ansible. Te gostitelje lahko združite in upravljate tudi po skupinah. Prav tako lahko posredujete različne spremenljivke za vsakega gostitelja ali za skupino gostiteljev.







V tem članku vam bom pokazal, kako delati s knjigami predvajanja Ansible, spremenljivkami, datotekami inventarja in nekaterimi pogostimi moduli Ansible s praktičnimi primeri. Torej, začnimo!



Predpogoji

Če želite preizkusiti primere v tem članku,



1) V računalniku morate imeti nameščen Ansible.
2) Za avtomatizacijo Ansible morate konfigurirati vsaj gostitelja Ubuntu/Debian in gostitelja CentOS/RHEL 8.





V LinuxHintu je veliko člankov, namenjenih namestitvi Ansible in konfiguriranju gostiteljev za avtomatizacijo Ansible. Za več informacij si lahko ogledate te članke.

Ustvarjanje imenika projektov

Najprej ustvarite imenik projekta ~/project/ z naslednjim ukazom:

$mkdir -pv~/projekt/knjige z igrami

Pomaknite se do ~/project/ imenik na naslednji način:

$CD~/projekt

Osnovna datoteka inventarja:

Ustvarite datoteko inventarja Ansible gostitelji v imeniku projekta z naslednjim ukazom:

$nanogostitelji

Naslove IP gostiteljev, ki jih želite konfigurirati/avtomatizirati, lahko vnesete v Ansible v datoteko gostitelji popisno datoteko.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Ko končate s tem korakom, shranite datoteko s pritiskom na + X sledi IN in .

Če želite namesto naslovov IP v datoteki popisa uporabiti imena DNS, lahko to storite tudi.

Če nimate delujočega strežnika DNS, lahko uporabite /etc/hosts datoteko v računalniku za lokalno ločljivost DNS.

Za lokalno ločljivost DNS odprite datoteko /etc/hosts datoteko z urejevalnikom besedila ( nano , v mojem primeru) takole:

$sudo nano /itd/gostitelji

Vnesite naslove IP in želena imena DNS na naslednji način:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

Ko končate s tem korakom, pritisnite + X sledi IN in .

Odprite datoteko inventarja Ansible gostitelji kot sledi:

$nanogostitelji

Zdaj lahko z imenom Ansible vnesete imena DNS gostiteljev, ki jih želite konfigurirati/avtomatizirati gostitelji popisno datoteko.

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

Ko končate, shranite datoteko inventarja gostiteljev s pritiskom na + X sledi IN in .

Testiranje povezljivosti z vsemi gostitelji

Zdaj lahko poskusite pingati vse gostitelje v datoteki inventarja na naslednji način:

$ansible-jazgosti vse-uansible-m ping

Kot lahko vidite, so vsi gostitelji v datoteki inventarja dosegljivi. Torej smo pripravljeni preiti na naslednji razdelek tega članka.

Vaša prva odgovorna knjiga

Ustvarimo preprosto knjigo igranja Ansible ping_all_hosts.yaml v knjige o igrah/ imenik. To dejanje bo pingalo vse gostitelje v gostitelji inventarna datoteka, kot prej.

$nanoknjige z igrami/ping_all_hosts.yaml

Vnesite naslednje vrstice v ping_all_hosts.yaml Datoteka Ansible playbook:

- gostitelji: vsi
uporabnik: ansible
naloge:
- name: Ping vse gostitelje
ping:

Tukaj,

gostitelji: vsi - izbere vse gostitelje iz datoteke inventarja gostitelji .
uporabnik: ansible - pove Ansible SSH gostiteljem v datoteki inventarja kot ansible uporabnik.
naloge - tukaj so navedene vse naloge, ki jih bo Ansible izvedel v gostiteljih. Vsaka od nalog ima običajno ime in eno ali več možnosti, specifičnih za modul.

Knjiga iger ping_all_hosts.yaml ima samo eno nalogo, ki pinguje vse gostitelje v datoteki inventarja gostitelji . Ime naloge je Ping vse gostitelje in uporablja ping modul.

The ping modul ne potrebuje drugih možnosti. Torej sem pustil prazno (za dvopičjem ni ničesar, : )

Ko končate s tem korakom, shranite datoteko s pritiskom na + X sledi IN in .

Lahko zaženete ping_all_hosts.yaml Odgovorna knjiga na naslednji način:

$ansible-playbook-jazgostuje knjige/ping_all_hosts.yaml

Kot lahko vidite, je opravilo ping uspešno v vseh gostiteljih v datoteki inventarja.

Enostavna konfiguracijska datoteka Ansible

V prejšnjem primeru ste morali uporabiti datoteko -jaz možnost, da Ansible pove, katero datoteko inventarja naj uporabi. V mojem primeru je to gostitelji popisno datoteko.

$ansible-playbook-jazgostuje knjige/ping_all_hosts.yaml

Če ne želite posredovati popisne datoteke z datoteko -jaz možnost vsakič, ko zaženete knjigo predvajanja Ansible, morate le nastaviti privzeto datoteko inventarja za svoj projekt.

Če želite to narediti, ustvarite novo konfiguracijsko datoteko Ansible ansible.cfg v korenu vašega projekta na naslednji način:

$nanoansible.cfg

Vnesite naslednje vrstice v ansible.cfg mapa:

[privzete vrednosti]
inventar =./gostitelji

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Isto knjigo predvajanja Ansible lahko zaženete na naslednji način:

$knjige za igranje ansible-playbook/ping_all_hosts.yaml

Kot lahko vidite, knjiga za predvajanje uporablja datoteko gostitelji inventarna datoteka privzeto. Še vedno lahko uporabite -jaz možnost, da po želji določite drugo datoteko inventarja. Ansible je zelo prilagodljiv.

Združevanje gostiteljev v datoteko inventarja

Doslej sem vam pokazal, kako izvajati nabor nalog (knjigo predvajanja) na vseh gostiteljih v datoteki inventarja. Kaj pa, če želite zagnati niz nalog v nekaterih gostiteljih in drug niz opravil v drugih gostiteljih? Gostitelje lahko združite v datoteko inventarja in izvajate različna opravila v skupinah gostiteljev.

V tem razdelku vam bom pokazal, kako združiti gostitelje v datoteko inventarja in kako delati s skupinami gostiteljev.

Najprej odprite datoteko inventarja gostitelji kot sledi:

$nanogostitelji

Vnesite naslednje vrstice v gostitelji popisna datoteka:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com

Tu sem ustvaril dve skupini gostiteljev: debian10 in centos8 .

V debian10 skupina, imam dva gostitelja: vm1.nodekite.com in vm2.nodekite.com

V centos8 skupina, imam dva gostitelja: vm3.nodekite.com in vm4.nodekite.com

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zdaj bomo ustvarili novo knjigo z igrami ping_debian10_hosts.yaml , ki bo pingoval gostitelje kot prej, vendar samo gostitelji v debian10 gostiteljska skupina.

Ustvarite knjigo iger ping_debian10_hosts.yaml v knjige o igrah/ imenik na naslednji način:

$nanoknjige z igrami/ping_debian10_hosts.yaml

Vnesite naslednje vrstice v ping_debian10_hosts.yaml Odgovorna knjiga z igrami:

- gostitelji: debian10
uporabnik: ansible
naloge:
- ime: Ping vse Debian10gostitelji
ping:

Namesto gostitelji: vsi , Sem dodal gostitelji: debian10 tukaj. debian10 je gostiteljska skupina. Ta priročnik bo na voljo samo pri gostiteljih v debian10 gostiteljska skupina.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Knjigo z igrami zaženite na naslednji način:

$knjige za igranje ansible-playbook/ping_debian10_hosts.yaml

Kot lahko vidite, samo gostitelji v debian10 gostiteljska skupina je pingana.

Z isto metodo ustvarite drugo knjigo predvajanja ping_centos8_hosts.yaml kot sledi:

$nanoknjige z igrami/ping_centos8_hosts.yaml

Vnesite naslednje vrstice v ping_centos8_hosts.yaml Odgovorna knjiga z igrami:

- gostitelji: centos8
uporabnik: ansible
naloge:
- ime: Ping vse CentOS8gostitelji
ping:

Na enak način sem dodal gostitelji: centos8 tukaj. centos8 je gostiteljska skupina. Ta priročnik bo na voljo samo pri gostiteljih v centos8 gostiteljska skupina.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Knjigo z igrami zaženite na naslednji način:

$knjige za igranje ansible-playbook/ping_centos8_hosts.yaml

Kot lahko vidite, samo gostitelji v centos8 gostiteljska skupina je pingana.

Vrste spremenljivk Ansible

V Ansibleu obstajajo različne vrste spremenljivk. Glavne vrste spremenljivk so Spremenljivke Ansible Facts in Uporabniško definirane spremenljivke .

Spremenljivke Ansible Facts: Odvisno od gostitelja, na katerem Ansible dela, Ansible ustvari spremenljivke Ansible fact. Spremenljivke Odgovorna dejstva vsebujejo podatke o gostitelju, kot so naslovi IP, ime gostitelja, ime domene, datum, čas, spremenljivke okolja lupine in drugo.

Uporabniško določene spremenljivke: To so spremenljivke po meri, ki jih določi uporabnik. Uporabniško določene spremenljivke lahko posredujete iz ukazne vrstice ali uporabite datoteko inventarja.

Večinoma uporabniško določene spremenljivke so dveh vrst: Skupinske spremenljivke in Spremenljivke gostitelja .

Odgovorna spremenljiva prednost

Spremenljiva prednost Ansible je : Spremenljivke ukazne vrstice > Spremenljivke gostitelja > Skupinske spremenljivke

Če nastavite isto spremenljivko kot spremenljivko gostitelja in spremenljivko skupine, bo spremenljivka gostitelja uporabljena.

Podobno bodo spremenljivke, ki jih nastavite iz ukazne vrstice med izvajanjem knjige za predvajanje, nadomestile spremenljivke gostitelja in skupine.

Delo s spremenljivkami Ansible Facts

V tem razdelku vam bom pokazal, kako delati s spremenljivkami Ansible fact. Torej, začnimo!

V svoji datoteki lahko navedete vse spremenljivke Ansible Facts gostiteljev gostitelji popisno datoteko, kot sledi:

$odgovorno vse-uansible-mnastaviti

Kot lahko vidite, so vse spremenljivke Ansible Facts navedene v formatu JSON. To je zelo dolg seznam.

Ker je seznam precej dolg, ga lahko odprete s strani, kot je npr manj kot sledi:

$odgovorno vse-uansible-mnastaviti| manj

Zdaj se lahko po potrebi pomaknete navzgor, navzdol, levo in desno.

Imena spremenljivk lahko poiščete tudi na strani. Če želite to narediti, pritisnite / tipko na tipkovnici. Nato vnesite iskalni niz ( ime gostitelja v mojem primeru) in pritisnite .

Kot lahko vidite, je spremenljivka Ansible fact, ki se ujema z iskalnim nizom ansible_hostname . Lahko pritisnete N za naslednjo tekmo in P za prehod na prejšnjo tekmo s strani. Tako najdete spremenljivko Ansible fact, ki jo potrebujete za svoj projekt Ansible.

Poglejmo zdaj, kako dostopati do spremenljivk Ansible fact.

Ustvarite novo knjigo predvajanja print_variable1.yaml kot sledi:

$nanoknjige z igrami/print_variable1.yaml

Vnesite naslednje vrstice v print_variable1.yaml mapa:

- gostitelji: vsi
uporabnik: ansible
naloge:
- ime: Natisniime gostiteljavseh gostiteljev
odpravljanje napak:
sporočilo:'{{ansible_hostname}}'

Tukaj sem dodal eno nalogo Natisnite ime gostitelja vseh gostiteljev . Ta naloga uporablja Ansible odpravljanje napak modul za tiskanje sporočila med izvajanjem knjige.

Sporočilo je edini zahtevani parameter odpravljanje napak modul. The Sporočilo parameter sprejema niz v narekovajih, to je sporočilo, ki bo natisnjeno na konzoli.

Tukaj, {{ime_premenljivke}} format se uporablja za dostop do spremenljivke. V tem primeru, {{ansible_hostname}} se uporablja za tiskanje ansible_hostname spremenljivko vsakega gostitelja v datoteki inventarja.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Do spremenljivke Ansible fact lahko dostopate tudi kot ansible_facts [ime_premenljivke] . Torej ansible_hostname spremenljivka bo postala ansible_facts [ime gostitelja] .

Lahko ga ponovno napišemo print_variable1.yaml tudi takšno knjigo. Dobili bomo enak rezultat.

- gostitelji: vsi
uporabnik: ansible
naloge:
- ime: Natisniime gostiteljavseh gostiteljev
odpravljanje napak:
sporočilo:'{{ansible_facts [' variable_name ']}}'

Zaženite knjigo predvajanja print_variable1.yaml kot sledi:

$knjige za igranje ansible-playbook/print_variable1.yaml

Kot lahko vidite, je ime gostitelja vsakega gostitelja v datoteki inventarja natisnjeno na konzoli.

Natisnimo zdaj privzeti naslov IPv4 vsakega gostitelja skupaj z imenom gostitelja. Kot lahko vidite, lahko do privzetega naslova IPv4 gostitelja dostopate z naslov lastnina ansible_default_ipv4 predmet.

Ustvarite novo knjigo predvajanja print_variable2.yaml kot sledi:

$nanoknjige z igrami/print_variable2.yaml

Vnesite naslednje vrstice v print_variable2.yaml mapa:

- gostitelji: vsi
uporabnik: ansible
naloge:
- ime: Natisniime gostiteljavseh gostiteljev
odpravljanje napak:
sporočilo:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Ta knjiga je enaka kot prej. Edina razlika je nova spremenljivka {{ansible_default_ipv4.address}} v Sporočilo možnost odpravljanje napak modul.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite print_variable2.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/print_variable2.yaml

Kot lahko vidite, sta privzeti naslov IPv4 in ime gostitelja natisnjena na konzoli.

Torej, tako delate s spremenljivkami Ansible Facts.

Nastavitev uporabniško določenih spremenljivk iz ukazne vrstice:

V tem razdelku vam bom pokazal, kako nastavite uporabniško določene spremenljivke iz ukazne vrstice med izvajanjem knjig Ansible.

Najprej ustvarite novo knjigo z igrami print_variable3.yaml kot sledi:

$nanoknjige z igrami/print_variable3.yaml

Vnesite naslednje vrstice v print_variable3.yaml mapa:

- gostitelji: vsi
uporabnik: ansible
naloge:
- ime: Natisniukazvrstna spremenljivka
odpravljanje napak:
sporočilo:'Dobrodošli {{uporabniško ime}}'

Tukaj sem uporabil odpravljanje napak modul za tiskanje sporočila Dobrodošli {{username}} . uporabniško ime je spremenljivka, ki bo nadomeščena, ko zaženemo knjigo.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite knjigo predvajanja print_variable3.yaml kot sledi:

$ansible-playbook-In 'username = Bob'knjige z igrami/print_variable3.yaml

OPOMBA: Tukaj, -In možnost se uporablja za podajanje a uporabniško ime spremenljivko z vrednostjo Bob v knjigo iger print_variable3.yaml iz ukazne vrstice.

Kot lahko vidite, sporočilo Dobrodošel Bob je natisnjeno na konzoli.

Odkrijmo, kako iz ukazne vrstice posredovati več spremenljivk.

Ustvarite novo knjigo predvajanja print_variable4.yaml kot sledi:

$nanoknjige z igrami/print_variable4.yaml

Vnesite naslednje vrstice v print_variable4.yaml mapa:

- gostitelji: vsi
uporabnik: ansible
naloge:
- name: Natisni spremenljivke, ki jih definira uporabnik
odpravljanje napak:
sporočilo:'username = {{username}} http_port = {{http_port}}'

Knjiga iger bi vam morala biti zdaj zelo znana. Vse, kar naredi, je natisniti dve spremenljivki uporabniško ime in http_port na konzoli.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zdaj lahko greste mimo uporabniško ime in http_port spremenljivko v knjigi z dvema različnima -In možnost, kot sledi:

$ ansible-playbook-In 'username = Bob' -In 'http_port = 8080'
knjige z igrami/print_variable4.yaml

Ali pa preprosto spremenite spremenljivke s presledkom:

$ ansible-playbook-In 'username = Bob http_port = 8080'
knjige z igrami/print_variable4.yaml

Kot lahko vidite, uporabniško ime in http_port spremenljivke so natisnjene na konzoli.

Delo s spremenljivkami skupine, ki jih določi uporabnik

Recimo, da želite skupini spremeniti nekatere spremenljivke. To dejanje je v Ansibleju zelo preprosto.

Najprej odprite svoj gostitelji popisno datoteko, kot sledi:

$nanogostitelji

Vnesite naslednje vrstice v svoj gostitelji popisna datoteka:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
username = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vari]
uporabniško ime = Bob
http_port =7878

Kot lahko vidite, sem ustvaril nov razdelek [debian10: vars] za debian10 gostiteljsko skupino in dodala spremenljivke ( uporabniško ime in http_port ) za debian10 gostiteljsko skupino.

Na enak način sem ustvaril nov razdelek [centos8: vars] za centos8 gostiteljsko skupino in dodala spremenljivke ( uporabniško ime in http_port ) za centos8 gostiteljsko skupino.

Ko končate, shranite gostitelji datoteko inventarja s pritiskom na + X sledi IN in .

Zaženite print_variable4.yaml knjige za igranje, kot sledi:

$knjige za igranje ansible-playbook/print_variable4.yaml

Kot lahko vidite, so pravilne spremenljivke posredovane vsakemu gostitelju, odvisno od njihove skupine gostiteljev.

Delo s spremenljivkami gostitelja, ki jih določi uporabnik

V tem razdelku vam bom pokazal, kako nastavite spremenljivke za določene gostitelje v datoteki inventarja.

Najprej odprite gostitelji popisno datoteko, kot sledi:

$nanogostitelji

Če želite spremenljivke dodati določenemu gostitelju (recimo, vm1.nodekite.com ), samo dodajte presledek/zavihek za imenom IP/DNS gostitelja in vnesite svoje spremenljivke, kot je prikazano na spodnjem posnetku zaslona.

Dodate lahko tudi več spremenljivk. Vsake spremenljivke preprosto ločite s presledkom.

Ko končate, shranite datoteko inventarja s pritiskom na + X sledi IN in .

Zaženite print_variable4.yaml knjige za igranje, kot sledi:

$knjige za igranje ansible-playbook/print_variable4.yaml

Kot lahko vidite, so spremenljivke nastavljene samo za vm1.nodekite.com gostitelja. Drugi gostitelji imajo zanje uporabljene spremenljivke skupine.

Hitro ustvarjanje inventarnih datotek z obsegi

Obsege lahko uporabite za hitro ustvarjanje datotek inventarja Ansible, če so naslovi IP gostitelja ali imena DNS skladni (tj. Imajo določeno obliko).

V prejšnjih primerih sem uporabil gostitelje vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com in vm4.nodekite.com . Namesto da bi vtipkal v 4 vrstice, bi lahko kar tipkal vm [1: 4] .nodekite.com v popisni datoteki.

Če želite eksperimentirati z razponi, odprite gostitelji popisno datoteko, kot sledi:

$nanogostitelji

Odstranite vse gostitelje in spremenljivke iz datotek inventarja.

Zdaj lahko zamenjamo vm1.nodekite.com in vm2.nodekite.com z vm [1: 2] .nodekite.com za debian10 gostiteljsko skupino, kot sledi.

Na enak način lahko zamenjamo vm3.nodekite.com in vm4.nodekite.com z vm [3: 4] .nodekite.com za centos8 gostiteljska skupina.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite ping_all_hosts.yaml kot sledi:

$knjige za igranje ansible-playbook/ping_all_hosts.yaml

Kot lahko vidite, so se obsegi gostiteljev povečali, ko sem vodil knjigo predvajanja.

Shranjevanje spremenljivk v različne datoteke

Shranjevanje spremenljivk skupine in spremenljivk gostitelja v isto datoteko inventarja je zelo enostavno. Morda pa iščete večjo prilagodljivost. Še posebej, če želite uporabiti obsege v datoteki inventarja, saj pri uporabi obsegov ne morete več nastaviti spremenljivk gostitelja. No, lahko spremenite spremenljivke skupine in spremenljivke gostitelja v različne datoteke. V tem razdelku vam bom pokazal, kako se to naredi.

Ansible privzeto išče spremenljivke skupine v group_vars / imenik in spremenljivke gostitelja v host_vars / imenik.

Torej, ustvarite group_vars / in host_vars / imenik na naslednji način:

$mkdir -pv {gostitelj, skupina}_ čigav

Če želite nastaviti spremenljivke skupine za debian10 gostiteljsko skupino, ustvarite datoteko debian10 (enako kot ime skupine) v group_vars / imenik na naslednji način:

$nanogroup_vars/debian10

Spremenljivke vnesite na naslednji način:

uporabniško ime: Lily
http_port: 4343

Ko končate, shranite datoteko s pritiskom na + X sledi Y in .

Na enak način nastavite spremenljivke skupine za centos8 gostiteljsko skupino, ustvarite datoteko centos8 (enako kot ime skupine) v group_vars / imenik na naslednji način:

$nanogroup_vars/centos8

Spremenljivke vnesite na naslednji način:

uporabniško ime: Bob
http_port: 7878

Ko končate, shranite datoteko s pritiskom na + X sledi Y in .

Zaženite print_variable4.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/print_variable4.yaml

Kot lahko vidite, so spremenljivke skupine pravilno nastavljene za vsako skupino gostiteljev.

Za nastavitev spremenljivk gostitelja za gostitelja vm1.nodekite.com , ustvarite datoteko vm1.nodekite.com (enako kot ime gostitelja ali naslov IP) v datoteki host_vars / imenik na naslednji način:

$nanovm1.nodekite.com

Spremenljivke gostitelja vnesite na naslednji način:

uporabniško ime: Alex
http_port: 7788

Ko končate, shranite datoteko s pritiskom na + X sledi Y in .

Zaženite print_variable4.yaml knjigo iger na naslednji način:

knjig $ ansible-playbook/print_variable4.yaml
[

Kot lahko vidite, so spremenljivke gostitelja pravilno nastavljene za gostitelja vm1.nodekite.com .

Delo z zankami v Ansible

V tem razdelku vam bom pokazal, kako uporabljati zanke v Ansibleu.

Najprej ustvarite novo knjigo z igrami loop1.yaml v knjige o igrah/ imenik na naslednji način:

$nanoknjige z igrami/loop1.yaml

Vnesite naslednje vrstice v loop1.yaml knjiga z igrami:

- gostitelji: vsi
uporabnik: ansible
naloge:
- ime: Natisni seznam uporabnikov
odpravljanje napak:
sporočilo:'Uporabnik: {{item}}'
with_items:
- Alex
- Bob
- Lily

Tukaj imam 1 opravilo, ki natisne seznam uporabnikov z uporabo zanke.

Če želite nastaviti vrednosti ponovitve za nalogo, uporabite datoteko with_items modul. Nato vrednosti dodajate eno za drugo.

with_items:
- Alex
- Bob
- Lily

Do vrednosti trenutne ponovitve dostopate z element spremenljivka.

odpravljanje napak:
sporočilo:'Uporabnik: {{item}}'

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite loop1.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/loop1.yaml

Kot lahko vidite, je za vsako postavko na vsakem gostitelju potekalo isto opravilo. Torej, zanka deluje.

Delo s pogoji v Ansible

Če želite izvajati opravila na podlagi določenih pogojev, je ta razdelek za vas.

Če želite izvajati opravila glede na pogoje, lahko uporabite kdaj modul Ansible. Poglejmo primer tega modula. Najprej ustvarite novo knjigo z igrami stanje1.yaml kot sledi:

$nanoknjige z igrami/stanje1.yaml

Vnesite naslednje vrstice v stanje1.yaml knjiga z igrami:

- gostitelji: vsi
uporabnik: ansible
naloge:
- name: To nalogo zaženite samo v Debianu
odpravljanje napak:
sporočilo:'ta naloga se izvaja v Debianu'
kdaj: ansible_facts['distribucija']=='Debian'

Tukaj,

ansible_facts ['distribution'] == 'Debian' se uporablja za preverjanje, ali je distribucijo je Debian . Naloga se bo izvajala le, če je distribucija Debian.

The ansible_facts ['distribucija'] se uporablja za dostop do spremenljivke Ansible Facts ansible_distribution . Različico za distribucijo lahko preverite tudi z ansible_distribution_major_version spremenljivka.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite stanje1.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/stanje1.yaml

Kot lahko vidite, se je opravilo izvajalo samo na gostiteljih Debian. Naloga se ni izvajala na gostiteljih CentOS.

Preverite lahko tudi več pogojev hkrati in opravite nalogo le, če so izpolnjeni vsi pogoji. Poglejmo primer.

Ustvarite novo knjigo predvajanja stanje2.yaml kot sledi:

$nanoknjige z igrami/stanje2.yaml

Vnesite naslednje vrstice v stanje2.yaml mapa:

- gostitelji: vsi
uporabnik: ansible
naloge:
- name: To nalogo zaženite samo v Debianu10
odpravljanje napak:
sporočilo:'ta naloga se izvaja v Debianu 10'
kdaj: ansible_facts['distribucija']=='Debian'
in ansible_facts['distribution_major_version']=='10'

Tu se bo opravilo izvajalo le, če je distribucija Debian ( ansible_facts ['distribution'] == 'Debian' ) in različica je 10 ( ansible_facts ['distribution_major_version'] == '10' ). Če sta oba pogoja resnična, se bo naloga zagnala. V nasprotnem primeru se opravilo ne bo izvajalo.

Uporabil sem in ključno besedo, da preverite, ali sta oba pogoja tukaj izpolnjena. Če želite preveriti, ali je kateri od pogojev resničen, lahko uporabite ali namesto tega ključna beseda.

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite knjigo predvajanja stanje2.yaml kot sledi:

$knjige za igranje ansible-playbook/stanje2.yaml

Kot lahko vidite, je opravilo delovalo samo na gostiteljih Debian 10.

Zamenjajmo knjigo iger stanje2.yaml izvesti nalogo samo na gostiteljih Debian 8, kot sledi.

Kot lahko vidite, so bili vsi gostitelji preskočeni, saj v datoteki inventarja nimam gostiteljev Debian 8.

Delo z modulom Ansible apt

The apt modul Ansible se uporablja za namestitev posebnega programskega paketa na gostitelje Ubuntu/Debian. Poglejmo, kako uporabljati ta modul.

Najprej ustvarite novo knjigo z igrami apt1.yaml v knjige o igrah/ imenik na naslednji način:

$nanoknjige z igrami/apt1.yaml

Vnesite naslednje vrstice v apt1.yaml knjiga z igrami:

- gostitelji: debian10
uporabnik: ansible
postati: Res
naloge:
- name: Namestite apache2
primerno:
ime: apache2
stanje: najnovejše

The apt modul zahteva samo ime paketa, ki ga želite namestiti/nadgraditi/odstraniti, in država paketa.

Tukaj poskušam namestiti apache2 paket ( ime: apache2 ) na mojih gostiteljih Debian 10. Ker poskušam namestiti paket in ga tudi nadgraditi, če je na voljo nova različica, bo država moral bi biti najnovejše .

država sprejema tudi naslednje možnosti:

- odsoten - Paket bo odstranjen, če je že nameščen.
- najnovejše - Paket bo nadgrajen, če bo na voljo posodobitev. Če paket še ni nameščen, bo nameščen.
- prisotni - Paket bo nameščen, če še ni nameščen. Če pa je na voljo posodobitev, paket ne bo nadgrajen.

Upoštevajte, da sem dodal postati: Res v knjigi iger. To bo dalo ansible uporabniške pravice sudo za spreminjanje strukture datotečnega sistema (tj. namestitev/nadgradnja/odstranjevanje paketov). Brez postati: Res , apt modul ne bo mogel namestiti apache2 paket.

Ko končate, shranite knjigo predvajanja s pritiskom na + X sledi IN in .

Zaženite apt1.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/apt1.yaml

Kot lahko vidite, se je knjiga uspešno predstavila na gostiteljih Debian 10.

Kot lahko vidite, apache2 paket je nameščen na mojih gostiteljih Debian 10.

Delo z modulom Ansible dnf/yum

The dnf in yum modul Ansible se uporablja za namestitev posebnega programskega paketa na gostiteljih CentOS/RHEL. Ta modul lahko uporabite na enak način apt modul v prejšnjem razdelku tega članka.

Oba dnf in yum moduli sprejemajo iste parametre. Lahko uporabite dnf modul na gostiteljih CentOS/RHEL 8 in yum na CentOS/RHEL 7 ali starejšem.

Zdaj pa poglejmo primer tega modula.

Najprej ustvarite novo knjigo z igrami dnf1.yaml v knjige o igrah/ imenik na naslednji način:

$nanoknjige z igrami/dnf1.yaml

Vnesite naslednje vrstice v dnf1.yaml knjiga z igrami:

- gostitelji: centos8
uporabnik: ansible
postati: Res
naloge:
- name: Namestite paket httpd
dnf:
ime: httpd
stanje: najnovejše

The dnf in yum modul zahteva samo ime paketa, ki ga želite namestiti/nadgraditi/odstraniti, in država paketa.

Tukaj poskušam namestiti httpd paket ( ime: httpd ) na mojih gostiteljih CentOS 8. Ker poskušam namestiti paket in bi ga rad nadgradil tudi, če je na voljo nova različica država moral bi biti najnovejše .

država sprejema naslednje možnosti:

- odsoten - Paket bo odstranjen, če je že nameščen.
- najnovejše - Paket bo nadgrajen, če bo na voljo posodobitev. Če paket še ni nameščen, bo nameščen.
- prisotni - Paket bo nameščen, če še ni nameščen. Če pa je na voljo posodobitev, paket ne bo nadgrajen.

Upoštevajte, da sem dodal postati: Res v knjigi iger. To daje ansible uporabniške pravice sudo za spreminjanje strukture datotečnega sistema (tj. namestitev/nadgradnja/odstranjevanje paketov). Brez postati: Res , apt modul ne bo mogel namestiti httpd paket.

Ko končate, shranite knjigo predvajanja s pritiskom na + X sledi IN in .

Zaženite dnf1.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/dnf1.yaml

Kot lahko vidite, se je knjiga uspešno predstavila na gostitelju CentOS 8.

Delo z modulom Ansible service

The storitev modul Ansible se uporablja za zagon, ustavitev, ponovni zagon, omogočanje (dodajanje storitve ob zagonu) in onemogočanje (odstranitev storitve iz zagona) storitev v vaših gostiteljih.

V prejšnjih razdelkih sem vam pokazal, kako z Ansibleom namestite strežniški paket HTTP Apache apt , dnf in yum modulov. Zagotovimo, da se strežniška storitev Apache HTTP izvaja in je bila dodana ob zagonu sistema.

Sodeloval bom z gostitelji Debian 10. Če želite, lahko delate z gostitelji CentOS 8. Knjigo iger preprosto ustrezno prilagodite.

Najprej ustvarite novo knjigo predvajanja Ansible apt2.yaml kot sledi:

$nanoknjige z igrami/apt2.yaml

Vnesite naslednje vrstice v apt2.yaml knjiga z igrami:

- gostitelji: debian10
uporabnik: ansible
postati: Res
naloge:
- name: Namestite apache2
primerno:
ime: apache2
stanje: najnovejše
- name: Zaženite storitev apache2
storitev:
ime: apache2
stanje: začelo
omogočeno: Res

Tukaj sem dodal novo nalogo, Zaženite storitev apache2 .

ime: apache2 - storitev, na kateri delam, je apache2 .

stanje: začelo - storitev mora delovati.

omogočeno: Res - storitev je treba dodati ob zagonu sistema.

The država parameter sprejema druge vrednosti.

- ponovno naložen - Storitev mora znova naložiti konfiguracijske datoteke.
- ponovno zagnati - Storitev je treba znova zagnati.
- začelo - Storitev mora delovati. Če storitev ne deluje, zaženite storitev.
- ustavil - Storitev je treba ustaviti. Če storitev teče, jo ustavite.

Zaženite knjigo predvajanja apt2.yaml kot sledi:

$knjige za igranje ansible-playbook/apt2.yaml

Kot lahko vidite, je bila knjiga uspešno izvedena.

Kot lahko vidite, apache2 storitev deluje na mojih gostiteljih Debian 10.

Delo z modulom Ansible copy

The Ansible kopirati Modul se večinoma uporablja za kopiranje datotek iz računalnika na oddaljene gostitelje.

V prejšnjem razdelku sem na gostitelje Debian 10 namestil spletni strežnik Apache 2. Zdaj kopirajmo index.html datoteko v spletni koren gostiteljev Debian 10.

Najprej ustvarite nov imenik datoteke/ kot sledi:

$mkdir -vdatoteke

Ustvarite novo datoteko index.html v datoteke/ imenik na naslednji način:

$nanodatoteke/index.html

Vnesite naslednje vrstice v index.html mapa:


< html >
< glavo >
< naslov >Spletni strežnik podjetja Ansible</ naslov >
</ glavo >
< telo >
< h1 >Dobrodošli v LinuxHintu</ h1 >
< str >Ta spletni strežnik je bil uveden z Ansible.</ str >
</ telo >
</ html >

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Ustvarite novo knjigo predvajanja Ansible apt3.yaml kot sledi:

$nanoknjige z igrami/apt3.yaml

Vnesite naslednje vrstice v apt3.yaml mapa:

- gostitelji: debian10
uporabnik: ansible
postati: Res
naloge:
- name: Namestite apache2
primerno:
ime: apache2
stanje: najnovejše
- name: Kopirajte index.html na strežnik
kopirati:
src: ../datoteke/index.html
dest:/kje/www/html/index.html
način: 0644
lastnik: www-data
skupina: www-podatki
- name: Zaženite storitev apache2
storitev:
ime: apache2
stanje: začelo
omogočeno: Res

Evo, naloga Kopirajte index.html na strežnik kopira index.html Iz datoteke/ imenik v / var / www / html / imenik gostiteljev Debian 10.

src: ../files/index.html - Pot izvorne datoteke.
dest: /var/www/html/index.html - Pot do ciljne datoteke.
način: 0644 - Dovoljenja za uporabnika datoteke (6 - branje in pisanje), skupino (4 - branje) in druge (4 - branje).
lastnik: www-data - Lastnika datoteke nastavite na www-podatki .
skupina: www-podatki - Skupino datoteke nastavite na www-podatki .

Ko končate, shranite datoteko s pritiskom na + X sledi IN in .

Zaženite apt3.yaml knjigo iger na naslednji način:

$knjige za igranje ansible-playbook/apt3.yaml

Kot lahko vidite, naloga Kopirajte index.html na strežnik je uspešen.

Kot lahko vidite, index.html Datoteka je bila kopirana v gostitelje Debian 10.

Kot lahko vidite, spletni strežnik Debian 10 služi index.html stran, ki sem jo pravkar kopiral na gostitelje Debian 10.

Torej, to so osnove Ansibleja. Več o Ansibleu lahko preberete v uradni dokumentaciji Ansible. Hvala, ker ste prebrali ta članek.