Pradedančiųjų vadovėlis - „Ansible Playbooks“, kintamieji ir inventorius

Beginner S Tutorial Ansible Playbooks



Negalimos žaidimo knygos yra failai, kuriuose yra užduočių, kurios vykdomos siekiant sukonfigūruoti pagrindinius kompiuterius naudojant „Ansible“. Netinkamos žaidimo knygos parašytos YAML formatu. YAML yra labai paprastas failų formatas, kaip ir JSON. Tolesniame šio straipsnio skyriuje parodysiu, kaip atrodo „Ansible YAML“ vadovėliai.

„Ansible Inventory“ failai tvarko kompiuterių, kuriuos norite konfigūruoti ar tvarkyti naudodami „Ansible“, sąrašą. Taip pat galite grupuoti šiuos šeimininkus ir tvarkyti juos pagal grupes. Taip pat galite perduoti skirtingus kintamuosius kiekvienam prieglobai arba šeimininkų grupei.







Šiame straipsnyje aš parodysiu, kaip dirbti su „Ansible“ žaidimo knygomis, kintamaisiais, inventoriaus failais ir kai kuriais įprastais „Ansible“ moduliais su praktiniais pavyzdžiais. Taigi, pradėkime!



Būtinos sąlygos

Jei norite išbandyti šio straipsnio pavyzdžius,



1) Jūsų kompiuteryje turi būti įdiegta „Ansible“.
2) Turite turėti bent „Ubuntu“/„Debian“ pagrindinį kompiuterį ir „CentOS/RHEL 8“ pagrindinį kompiuterį, sukonfigūruotą „Ansible“ automatizavimui.





„LinuxHint“ yra daug straipsnių, skirtų „Ansible“ diegimui ir „Ansible“ automatizavimo kompiuterių konfigūravimui. Jei reikia daugiau informacijos, galite patikrinti šiuos straipsnius.

Projektų katalogo kūrimas

Pirmiausia sukurkite projekto katalogą ~/projektas/ su tokia komanda:

$mkdir -pv~/projektas/žaidimų knygas

Eikite į ~/projektas/ katalogą taip:

$CD~/projektas

Pagrindinis inventoriaus failas:

Sukurkite „Ansible“ inventoriaus failą šeimininkai projekto kataloge su šia komanda:

$nanošeimininkai

Naudodami „Ansible“, galite įvesti šeimininkų, kuriuos norite konfigūruoti/automatizuoti, IP adresus šeimininkai inventoriaus byla.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Baigę šį veiksmą, išsaugokite failą paspausdami + X po to IR ir .

Jei inventoriaus faile norite naudoti DNS pavadinimus, o ne IP adresus, taip pat galite tai padaryti.

Jei neturite veikiančio DNS serverio, galite naudoti /etc/hosts failą kompiuteryje, kad būtų galima išspręsti vietinį DNS.

Norėdami išspręsti vietinę DNS, atidarykite /etc/hosts failas su teksto redaktoriumi ( nano , mano atveju) taip:

$sudo nano /ir kt/šeimininkai

Įveskite IP adresus ir norimus DNS pavadinimus taip:

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

Baigę šį veiksmą, paspauskite + X po to IR ir .

Atidarykite „Ansible“ inventoriaus failą šeimininkai taip:

$nanošeimininkai

Dabar galite įvesti šeimininkų, kuriuos norite konfigūruoti/automatizuoti, DNS pavadinimus naudodami „Ansible“ šeimininkai inventoriaus byla.

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

Baigę išsaugokite pagrindinio kompiuterio inventoriaus failą paspausdami + X po to IR ir .

Tikrinamas prisijungimas prie visų kompiuterių

Dabar galite pabandyti pinginti visus inventoriaus failo šeimininkus taip:

$nepajėgus-išeimininkai visi-unepajėgus-m ping

Kaip matote, visi inventoriaus failo šeimininkai yra pasiekiami. Taigi, mes esame pasirengę pereiti prie kito šio straipsnio skyriaus.

Jūsų pirmoji nevartojama žaidimų knyga

Sukurkime paprastą „Ansible“ žaidimų knygą ping_all_hosts.yaml viduje konors žaidimo knygos/ katalogą. Šis veiksmas įtrauks visus prieglobą šeimininkai inventoriaus byla, kaip ir anksčiau.

$nanožaidimų knygas/ping_all_hosts.yaml

Įveskite šias eilutes ping_all_hosts.yaml Negalimas žaidimo knygos failas:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- vardas: Ping visi šeimininkai
ping:

Čia,

šeimininkai: visi - pasirenka visus kompiuterius iš inventoriaus bylos šeimininkai .
vartotojas: ansible - pasako „Ansible“ SSH į inventoriaus failo šeimininkus kaip nepajėgus Vartotojas.
užduotys - čia išvardytos visos užduotys, kurias „Ansible“ atliks pagrindiniuose kompiuteriuose. Kiekviena užduotis paprastai turi vardas ir vieną ar daugiau modulio parinkčių.

Žaidimų knyga ping_all_hosts.yaml turi tik vieną užduotį, pingindama visus inventoriaus failo kompiuterius šeimininkai . Užduoties pavadinimas yra Ping visus šeimininkus ir jis naudoja ping modulis.

The ping moduliui nereikia kitų parinkčių. Taigi, palikau tuščią (po storosios žarnos nieko nėra, : )

Baigę šį veiksmą, išsaugokite failą paspausdami + X po to IR ir .

Galite paleisti ping_all_hosts.yaml Negalima žaidimo knyga tokia:

$ansible-playbook-irengia knygas/ping_all_hosts.yaml

Kaip matote, ping užduotis yra sėkminga visuose inventoriaus failo kompiuteriuose.

Paprastas nesuderinamas konfigūracijos failas

Ankstesniame pavyzdyje turėjote naudoti -i galimybė pasakyti „Ansible“, kurį inventoriaus failą naudoti. Mano atveju tai yra šeimininkai inventoriaus byla.

$ansible-playbook-irengia knygas/ping_all_hosts.yaml

Jei nenorite perduoti inventoriaus failo su -i parinktį kiekvieną kartą, kai paleidžiate „Ansible“ vadovėlį, viskas, ką jums reikia padaryti, tai nustatyti numatytąjį savo projekto inventoriaus failą.

Norėdami tai padaryti, sukurkite naują „Ansible“ konfigūracijos failą ansible.cfg savo projekto šaknyje taip:

$nanoansible.cfg

Įveskite šias eilutes ansible.cfg failas:

[numatytuosius nustatymus]
inventorius =./šeimininkai

Baigę išsaugokite failą paspausdami + X po to IR ir .

Tą pačią „Ansible“ žaidimų knygą galite paleisti taip:

$ansible-playbook žaidimo knygos/ping_all_hosts.yaml

Kaip matote, žaidimų knygoje naudojama šeimininkai inventoriaus failą pagal numatytuosius nustatymus. Jūs vis dar galite naudoti -i jei norite, galite nurodyti kitą inventoriaus failą. Ansible yra labai lankstus.

Prieglobos grupavimas inventoriaus faile

Iki šiol aš jums parodžiau, kaip vykdyti užduočių rinkinį (žaidimų knygą) visuose inventoriaus failo kompiuteriuose. Bet ką daryti, jei norite vykdyti užduočių rinkinį viename priegloboje ir kitą užduočių rinkinį kituose kompiuteriuose? Galite sugrupuoti kompiuterius į inventoriaus failą ir atlikti įvairias užduotis prieglobos grupėse.

Šiame skyriuje aš jums parodysiu, kaip grupuoti kompiuterius inventoriaus faile ir kaip dirbti su prieglobos grupėmis.

Pirmiausia atidarykite inventoriaus failą šeimininkai taip:

$nanošeimininkai

Įveskite šias eilutes šeimininkai inventoriaus failas:

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

Čia aš sukūriau dvi prieglobos grupes: 10 ir centos8 .

Viduje konors 10 grupė, turiu du šeimininkus: vm1.nodekite.com ir vm2.nodekite.com

Viduje konors centos8 grupė, turiu du šeimininkus: vm3.nodekite.com ir vm4.nodekite.com

Baigę išsaugokite failą paspausdami + X po to IR ir .

Dabar sukursime naują žaidimo knygą ping_debian10_hosts.yaml , kuris įtrauks šeimininkus kaip ir anksčiau, bet tik šeimininkus 10 priimančioji grupė.

Sukurkite žaidimų knygą ping_debian10_hosts.yaml viduje konors žaidimo knygos/ katalogą taip:

$nanožaidimų knygas/ping_debian10_hosts.yaml

Įveskite šias eilutes ping_debian10_hosts.yaml Negalima žaidimo knyga:

- šeimininkai: debian10
vartotojas: ansible
užduotys:
- vardas: „Ping all Debian“10šeimininkai
ping:

Vietoj šeimininkai: visi , Pridėjau šeimininkai: debian10 čia. 10 yra priimančioji grupė. Ši žaidimo knyga bus vykdoma tik priegloboje 10 priimančioji grupė.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite žaidimų knygą taip:

$ansible-playbook žaidimo knygos/ping_debian10_hosts.yaml

Kaip matote, tik šeimininkai 10 priimančioji grupė yra prispausta.

Naudodamiesi tuo pačiu metodu, sukurkite kitą žaidimo knygą ping_centos8_hosts.yaml taip:

$nanožaidimų knygas/ping_centos8_hosts.yaml

Įveskite šias eilutes ping_centos8_hosts.yaml Negalima žaidimo knyga:

- šeimininkai: centos8
vartotojas: ansible
užduotys:
- pavadinimas: „Ping all CentOS“8šeimininkai
ping:

Panašiai pridėjau šeimininkai: centos8 čia. centos8 yra priimančioji grupė. Ši žaidimo knyga bus vykdoma tik priegloboje centos8 priimančioji grupė.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite žaidimų knygą taip:

$ansible-playbook žaidimo knygos/ping_centos8_hosts.yaml

Kaip matote, tik šeimininkai centos8 priimančioji grupė yra prispausta.

Neįmanomi kintamųjų tipai

„Ansible“ yra įvairių tipų kintamųjų. Pagrindiniai kintamųjų tipai yra Negalimi faktai kintamieji ir Vartotojo apibrėžti kintamieji .

Negalimi faktai kintamieji: Priklausomai nuo pagrindinio kompiuterio, su kuriuo „Ansible“ dirba, „Ansible“ sukuria „Ansible“ kintamuosius. „Ansible“ faktų kintamuosiuose yra informacijos apie pagrindinį kompiuterį, pvz., IP adresai, pagrindinio kompiuterio pavadinimas, domeno vardas, data, laikas, apvalkalo aplinkos kintamieji ir kt.

Vartotojo apibrėžti kintamieji: Tai yra vartotojo nustatyti kintamieji. Naudotojo nustatytus kintamuosius galite perduoti iš komandinės eilutės arba naudodami inventoriaus failą.

Dažniausiai vartotojo nustatyti kintamieji yra dviejų tipų: Grupuoti kintamuosius ir Priimančiosios kintamieji .

Neįmanoma kintama pirmenybė

Kintama „Ansible“ pirmenybė yra : Komandų eilutės kintamieji > Pagrindiniai kintamieji > Grupės kintamieji

Jei nustatysite tą patį kintamąjį kaip pagrindinio kompiuterio kintamasis ir grupės kintamasis, bus taikomas pagrindinio kompiuterio kintamasis.

Panašiai kintamieji, kuriuos nustatėte iš komandinės eilutės vykdydami žaidimų knygą, pakeis pagrindinį ir grupės kintamuosius.

Darbas su negalimų faktų kintamaisiais

Šiame skyriuje parodysiu, kaip dirbti su kintamaisiais „Ansible Facts“. Taigi, pradėkime!

Galite išvardyti visus savo prieglobos kintamuosius Ansible Facts šeimininkai inventoriaus byla tokia:

$visagalis-unepajėgus-msąranka

Kaip matote, visi „Ansible Facts“ kintamieji yra išvardyti JSON formatu. Tai labai ilgas sąrašas.

Kadangi sąrašas yra gana ilgas, galite jį atidaryti naudodami peidžerio programą, pvz mažiau taip:

$visagalis-unepajėgus-msąranka| mažiau

Dabar galite slinkti išvestį aukštyn, žemyn, kairėn ir dešinėn, jei reikia.

Taip pat galite ieškoti kintamųjų pavadinimų iš peidžerio. Norėdami tai padaryti, paspauskite / klavišą klaviatūroje. Tada įveskite paieškos eilutę ( pagrindinio kompiuterio vardas mano atveju) ir paspauskite .

Kaip matote, paieškos eilutę atitinkantis kintamasis „Ansible Facts“ yra ansible_hostname . Galite paspausti N eiti į kitas rungtynes ​​ir P norėdami pereiti į ankstesnes rungtynes ​​iš peidžerio. Taip rasite kintamąjį „Ansible Facts“, kurio jums reikia „Ansible“ projektui.

Dabar pažiūrėkime, kaip pasiekti ansible faktų kintamuosius.

Sukurkite naują žaidimo knygą print_variable1.yaml taip:

$nanožaidimų knygas/print_variable1.yaml

Įveskite šias eilutes print_variable1.yaml failas:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- pavadinimas: spausdintipagrindinio kompiuterio vardasvisų šeimininkų
derinimas:
žinutė:„{{ansible_hostname}}“

Čia aš pridėjau vieną užduotį Spausdinti visų kompiuterių pagrindinio kompiuterio pavadinimą . Ši užduotis naudoja „Ansible“ derinimas modulis, skirtas spausdinti pranešimą, kai vykdoma žaidimų knyga.

msg yra vienintelis reikalingas parametras derinimas modulis. The msg parametras priima eilutę kabutėse, tai yra pranešimas, kuris bus atspausdintas konsolėje.

Čia, {{kintamasis_vardas}} formatas naudojamas norint pasiekti kintamąjį. Tokiu atveju, {{ansible_hostname}} naudojamas spausdinti ansible_hostname kintamasis iš kiekvieno inventoriaus failo pagrindinio kompiuterio.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Taip pat galite pasiekti kintamąjį Ansible Facts kaip ansible_facts [kintamasis_vardas] . Taigi ansible_hostname kintamasis taps ansible_facts [pagrindinio kompiuterio pavadinimas] .

Galime perrašyti print_variable1.yaml žaidimo knyga taip pat. Mes gausime tą patį rezultatą.

- šeimininkai: visi
vartotojas: ansible
užduotys:
- pavadinimas: spausdintipagrindinio kompiuterio vardasvisų šeimininkų
derinimas:
žinutė:„{{ansible_facts ['variable_name']}}“

Paleiskite žaidimų knygą print_variable1.yaml taip:

$ansible-playbook žaidimo knygos/print_variable1.yaml

Kaip matote, kiekvieno inventoriaus failo pagrindinio kompiuterio pavadinimas yra spausdinamas konsolėje.

Dabar atspausdinkime numatytąjį kiekvieno kompiuterio IPv4 adresą kartu su pagrindinio kompiuterio pavadinimu. Kaip matote, numatytąjį pagrindinio kompiuterio IPv4 adresą galima pasiekti naudojant adresu nuosavybė ansible_default_ipv4 objektas.

Sukurkite naują žaidimo knygą print_variable2.yaml taip:

$nanožaidimų knygas/print_variable2.yaml

Įveskite šias eilutes print_variable2.yaml failas:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- pavadinimas: spausdintipagrindinio kompiuterio vardasvisų šeimininkų
derinimas:
žinutė:„{{ansible_hostname}} - {{ansible_default_ipv4.address}}“

Ši žaidimo knyga yra tokia pati kaip ir anksčiau. Vienintelis skirtumas yra naujas kintamasis {{ansible_default_ipv4.address}} viduje konors msg variantas derinimas modulis.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite print_variable2.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/print_variable2.yaml

Kaip matote, numatytasis IPv4 adresas ir prieglobos kompiuterio pavadinimas yra spausdinami konsolėje.

Taigi, taip dirbate su „Ansible Facts“ kintamaisiais.

Vartotojo nustatytų kintamųjų nustatymas iš komandinės eilutės:

Šiame skyriuje aš jums parodysiu, kaip nustatyti vartotojo nustatytus kintamuosius iš komandinės eilutės vykdant „Ansible playbooks“.

Pirmiausia sukurkite naują žaidimo knygą print_variable3.yaml taip:

$nanožaidimų knygas/print_variable3.yaml

Įveskite šias eilutes print_variable3.yaml failas:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- pavadinimas: spausdintikomandąlinijos kintamasis
derinimas:
žinutė:„Sveiki, {{username}}“

Čia aš naudojau derinimas modulį, kad išspausdintumėte pranešimą Sveiki, {{username}} . Vartotojo vardas yra kintamasis, kuris bus pakeistas paleidus žaidimo knygą.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite žaidimų knygą print_variable3.yaml taip:

$ansible-playbook-Ir 'username = Bob'žaidimų knygas/print_variable3.yaml

PASTABA: Čia, -Ir parinktis naudojama praeiti a Vartotojo vardas kintamasis su reikšme Bobas į žaidimų knygą print_variable3.yaml iš komandinės eilutės.

Kaip matote, pranešimas Sveiki, Bobai yra atspausdintas ant konsolės.

Dabar išsiaiškinkime, kaip perduoti kelis kintamuosius iš komandinės eilutės.

Sukurkite naują žaidimo knygą print_variable4.yaml taip:

$nanožaidimų knygas/print_variable4.yaml

Įveskite šias eilutes print_variable4.yaml failas:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- vardas: spausdinkite vartotojo apibrėžtus kintamuosius
derinimas:
žinutė:'username = {{username}} http_port = {{http_port}}'

Žaidimų knyga jums dabar turėtų būti labai pažįstama. Viskas, ką reikia padaryti, yra atspausdinti 2 kintamuosius Vartotojo vardas ir http_port ant konsolės.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Dabar galite praeiti Vartotojo vardas ir http_port kintamasis į žaidimo knygą, naudojant dvi skirtingas -Ir variantas toks:

$ ansible-playbook-Ir 'username = Bob' -Ir „http_port = 8080“
žaidimų knygas/print_variable4.yaml

Arba galite tiesiog atskirti kintamuosius tuščiu tarpu taip:

$ ansible-playbook-Ir 'username = Bob http_port = 8080'
žaidimų knygas/print_variable4.yaml

Kaip matote, Vartotojo vardas ir http_port kintamieji spausdinami konsolėje.

Darbas su vartotojo nustatytais grupės kintamaisiais

Tarkime, norite pridėti keletą kintamųjų prieglobos grupei. Šį veiksmą labai lengva atlikti „Ansible“.

Pirma, atidarykite savo šeimininkai inventoriaus byla tokia:

$nanošeimininkai

Įveskite šias eilutes šeimininkai inventoriaus failas:

[10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
vartotojo vardas = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
vartotojo vardas = Bobas
http_port =7878

Kaip matote, sukūriau naują skyrių [debian10: vars] dėl 10 prieglobos grupę ir pridėjo kintamuosius ( Vartotojo vardas ir http_port ) dėl 10 priimančioji grupė.

Lygiai taip pat sukūriau naują skyrių [centos8: vars] dėl centos8 prieglobos grupę ir pridėjo kintamuosius ( Vartotojo vardas ir http_port ) dėl centos8 priimančioji grupė.

Baigę išsaugokite šeimininkai inventoriaus failą paspausdami + X po to IR ir .

Paleiskite print_variable4.yaml žaidimo knygas taip:

$ansible-playbook žaidimo knygos/print_variable4.yaml

Kaip matote, teisingi kintamieji perduodami kiekvienam šeimininkui, atsižvelgiant į jų prieglobos grupę.

Darbas su vartotojo nustatytais pagrindinio kompiuterio kintamaisiais

Šiame skyriuje parodysiu, kaip inventoriaus faile nustatyti kintamuosius tam tikriems kompiuteriams.

Pirmiausia atidarykite šeimininkai inventoriaus byla tokia:

$nanošeimininkai

Norėdami pridėti kintamųjų prie konkretaus kompiuterio (tarkime, vm1.nodekite.com ), tiesiog pridėkite tarpą/skirtuką po pagrindinio kompiuterio IP/DNS pavadinimo ir įveskite savo kintamuosius, kaip parodyta žemiau esančioje ekrano kopijoje.

Taip pat galite pridėti kelis kintamuosius. Tiesiog atskirkite kiekvieną kintamąjį tarpeliu.

Baigę išsaugokite inventoriaus failą paspausdami + X po to IR ir .

Paleiskite print_variable4.yaml žaidimo knygas taip:

$ansible-playbook žaidimo knygos/print_variable4.yaml

Kaip matote, kintamieji nustatyti tik vm1.nodekite.com šeimininkas. Kiti šeimininkai turi jiems pritaikytus grupės kintamuosius.

Greitai sukurkite atsargų failus naudodami diapazonus

Galite naudoti diapazonus, kad greitai sukurtumėte „Ansible“ inventoriaus failus, jei jūsų pagrindinio kompiuterio IP adresai arba DNS pavadinimai yra nuoseklūs (t. Y. Turi tam tikrą formatą).

Ankstesniuose pavyzdžiuose aš naudoju šeimininkus vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com ir vm4.nodekite.com . Užuot rašęs 4 eilutes, galėjau tiesiog įvesti vm [1: 4] .nodekite.com inventoriaus byloje.

Norėdami eksperimentuoti su diapazonais, atidarykite šeimininkai inventoriaus byla tokia:

$nanošeimininkai

Pašalinkite visus kompiuterius ir kintamuosius iš inventoriaus failų.

Dabar galime pakeisti vm1.nodekite.com ir vm2.nodekite.com su vm [1: 2] .nodekite.com dėl 10 priimančią grupę taip.

Panašiai galime pakeisti vm3.nodekite.com ir vm4.nodekite.com su vm [3: 4] .nodekite.com dėl centos8 priimančioji grupė.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite ping_all_hosts.yaml taip:

$ansible-playbook žaidimo knygos/ping_all_hosts.yaml

Kaip matote, šeimininko diapazonas buvo išplėstas, kai aš vadovavau žaidimų knygai.

Kintamųjų saugojimas skirtinguose failuose

Išsaugoti grupės kintamuosius ir pagrindinius kintamuosius tame pačiame inventoriaus faile yra labai paprasta. Tačiau galbūt jūs ieškote daugiau lankstumo. Ypač tada, kai inventoriaus faile norite naudoti diapazonus, nes nebegalite nustatyti pagrindinio kompiuterio kintamųjų, jei naudojate diapazonus. Na, grupės kintamuosius ir prieglobos kintamuosius galite saugoti skirtinguose failuose. Šiame skyriuje aš jums parodysiu, kaip tai daroma.

Pagal numatytuosius nustatymus „Ansible“ grupėje ieško grupės kintamųjų group_vars / katalogo ir pagrindinio kompiuterio kintamieji host_vars / katalogą.

Taigi, sukurkite group_vars / ir host_vars / katalogą taip:

$mkdir -pv {šeimininkas, grupė}_kuris

Norėdami nustatyti grupės kintamuosius 10 pagrindinę grupę, sukurkite failą 10 (tas pats kaip grupės pavadinimas) group_vars / katalogą taip:

$nanogroup_vars/10

Įveskite savo kintamuosius taip:

vartotojo vardas: Lily
http://www.4343

Baigę išsaugokite failą paspausdami + X po to Y ir .

Tuo pačiu būdu nustatyti grupės kintamuosius centos8 pagrindinę grupę, sukurkite failą centos8 (tas pats kaip grupės pavadinimas) group_vars / katalogą taip:

$nanogroup_vars/centos8

Įveskite savo kintamuosius taip:

vartotojo vardas: Bobas
http://7878

Baigę išsaugokite failą paspausdami + X po to Y ir .

Paleiskite print_variable4.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/print_variable4.yaml

Kaip matote, kiekvienos prieglobos grupės grupės kintamieji yra teisingai nustatyti.

Norėdami nustatyti pagrindinio kompiuterio kintamuosius vm1.nodekite.com , sukurkite failą vm1.nodekite.com (tas pats kaip pagrindinio kompiuterio pavadinimas arba IP adresas) host_vars / katalogą taip:

$nanovm1.nodekite.com

Įveskite pagrindinio kompiuterio kintamuosius taip:

vartotojo vardas: Aleksas
http://www.7788

Baigę išsaugokite failą paspausdami + X po to Y ir .

Paleiskite print_variable4.yaml žaidimo knygą taip:

$ ansible-playbook žaidimo knygos/print_variable4.yaml
[

Kaip matote, pagrindinio kompiuterio kintamieji yra tinkamai nustatyti pagrindiniam kompiuteriui vm1.nodekite.com .

Darbas su kilpomis „Ansible“

Šiame skyriuje parodysiu, kaip naudoti kilpas „Ansible“.

Pirmiausia sukurkite naują žaidimo knygą kilpa1.yaml viduje konors žaidimo knygos/ katalogą taip:

$nanožaidimų knygas/kilpa1.yaml

Įveskite šias eilutes kilpa1.yaml žaidimo knyga:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- vardas: spausdinti vartotojų sąrašą
derinimas:
žinutė:„Vartotojas: {{item}}“
with_items:
- Aleksas
- Bobas
- Lelija

Čia aš turiu 1 užduotį, kuri spausdina vartotojų sąrašą naudojant ciklą.

Norėdami nustatyti užduoties iteracijos vertes, naudokite su_ elementais modulis. Tada pridėkite vertes po vieną.

with_items:
- Aleksas
- Bobas
- Lelija

Esamos iteracijos vertę galite pasiekti naudodami elementas kintamasis.

derinimas:
žinutė:„Vartotojas: {{item}}“

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite kilpa1.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/kilpa1.yaml

Kaip matote, ta pati užduotis buvo atlikta kiekvienam pagrindinio kompiuterio elementui. Taigi, kilpa veikia.

Darbas su sąlygomis „Ansible“

Jei norite vykdyti užduotis pagal tam tikras sąlygas, šis skyrius skirtas jums.

Norėdami vykdyti užduotis pagal būklę, galite naudoti kada „Ansible“ modulis. Pažvelkime į šio modulio pavyzdį. Pirmiausia sukurkite naują žaidimo knygą būklė1.yaml taip:

$nanožaidimų knygas/būklė1.yaml

Įveskite šias eilutes būklė1.yaml žaidimo knyga:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- vardas: vykdykite šią užduotį tik „Debian“
derinimas:
žinutė:„ši užduotis veikia„ Debian “
kada: ansible_facts['paskirstymas']=='Debian'

Čia,

ansible_facts ['distribucija'] == 'Debian' naudojamas patikrinti, ar paskirstymas yra Debian . Užduotis bus vykdoma tik tuo atveju, jei platinimas yra „Debian“.

The ansible_facts [‘distribucija’] yra naudojamas norint pasiekti kintamąjį Ansible Facts ansible_distribution . Taip pat galite patikrinti platinimo versiją naudodami ansible_distribution_major_version kintamasis.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite būklė1.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/būklė1.yaml

Kaip matote, užduotis buvo vykdoma tik „Debian“ kompiuteriuose. Užduotis nebuvo vykdoma „CentOS“ pagrindiniuose kompiuteriuose.

Taip pat galite patikrinti kelias sąlygas vienu metu ir vykdyti užduotį tik tuo atveju, jei visos sąlygos yra teisingos. Pažiūrėkime pavyzdį.

Sukurkite naują žaidimo knygą sąlyga2.yaml taip:

$nanožaidimų knygas/sąlyga2.yaml

Įveskite šias eilutes sąlyga2.yaml failas:

- šeimininkai: visi
vartotojas: ansible
užduotys:
- vardas: vykdykite šią užduotį tik „Debian“10
derinimas:
žinutė:„ši užduotis vykdoma„ Debian 10 “
kada: ansible_facts['paskirstymas']=='Debian'
ir ansible_facts['distribucijos_major_versija']==„10“

Čia užduotis bus vykdoma tik tuo atveju, jei platinimas yra „Debian“ ( ansible_facts ['distribucija'] == 'Debian' ), o versija yra 10 ( ansible_facts [’distribucijos_major_versija’] == ’10’ ). Jei abi sąlygos yra teisingos, užduotis bus vykdoma. Priešingu atveju užduotis nebus vykdoma.

Aš naudojau ir raktinį žodį, kad patikrintumėte, ar abi sąlygos čia yra teisingos. Jei norite patikrinti, ar kuri nors iš sąlygų yra teisinga, galite naudoti arba vietoj raktažodžio.

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite žaidimų knygą sąlyga2.yaml taip:

$ansible-playbook žaidimo knygos/sąlyga2.yaml

Kaip matote, užduotis buvo vykdoma tik „Debian 10“ pagrindiniuose kompiuteriuose.

Pakeiskime žaidimo knygą sąlyga2.yaml vykdyti užduotį tik „Debian 8“ pagrindiniuose kompiuteriuose, kaip nurodyta toliau.

Kaip matote, visi pagrindiniai kompiuteriai buvo praleisti, nes inventoriaus faile neturiu jokių „Debian 8“ kompiuterių.

Darbas su „Ansible apt“ moduliu

The tinkamas „Ansible“ modulis naudojamas įdiegti konkretų programinės įrangos paketą „Ubuntu“/„Debian“ kompiuteriuose. Pažiūrėkime, kaip naudoti šį modulį.

Pirmiausia sukurkite naują žaidimo knygą apt1.yaml viduje konors žaidimo knygos/ katalogą taip:

$nanožaidimų knygas/apt1.yaml

Įveskite šias eilutes apt1.yaml žaidimo knyga:

- šeimininkai: debian10
vartotojas: ansible
tapti: tiesa
užduotys:
- vardas: įdiekite apache2
tinka:
Pavadinimas: apache2
būsena: naujausia

The tinkamas moduliui reikia tik vardas paketo, kurį norite įdiegti/atnaujinti/pašalinti, ir būsena pakuotės.

Čia aš bandau įdiegti apache2 paketas ( Pavadinimas: apache2 ) mano „Debian 10“ kompiuteriuose. Kadangi bandau įdiegti paketą ir jį atnaujinti, jei yra nauja versija, būsena turėtų būti naujausias .

būsena taip pat priima šias parinktis:

- nėra - Paketas bus pašalintas, jei jau įdiegtas.
- naujausias - Jei bus atnaujinimas, paketas bus atnaujintas. Jei paketas dar neįdiegtas, jis bus įdiegtas.
- pateikti - Paketas bus įdiegtas, jei dar neįdiegtas. Tačiau paketas nebus atnaujintas, jei bus atnaujinimas.

Atkreipkite dėmesį, kad aš pridėjau tapti: tiesa žaidimų knygoje. Tai suteiks nepajėgus vartotojo sudo privilegijos keisti failų sistemos struktūrą (t. y. įdiegti/atnaujinti/pašalinti paketus). Be tapti: tiesa , tinkamas modulis negalės įdiegti apache2 paketas.

Baigę išsaugokite žaidimo knygą paspausdami + X po to IR ir .

Paleiskite apt1.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/apt1.yaml

Kaip matote, žaidimų knyga sėkmingai veikė „Debian 10“ pagrindiniuose kompiuteriuose.

Kaip matote, apache2 paketas įdiegtas mano „Debian 10“ pagrindiniuose kompiuteriuose.

Darbas su „Ansible dnf/yum“ moduliu

The dnf ir yum „Ansible“ modulis naudojamas konkrečiam programinės įrangos paketui įdiegti „CentOS“/RHEL kompiuteriuose. Šį modulį galite naudoti taip pat, kaip ir jūs tinkamas modulis ankstesniame šio straipsnio skyriuje.

Tiek dnf ir yum moduliai priima tuos pačius parametrus. Galite naudoti dnf modulis CentOS/RHEL 8 pagrindiniuose kompiuteriuose ir yum naudojant „CentOS/RHEL 7“ ar senesnę versiją.

Dabar pažvelkime į šio modulio pavyzdį.

Pirmiausia sukurkite naują žaidimo knygą dnf1.yaml viduje konors žaidimo knygos/ katalogą taip:

$nanožaidimų knygas/dnf1.yaml

Įveskite šias eilutes dnf1.yaml žaidimo knyga:

- šeimininkai: centos8
vartotojas: ansible
tapti: tiesa
užduotys:
- pavadinimas: Įdiekite httpd paketą
dnf:
vardas: httpd
būsena: naujausia

The dnf ir yum moduliui reikia tik vardas paketo, kurį norite įdiegti/atnaujinti/pašalinti, ir būsena pakuotės.

Čia aš bandau įdiegti httpd paketas ( vardas: httpd ) mano „CentOS 8“ pagrindiniuose kompiuteriuose. Bandydamas įdiegti paketą ir taip pat norėčiau jį atnaujinti, jei bus prieinama nauja versija būsena turėtų būti naujausias .

būsena priima šias parinktis:

- nėra - Paketas bus pašalintas, jei jau įdiegtas.
- naujausias - Jei bus atnaujinimas, paketas bus atnaujintas. Jei paketas dar neįdiegtas, jis bus įdiegtas.
- pateikti - Paketas bus įdiegtas, jei dar neįdiegtas. Tačiau paketas nebus atnaujintas, jei bus atnaujinimas.

Atkreipkite dėmesį, kad aš pridėjau tapti: tiesa žaidimų knygoje. Tai suteikia nepajėgus vartotojo sudo privilegijos keisti failų sistemos struktūrą (t. y. įdiegti/atnaujinti/pašalinti paketus). Be tapti: tiesa , tinkamas modulis negalės įdiegti httpd paketas.

Baigę išsaugokite žaidimo knygą paspausdami + X po to IR ir .

Paleiskite dnf1.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/dnf1.yaml

Kaip matote, žaidimų knyga sėkmingai veikė „CentOS 8“ pagrindiniame kompiuteryje.

Darbas su „Ansible“ paslaugų moduliu

The paslauga „Ansible“ modulis naudojamas paleisti, sustabdyti, paleisti iš naujo, įjungti (pridėti paslaugą prie paleisties) ir išjungti (pašalinti paslaugą iš paleidimo) jūsų kompiuteriuose.

Ankstesniuose skyriuose aš parodžiau, kaip įdiegti „Apache“ HTTP serverio paketą naudojant „Ansible“ tinkamas , dnf ir yum moduliai. Dabar įsitikinkime, kad „Apache“ HTTP serverio paslauga veikia ir yra pridėta prie sistemos paleidimo.

Aš dirbsiu su savo „Debian 10“ šeimininkais. Tačiau, jei norite, galite dirbti su „CentOS 8“ priegloba. Tiesiog atitinkamai pakoreguokite žaidimo knygą.

Pirmiausia sukurkite naują „Ansible“ žaidimo knygą apt2.yaml taip:

$nanožaidimų knygas/apt2.yaml

Įveskite šias eilutes apt2.yaml žaidimo knyga:

- šeimininkai: debian10
vartotojas: ansible
tapti: tiesa
užduotys:
- vardas: įdiekite apache2
tinka:
Pavadinimas: apache2
būsena: naujausia
- vardas: paleiskite „apache2“ paslaugą
paslauga:
Pavadinimas: apache2
būsena: pradėta
įjungta: tiesa

Čia aš pridėjau naują užduotį, Paleiskite „apache2“ paslaugą .

Pavadinimas: apache2 - Paslauga, prie kurios dirbu, yra apache2 .

būsena: pradėta - paslauga turi veikti.

įjungta: tiesa - paslauga turi būti pridėta prie sistemos paleidimo.

The būsena parametras priima kitas reikšmes.

- perkrauta - Paslauga turi iš naujo įkelti konfigūracijos failus.
- paleistas iš naujo - Paslauga turi būti paleista iš naujo.
- prasidėjo - Paslauga turi veikti. Jei paslauga neveikia, paleiskite paslaugą.
- sustojo - Paslauga turi būti sustabdyta. Jei paslauga veikia, sustabdykite paslaugą.

Paleiskite žaidimų knygą apt2.yaml taip:

$ansible-playbook žaidimo knygos/apt2.yaml

Kaip matote, žaidimo knyga buvo sėkmingai paleista.

Kaip matote, apache2 paslauga veikia mano „Debian 10“ pagrindiniuose kompiuteriuose.

Darbas su „Ansible“ kopijų moduliu

Negalima kopija Modulis dažniausiai naudojamas failams kopijuoti iš kompiuterio į nuotolinius kompiuterius.

Ankstesniame skyriuje įdiegiau „Apache 2“ žiniatinklio serverį „Debian 10“ pagrindiniuose kompiuteriuose. Dabar nukopijuokime an index.html failą į „Debian 10“ kompiuterių žiniatinklio šaknį.

Pirmiausia sukurkite naują katalogą failai/ taip:

$mkdir -vfailus

Sukurkite naują failą index.html viduje konors failai/ katalogą taip:

$nanofailus/index.html

Įveskite šias eilutes index.html failas:


< html >
< galva >
< titulas >„Ansible“ žiniatinklio serveris</ titulas >
</ galva >
< kūnas >
< h1 >Sveiki atvykę į „LinuxHint“</ h1 >
< p >Šis žiniatinklio serveris buvo įdiegtas su „Ansible“.</ p >
</ kūnas >
</ html >

Baigę išsaugokite failą paspausdami + X po to IR ir .

Sukurkite naują „Ansible“ žaidimo knygą apt3.yaml taip:

$nanožaidimų knygas/apt3.yaml

Įveskite šias eilutes apt3.yaml failas:

- šeimininkai: debian10
vartotojas: ansible
tapti: tiesa
užduotys:
- vardas: įdiekite apache2
tinka:
Pavadinimas: apache2
būsena: naujausia
- vardas: nukopijuokite index.html į serverį
kopija:
src: ../failus/index.html
dest:/kur/www/html/index.html
režimas: 0644
savininkas: www-data
grupė: www-data
- vardas: paleiskite „apache2“ paslaugą
paslauga:
Pavadinimas: apache2
būsena: pradėta
įjungta: tiesa

Čia, užduotis Nukopijuokite index.html į serverį kopijuoja index.html nuo failai/ katalogą į / var / www / html / „Debian 10“ kompiuterių katalogą.

src: ../files/index.html - Šaltinio failo kelias.
dest: /var/www/html/index.html - Paskirties failo kelias.
režimas: 0644 - Failo vartotojo (6 - skaityti ir rašyti), grupės (4 - skaityti) ir kitų (4 - skaityti) leidimai.
savininkas: www-data - Nustatykite failo savininką www-duomenys .
grupė: www-data - Nustatykite failo grupę į www-duomenys .

Baigę išsaugokite failą paspausdami + X po to IR ir .

Paleiskite apt3.yaml žaidimo knygą taip:

$ansible-playbook žaidimo knygos/apt3.yaml

Kaip matote, užduotis Nukopijuokite index.html į serverį yra sėkmingas.

Kaip matote, index.html failas buvo nukopijuotas į „Debian 10“ pagrindinius kompiuterius.

Kaip matote, „Debian 10“ žiniatinklio serveris aptarnauja index.html puslapį, kurį ką tik nukopijavau į „Debian 10“ pagrindinius kompiuterius.

Taigi, tai yra „Ansible“ pagrindai. Daugiau apie „Ansible“ galite sužinoti perskaitę oficialius „Ansible“ dokumentus. Dėkojame, kad perskaitėte šį straipsnį.