Ansible Inventory failid peavad nimekirja hostidest, mida soovite Ansible abil konfigureerida või hallata. Saate need hostid rühmitada ja hallata ka rühmade kaupa. Samuti saate edastada erinevaid muutujaid iga hosti või hostide rühma kohta.
Selles artiklis näitan teile, kuidas töötada Ansible mänguraamatute, muutujate, varude failide ja mõnede tavaliste Ansible moodulitega koos praktiliste näidetega. Niisiis, alustame!
Eeldused
Kui soovite proovida selle artikli näiteid,
1) Teie arvutisse peab olema installitud Ansible.
2) Teil peab olema vähemalt Ubuntu/Debiani hosti ja CentOS/RHEL 8 hosti konfigureeritud Ansible automaatika jaoks.
LinuxHintis on palju artikleid, mis on pühendatud Ansible installimisele ja Ansible automaatika hostide seadistamisele. Vajadusel saate lisateabe saamiseks neid artikleid vaadata.
Projekti kataloogi loomine
Esiteks looge projekti kataloog ~/projekt/ järgmise käsuga:
$mkdir -lk~/projekti/mänguraamatudLiikuge lehele ~/projekt/ kataloogi järgmiselt:
$CD~/projektiInventuuri põhifail:
Looge ansible varude fail võõrustajad projekti kataloogis järgmise käsuga:
$nanovõõrustajadSaate sisestada nende hostide IP -aadressid, mida soovite konfigureerida/automatiseerida, kasutades jaotises Ansible võõrustajad inventuuri fail.
192.168.20.167192.168.20.168
192.168.20.169
192.168.20.170
Kui olete selle sammuga lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Kui soovite inventuurifailis IP -aadresside asemel kasutada DNS -nimesid, saate seda ka teha.
Kui teil pole toimivat DNS -serverit, võite kasutada /etc/hosts fail arvutisse kohaliku DNS -i lahendamiseks.
Kohaliku DNS -i lahendamiseks avage /etc/hosts faili tekstiredaktoriga ( nano , minu puhul) järgmiselt:
$sudo nano /jne/võõrustajadSisestage IP -aadressid ja soovitud DNS -nimed järgmiselt.
192.168.20.167 vm1.nodekite.com192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com
Kui olete selle sammuga lõpetanud, vajutage + X millele järgnes JA ja .
Avage ansible varude fail võõrustajad järgnevalt:
$nanovõõrustajadNüüd saate kausta Ansible abil sisestada nende hostide DNS -nimed, mida soovite konfigureerida/automatiseerida võõrustajad inventuuri fail.
vm1.nodekite.comvm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com
Kui olete lõpetanud, salvestage hostide inventuurifail, vajutades + X millele järgnes JA ja .
Kõigi hostidega ühenduvuse testimine
Nüüd võite proovida pingida kõiki inventuurifaili hoste järgmiselt.
$võimatu-minavõõrustab kõiki-uvõimatu-m pingNagu näete, on kõik inventuurifaili hostid kättesaadavad. Niisiis, oleme valmis liikuma edasi selle artikli järgmise jao juurde.
Teie esimene söödav mänguraamat
Loome lihtsa Ansible mänguraamatu ping_all_hosts.yaml aastal mänguraamatud/ kataloogi. See toiming pingutab kõiki kaustas olevaid hoste võõrustajad inventuurifail, nagu varemgi.
$nanomänguraamatud/ping_all_hosts.yamlSisestage lahtrisse järgmised read ping_all_hosts.yaml Lubamatu mänguraamatu fail:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: pingige kõik hostid
ping:
Siin,
võõrustajad: kõik - valib inventuurifailist kõik masinad võõrustajad .
kasutaja: ansible - ütleb Ansible SSH -le inventuurifaili hostidesse kui võimatu kasutaja.
ülesandeid - siin on loetletud kõik ülesanded, mida Ansible hostides täidab. Igal ülesandel on tavaliselt a nimi ja üks või mitu moodulipõhist valikut.
Mänguraamat ping_all_hosts.yaml on ainult üks ülesanne, mis pingutab kõiki inventuurifaili masinaid võõrustajad . Ülesande nimi on Ping kõik hostid ja see kasutab ping moodul.
The ping moodul ei vaja muid võimalusi. Jätsin selle tühjaks (käärsoole järel pole midagi, : )
Kui olete selle sammuga lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Võite käivitada ping_all_hosts.yaml Söödav mänguraamat järgmiselt:
$ansible-playbook-minakorraldab mänguraamatuid/ping_all_hosts.yamlNagu näete, on ping -ülesanne edukas kõigis inventuurifaili hostides.
Lihtne mittesobiv konfiguratsioonifail
Varasemas näites pidite kasutama -mina võimalus öelda Ansiblele, millist varude faili kasutada. Minu puhul on see võõrustajad inventuuri fail.
$ansible-playbook-minakorraldab mänguraamatuid/ping_all_hosts.yamlKui te ei soovi varude faili koos -mina suvandit iga kord, kui käivitate Ansible mänguraamatu, peate vaid määrama oma projektile inventuuri vaikefaili.
Selleks looge uus Ansible konfiguratsioonifail ansible.cfg oma projekti juurest järgmiselt:
$nanoansible.cfgSisestage lahtrisse järgmised read ansible.cfg fail:
[vaikimisi]inventuur =./võõrustajad
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Saate käivitada sama Ansible mänguraamatu järgmiselt.
$ansible-playbook mänguraamatud/ping_all_hosts.yamlNagu näete, kasutab mänguraamat võõrustajad varude fail vaikimisi. Võite endiselt kasutada -mina soovi korral võimalus määrata teistsugune varude fail. Ansible on väga paindlik.
Hostide rühmitamine varude failis
Siiani olen näidanud teile, kuidas käivitada ülesannete komplekti (mänguraamat) kõigis inventuurifaili hostides. Aga mis siis, kui soovite mõnes hostis käivitada ülesannete komplekti ja teistes hostides teise ülesannete komplekti? Saate rühmitada hostid inventuurifaili ja käivitada hostirühmades erinevaid ülesandeid.
Selles jaotises näitan teile, kuidas rühmitada inventuurifailis hoste ja kuidas hostigruppidega töötada.
Esiteks avage varude fail võõrustajad järgnevalt:
$nanovõõrustajadSisestage lahtrisse järgmised read võõrustajad inventuuri fail:
[debian10]vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com
Siin olen loonud kaks hostigruppi: debian10 ja centos8 .
Aastal debian10 rühmas on mul kaks peremeest: vm1.nodekite.com ja vm2.nodekite.com
Aastal centos8 rühmas on mul kaks peremeest: vm3.nodekite.com ja vm4.nodekite.com
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Nüüd loome uue mänguraamatu ping_debian10_hosts.yaml , mis pingitab hostid nagu varem, kuid ainult hostid debian10 võõrustajarühm.
Loo mänguraamat ping_debian10_hosts.yaml aastal mänguraamatud/ kataloogi järgmiselt:
$nanomänguraamatud/ping_debian10_hosts.yamlSisestage lahtrisse järgmised read ping_debian10_hosts.yaml Söödav mänguraamat:
- võõrustajad: debian10kasutaja: ansible
ülesanded:
- nimi: ping kõik Debian10võõrustajad
ping:
Selle asemel võõrustajad: kõik , Olen lisanud hosts: debian10 siin. debian10 on võõrustajarühm. Seda mänguraamatut käitatakse ainult hostides debian10 võõrustajarühm.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage mänguraamat järgmiselt.
$ansible-playbook mänguraamatud/ping_debian10_hosts.yamlNagu näete, on ainult hostid debian10 vastuvõtva grupi pinged.
Looge sama meetodit kasutades teine mänguraamat ping_centos8_hosts.yaml järgnevalt:
$nanomänguraamatud/ping_centos8_hosts.yamlSisestage lahtrisse järgmised read ping_centos8_hosts.yaml Söödav mänguraamat:
- võõrustajad: centos8kasutaja: ansible
ülesanded:
- nimi: Ping all CentOS8võõrustajad
ping:
Samamoodi, olen lisanud võõrustajad: centos8 siin. centos8 on võõrustajarühm. Seda mänguraamatut käitatakse ainult hostides centos8 võõrustajarühm.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage mänguraamat järgmiselt.
$ansible-playbook mänguraamatud/ping_centos8_hosts.yamlNagu näete, on ainult hostid centos8 vastuvõtva grupi pinged.
Võimalikud muutujatüübid
Ansible'is on erinevat tüüpi muutujaid. Peamised muutujatüübid on Ansible Facts muutujad ja Kasutaja määratud muutujad .
Muutumatute faktide muutujad: Sõltuvalt hostist, millega Ansible töötab, genereerib Ansible muutujate Ansible Facts. Muutumatute faktide muutujad sisaldavad teavet hosti kohta, näiteks IP -aadressid, hostinimi, domeeninimi, kuupäev, kellaaeg, kesta keskkonnamuutujad ja palju muud.
Kasutaja määratud muutujad: Need on kasutaja määratletud kohandatud muutujad. Saate kasutaja määratud muutujaid edastada käsurealt või inventarifaili abil.
Peamiselt kasutaja määratud muutujaid on kahte tüüpi: Muutujate rühmitamine ja Host muutujad .
Võimalik muutuv eelistus
Ansible muutuv prioriteet on : Käsurea muutujad > Host muutujad > Grupi muutujad
Kui määrate hostimuutuja ja grupimuutujaga sama muutuja, rakendatakse hostimuutuja.
Samamoodi asendavad muutujad, mille määrate käsurealt mänguraamatu töötamise ajal, nii hosti kui ka grupi muutujad.
Töötamine muutumatute faktide muutujatega
Selles jaotises näitan teile, kuidas töötada muutumatute faktide muutujatega. Niisiis, alustame!
Võite loetleda kõik oma hostide muutumatute faktide muutuja võõrustajad inventuurifail järgmiselt:
$kõlbmatu kõik-uvõimatu-mseadistamineNagu näete, on kõik ansible Facts muutujad loetletud JSON -vormingus. See on väga pikk nimekiri.
Kuna nimekiri on üsna pikk, võite selle avada piipariprogrammiga, näiteks vähem järgnevalt:
$kõlbmatu kõik-uvõimatu-mseadistamine| vähemNüüd saate vastavalt vajadusele kerida väljundit üles, alla, vasakule ja paremale.
Muutujate nimesid saate otsida ka piiparist. Selleks vajutage nuppu / klahvi klaviatuuril. Seejärel tippige otsingustring ( hostinimi minu puhul) ja vajutage .
Nagu näete, on otsingustringile vastav muutuja Ansible Facts ansible_hostname . Võite vajutada N järgmisele matšile minekuks ja P piiparilt eelmisele mängule liikumiseks. Nii leiate muutuja Ansible Facts, mida vajate oma Ansible projekti jaoks.
Vaatame nüüd, kuidas pääseda juurde muutumatute faktide muutujatele.
Looge uus mänguraamat print_variable1.yaml järgnevalt:
$nanomänguraamatud/print_variable1.yamlSisestage lahtrisse järgmised read print_variable1.yaml fail:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: trükkhostinimikõigist võõrustajatest
silumine:
sõnum:„{{ansible_hostname}}”
Siin olen lisanud ühe ülesande Prindi kõigi hostide hostinimi . See ülesanne kasutab ansible silumine moodul sõnumite printimiseks, kui mänguraamat töötab.
sõnum on ainus nõutav parameeter silumine moodul. The sõnum parameeter aktsepteerib stringi jutumärkides, mis on sõnum, mis trükitakse konsoolile.
Siin, {{muutuja_nimi}} vormingut kasutatakse muutujale juurdepääsemiseks. Sel juhul, {{ansible_hostname}} kasutatakse printimiseks ansible_hostname varude faili iga hosti muutuja.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Samuti pääsete juurde muutujale Ansible Facts kui ansible_facts [muutuja_nimi] . Seega ansible_hostname muutuja muutub ansible_facts [hostinimi] .
Võime selle uuesti kirjutada print_variable1.yaml ka sellist mänguraamatut. Saame sama väljundi.
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: trükkhostinimikõigist võõrustajatest
silumine:
sõnum:'{{ansible_facts [' variable_name ']}}'
Käivitage mänguraamat print_variable1.yaml järgnevalt:
$ansible-playbook mänguraamatud/print_variable1.yamlNagu näete, trükitakse konsoolile iga varude failis oleva hosti hostinimi.
Prindime nüüd iga hosti IPv4 vaike -aadressi koos hosti nimega. Nagu näete, pääseb hosti vaikimisi IPv4 -aadressile, kasutades aadress vara ansible_default_ipv4 objekti.
Looge uus mänguraamat print_variable2.yaml järgnevalt:
$nanomänguraamatud/print_variable2.yamlSisestage lahtrisse järgmised read print_variable2.yaml fail:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: trükkhostinimikõigist võõrustajatest
silumine:
sõnum:„{{ansible_hostname}} - {{ansible_default_ipv4.address}}”
See mänguraamat on sama, mis varem. Ainus erinevus on uus muutuja {{ansible_default_ipv4.address}} aastal sõnum võimalus silumine moodul.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage print_variable2.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/print_variable2.yamlNagu näete, trükitakse konsoolile IPv4 vaike -aadress ja hostide hostinimi.
Niisiis, see on see, kuidas te töötate muutuvate muutujatega.
Kasutaja määratud muutujate seadistamine käsurealt:
Selles jaotises näitan teile, kuidas Ansible playbooksi käitamise ajal käsurealt kasutaja määratud muutujaid määrata.
Esiteks looge uus mänguraamat print_variable3.yaml järgnevalt:
$nanomänguraamatud/print_variable3.yamlSisestage lahtrisse järgmised read print_variable3.yaml fail:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: trükkkäskrea muutuja
silumine:
sõnum:'Tere tulemast {{kasutajanimi}}'
Siin olen kasutanud silumine moodul sõnumi printimiseks Tere tulemast {{kasutajanimi}} . kasutajanimi on muutuja, mis asendatakse mänguraamatu käivitamisel.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage mänguraamat print_variable3.yaml järgnevalt:
$ansible-playbook-Ja 'kasutajanimi = Bob'mänguraamatud/print_variable3.yamlMÄRGE: Siin, -Ja võimalust kasutatakse a läbimiseks kasutajanimi muutuja väärtusega Bob mänguraamatu juurde print_variable3.yaml käsurealt.
Nagu näete, on sõnum Tere tulemast Bob on trükitud konsoolile.
Avastame nüüd, kuidas käsurealt mitu muutujat edastada.
Looge uus mänguraamat print_variable4.yaml järgnevalt:
$nanomänguraamatud/print_variable4.yamlSisestage lahtrisse järgmised read print_variable4.yaml fail:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: prindib kasutaja määratud muutujad
silumine:
sõnum:'kasutajanimi = {{kasutajanimi}} http_port = {{http_port}}'
Mänguraamat peaks teile praegu väga tuttav olema. Kõik, mida ta teeb, on kahe muutuja printimine kasutajanimi ja http_port konsoolil.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Nüüd võite läbida kasutajanimi ja http_port muutuvaks mänguraamatusse, kasutades kahte erinevat -Ja valik järgmiselt:
$ ansible-playbook-Ja 'kasutajanimi = Bob' -Ja 'http_port = 8080'mänguraamatud/print_variable4.yaml
Või võite lihtsalt eraldada muutujad tühikuga järgmiselt.
$ ansible-playbook-Ja 'kasutajanimi = Bob http_port = 8080'mänguraamatud/print_variable4.yaml
Nagu näete, kasutajanimi ja http_port muutujad trükitakse konsoolile.
Töötamine kasutaja määratud rühmamuutujatega
Oletame, et soovite hostigruppi lisada mõningaid muutujaid. Seda toimingut on Ansible'is väga lihtne teha.
Esiteks avage oma võõrustajad inventuurifail järgmiselt:
$nanovõõrustajadSisestage oma ridadesse järgmised read võõrustajad inventuuri fail:
[debian10]vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
kasutajanimi = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
kasutajanimi = Bob
http_port =7878
Nagu näete, olen loonud uue jaotise [debian10: vars] eest debian10 hostigruppi ja lisas muutujad ( kasutajanimi ja http_port ) eest debian10 võõrustajagrupp seal.
Samamoodi olen loonud uue jaotise [centos8: vars] eest centos8 hostigruppi ja lisas muutujad ( kasutajanimi ja http_port ) eest centos8 võõrustajagrupp seal.
Kui olete lõpetanud, salvestage võõrustajad inventuuri faili vajutades + X millele järgnes JA ja .
Käivitage print_variable4.yaml mänguraamatud järgmiselt:
$ansible-playbook mänguraamatud/print_variable4.yamlNagu näete, edastatakse igale hostile õiged muutujad sõltuvalt nende hostigrupist.
Töötamine kasutaja määratud hostimuutujatega
Selles jaotises näitan teile, kuidas varude failis muutujaid konkreetsetele masinatele määrata.
Esiteks avage võõrustajad inventuurifail järgmiselt:
$nanovõõrustajadMuutujate lisamiseks konkreetsele hostile (nt vm1.nodekite.com ), lisage lihtsalt hosti IP/DNS -i nime vahele tühik/vaheleht ja sisestage oma muutujad, nagu on näidatud alloleval ekraanipildil.
Samuti saate lisada mitu muutujat. Eraldage lihtsalt kõik muutujad tühikuga.
Kui olete lõpetanud, salvestage varude fail, vajutades + X millele järgnes JA ja .
Käivitage print_variable4.yaml mänguraamatud järgmiselt:
$ansible-playbook mänguraamatud/print_variable4.yamlNagu näete, on muutujad määratud ainult vm1.nodekite.com võõrustaja. Teistel hostidel on neile rakendatud rühmamuutujad.
Varude kiire loomine vahemike abil
Kui teie hosti IP -aadressid või DNS -i nimed on järjepidevad (st neil on kindel vorming), võite kasutada vahemikke, et kiiresti genereerida Ansible varude faile.
Varasemates näidetes olen kasutanud hostisid vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com ja vm4.nodekite.com . Nelja rea sisestamise asemel oleksin võinud lihtsalt kirjutada vm [1: 4] .nodekite.com inventuuri failis.
Vahemikega katsetamiseks avage võõrustajad inventuurifail järgmiselt:
$nanovõõrustajadEemaldage varude failidest kõik hostid ja muutujad.
Nüüd võime asendada vm1.nodekite.com ja vm2.nodekite.com koos vm [1: 2] .nodekite.com eest debian10 vastuvõtva rühma järgmiselt.
Samamoodi saame asendada vm3.nodekite.com ja vm4.nodekite.com koos vm [3: 4] .nodekite.com eest centos8 võõrustajarühm.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage ping_all_hosts.yaml järgnevalt:
$ansible-playbook mänguraamatud/ping_all_hosts.yamlNagu näete, laiendati saateraamatuid, kui juhtisin mänguraamatut.
Muutujate salvestamine erinevatesse failidesse
Rühmamuutujate ja hostimuutujate salvestamine samasse varude faili on väga lihtne. Kuid võite otsida rohkem paindlikkust. Eriti siis, kui soovite oma varude failis kasutada vahemikke, kuna te ei saa vahemike kasutamisel enam hosti muutujaid määrata. Noh, võite salvestada rühmamuutujaid ja hostimuutujaid erinevatesse failidesse. Selles osas näitan teile, kuidas see on tehtud.
Vaikimisi otsib Ansible grupist muutujaid group_vars / kataloogi ja hosti muutujad host_vars / kataloogi.
Niisiis, looge group_vars / ja host_vars / kataloogi järgmiselt:
$mkdir -lk {peremees, rühm}_ kelleGrupi muutujate määramiseks debian10 hostigrupp, looge fail debian10 (sama kui grupi nimi) group_vars / kataloogi järgmiselt:
$nanogroup_vars/debian10Sisestage oma muutujad järgmiselt.
kasutajanimi: Lilyhttp://port: 4343
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnevad Y ja .
Samamoodi saate grupi muutujate jaoks määrata centos8 hostigrupp, looge fail centos8 (sama kui grupi nimi) group_vars / kataloogi järgmiselt:
$nanogroup_vars/centos8Sisestage oma muutujad järgmiselt.
kasutajanimi: Bobhttp://port: 7878
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnevad Y ja .
Käivitage print_variable4.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/print_variable4.yamlNagu näete, on rühmamuutujad igale hostigrupile õigesti seatud.
Hosti muutujate määramine hostile vm1.nodekite.com , looge fail vm1.nodekite.com (sama mis hosti nimi või IP -aadress) host_vars / kataloogi järgmiselt:
$nanovm1.nodekite.comSisestage oma hostimuutujad järgmiselt.
kasutajanimi: Alexhttp_port: 7788
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnevad Y ja .
Käivitage print_variable4.yaml mänguraamat järgmiselt:
$ ansible-playbook mänguraamatud/print_variable4.yaml[
Nagu näete, on hosti muutujad hosti jaoks õigesti seadistatud vm1.nodekite.com .
Loops in Ansible töötamine
Selles jaotises näitan teile, kuidas kasutada silmuseid Ansible'is.
Esiteks looge uus mänguraamat loop1.yaml aastal mänguraamatud/ kataloogi järgmiselt:
$nanomänguraamatud/loop1.yamlSisestage lahtrisse järgmised read loop1.yaml mänguraamat:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: printige kasutajate loend
silumine:
sõnum:„Kasutaja: {{item}}”
koos_üksustega:
- Alex
- Bob
- Lily
Siin on mul 1 ülesanne, mis prindib silmuste abil kasutajate loendi.
Ülesande iteratsiooniväärtuste määramiseks kasutage koos_üksustega moodul. Seejärel lisage ükshaaval väärtused.
koos_üksustega:- Alex
- Bob
- Lily
Praeguse iteratsiooni väärtusele pääsete juurde, kasutades kirje muutuja.
silumine:sõnum:„Kasutaja: {{item}}”
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage loop1.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/loop1.yamlNagu näete, käivitati iga hosti iga üksuse jaoks sama ülesanne. Niisiis, silmus töötab.
Tingimustega töötamine ansible'is
Kui soovite teatud tingimustel ülesandeid täita, on see jaotis teie jaoks.
Tingimustel põhinevate ülesannete käivitamiseks võite kasutada millal Ansible moodul. Vaatame selle mooduli näidet. Esiteks looge uus mänguraamat tingimus1.yaml järgnevalt:
$nanomänguraamatud/tingimus1.yamlSisestage lahtrisse järgmised read tingimus1.yaml mänguraamat:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: käivitage see ülesanne ainult Debianis
silumine:
sõnum:'see ülesanne töötab Debianis'
kui: ansible_facts['levitamine']=='Debian'
Siin,
ansible_facts [’distributsioon’] == ‘Debian’ kasutatakse kontrollimaks, kas levitamine on Debian . Ülesanne käivitub ainult siis, kui levitamine on Debian.
The ansible_facts [’jaotus’] kasutatakse juurdepääsuks muutujale Ansible Facts ansible_distribution . Samuti saate jaotise versiooni kontrollida, kasutades ansible_distribution_major_version muutuja.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage tingimus1.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/tingimus1.yamlNagu näete, toimis ülesanne ainult Debiani hostidel. Ülesanne ei töötanud CentOS -i hostidel.
Samuti saate kontrollida mitut tingimust korraga ja käivitada ülesande ainult siis, kui kõik tingimused on tõesed. Vaatame näidet.
Looge uus mänguraamat tingimus2.yaml järgnevalt:
$nanomänguraamatud/tingimus2.yamlSisestage lahtrisse järgmised read tingimus2.yaml fail:
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: käivitage see ülesanne ainult Debianis10
silumine:
sõnum:'see ülesanne töötab Debian 10 -s'
kui: ansible_facts['levitamine']=='Debian'
ja ansible_facts['jaotus_major_versioon']=='10'
Siin töötab ülesanne ainult siis, kui levitamine on Debian ( ansible_facts [’distributsioon’] == ‘Debian’ ) ja versioon on 10 ( ansible_facts [’distribution_major_version’] == ’10’ ). Kui mõlemad tingimused on tõesed, käivitatakse ülesanne. Vastasel juhul ülesanne ei tööta.
Olen kasutanud ja märksõna, et kontrollida, kas mõlemad tingimused on siin tõesed. Kui soovite kontrollida, kas mõni tingimus on tõene, võite kasutada või märksõna asemel.
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage mänguraamat tingimus2.yaml järgnevalt:
$ansible-playbook mänguraamatud/tingimus2.yamlNagu näete, toimis ülesanne ainult Debian 10 hostidel.
Muudame mänguraamatut tingimus2.yaml ülesande täitmiseks ainult Debian 8 hostidel järgmiselt.
Nagu näete, jäeti kõik hostid vahele, kuna mul pole inventuuri failis ühtegi Debian 8 hosti.
Ansible apt mooduliga töötamine
The asjakohane Ansible moodulit kasutatakse konkreetse tarkvarapaketi installimiseks Ubuntu/Debiani hostidesse. Vaatame, kuidas seda moodulit kasutada.
Esiteks looge uus mänguraamat apt1.yaml aastal mänguraamatud/ kataloogi järgmiselt:
$nanomänguraamatud/apt1.yamlSisestage lahtrisse järgmised read apt1.yaml mänguraamat:
- võõrustajad: debian10kasutaja: ansible
muutuma: Tõsi
ülesanded:
- nimi: installige apache2
asjakohane:
nimi: apache2
riik: viimane
The asjakohane moodul nõuab ainult nimi pakett, mida soovite installida/uuendada/eemaldada ja osariik pakendist.
Siin proovin installida apache2 pakett ( nimi: apache2 ) minu Debian 10 hostides. Kuna proovin paketti installida ja seda ka uuendada, kui uus versioon on saadaval, osariik peaks olema hiljemalt .
osariik aktsepteerib ka järgmisi valikuid:
- puudub - Pakett eemaldatakse, kui see on juba installitud.
- hiljemalt - Kui värskendus on saadaval, uuendatakse paketti. Kui pakett pole veel installitud, installitakse see.
- kohal - Pakett installitakse, kui seda pole juba installitud. Kuid paketti ei uuendata, kui värskendus on saadaval.
Pange tähele, et olen lisanud muutuma: Tõsi mänguraamatus. See annab võimatu kasutaja sudo privileegid failisüsteemi struktuuri muutmiseks (st pakettide installimiseks/täiendamiseks/eemaldamiseks). Ilma muutuma: Tõsi , asjakohane moodulit ei saa installida apache2 pakett.
Kui olete lõpetanud, salvestage mänguraamat, vajutades + X millele järgnes JA ja .
Käivitage apt1.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/apt1.yamlNagu näete, käivitati mänguraamat Debian 10 hostide peal edukalt.
Nagu näete, apache2 pakett on installitud minu Debian 10 hostidesse.
Töötamine Ansible dnf/yum mooduliga
The dnf ja nami Ansible moodulit kasutatakse konkreetse tarkvarapaketi installimiseks CentOS/RHEL hostidele. Saate seda moodulit kasutada samamoodi nagu seda tegite asjakohane moodul selle artikli varasemas osas.
Mõlemad dnf ja nami moodulid aktsepteerivad samu parameetreid. Võite kasutada dnf moodul CentOS/RHEL 8 hostidel ja nami CentOS/RHEL 7 või vanematel.
Vaatame nüüd selle mooduli näidet.
Esiteks looge uus mänguraamat dnf1.yaml aastal mänguraamatud/ kataloogi järgmiselt:
$nanomänguraamatud/dnf1.yamlSisestage lahtrisse järgmised read dnf1.yaml mänguraamat:
- võõrustajad: centos8kasutaja: ansible
muutuma: Tõsi
ülesanded:
- nimi: installige httpd pakett
dnf:
nimi: httpd
riik: viimane
The dnf ja nami moodul nõuab ainult nimi pakett, mida soovite installida/uuendada/eemaldada ja osariik pakendist.
Siin proovin installida httpd pakett ( nimi: httpd ) minu CentOS 8 hostidel. Kuna ma proovin paketti installida ja sooviksin seda ka uuendada, kui uus versioon on saadaval, siis osariik peaks olema hiljemalt .
osariik aktsepteerib järgmisi valikuid:
- puudub - Pakett eemaldatakse, kui see on juba installitud.
- hiljemalt - Kui värskendus on saadaval, uuendatakse paketti. Kui pakett pole veel installitud, installitakse see.
- kohal - Pakett installitakse, kui seda pole juba installitud. Kuid paketti ei uuendata, kui värskendus on saadaval.
Pange tähele, et olen lisanud muutuma: Tõsi mänguraamatus. See annab võimatu kasutaja sudo privileegid failisüsteemi struktuuri muutmiseks (st pakettide installimiseks/täiendamiseks/eemaldamiseks). Ilma muutuma: Tõsi , asjakohane moodulit ei saa installida httpd pakett.
Kui olete lõpetanud, salvestage mänguraamat, vajutades + X millele järgnes JA ja .
Käivitage dnf1.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/dnf1.yamlNagu näete, käivitati mänguraamat edukalt CentOS 8 hostil.
Ansible teenindusmooduliga töötamine
The teenus Ansible moodulit kasutatakse teie hostides teenuste käivitamiseks, peatamiseks, taaskäivitamiseks, lubamiseks (teenuse lisamiseks käivitamisse) ja keelamiseks (teenuse eemaldamine käivitamisest).
Varasemates osades näitasin teile, kuidas installida Apache HTTP -serveripakett Ansible abil asjakohane , dnf ja nami moodulid. Veendume nüüd, et Apache HTTP -serveriteenus töötab ja on süsteemi käivitamisse lisatud.
Teen koostööd oma Debian 10 hostidega. Soovi korral saate aga töötada koos CentOS 8 hostidega. Reguleerige lihtsalt mänguraamatut vastavalt.
Esmalt looge uus Ansible mänguraamat apt2.yaml järgnevalt:
$nanomänguraamatud/apt2.yamlSisestage lahtrisse järgmised read apt2.yaml mänguraamat:
- võõrustajad: debian10kasutaja: ansible
muutuma: Tõsi
ülesanded:
- nimi: installige apache2
asjakohane:
nimi: apache2
riik: viimane
- nimi: käivitage teenus apache2
teenus:
nimi: apache2
olek: algas
lubatud: tõsi
Lisasin siia uue ülesande, Käivitage apache2 teenus .
nimi: apache2 - teenus, mille kallal töötan, on apache2 .
olek: algas - teenus peab töötama.
lubatud: tõsi - teenus tuleb süsteemi käivitamisel lisada.
The osariik parameeter aktsepteerib muid väärtusi.
- uuesti laaditud - Teenus peab konfiguratsioonifailid uuesti laadima.
- uuesti käivitatud - Teenus tuleb taaskäivitada.
- algas - Teenus peab töötama. Kui teenus ei tööta, käivitage teenus.
- peatus - Teenus tuleb peatada. Kui teenus töötab, peatage teenus.
Käivitage mänguraamat apt2.yaml järgnevalt:
$ansible-playbook mänguraamatud/apt2.yamlNagu näete, mängis mänguraamat edukalt.
Nagu näete, apache2 teenus töötab minu Debian 10 hostides.
Töötamine Ansible koopiamooduliga
Ansible koopia moodulit kasutatakse peamiselt failide kopeerimiseks arvutist kaughostidesse.
Varasemas osas installisin Apache 2 veebiserveri oma Debian 10 hostidesse. Kopeerime nüüd an index.html faili Debian 10 masinate veebijuurde.
Esiteks looge uus kataloog failid/ järgnevalt:
$mkdir -vfailidLooge uus fail index.html aastal failid/ kataloogi järgmiselt:
$nanofailid/index.htmlSisestage lahtrisse järgmised read index.html fail:
< html >
< pea >
< tiitel >Ansible'i veebiserver</ tiitel >
</ pea >
< keha >
< h1 >Tere tulemast LinuxHinti</ h1 >
< lk >See veebiserver võeti kasutusele koos Ansiblega.</ lk >
</ keha >
</ html >
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Looge uus Ansible mänguraamat apt3.yaml järgnevalt:
$nanomänguraamatud/apt3.yamlSisestage lahtrisse järgmised read apt3.yaml fail:
- võõrustajad: debian10kasutaja: ansible
muutuma: Tõsi
ülesanded:
- nimi: installige apache2
asjakohane:
nimi: apache2
riik: viimane
- nimi: kopeeri index.html serverisse
koopia:
src: ../failid/index.html
dest:/kus/www/html/index.html
režiim: 0644
omanik: www-andmed
rühm: www-andmed
- nimi: käivitage teenus apache2
teenus:
nimi: apache2
olek: algas
lubatud: tõsi
Siin, ülesanne Kopeeri index.html serverisse kopeerib index.html alates failid/ kataloogi / var / www / html / Debian 10 masinate kataloog.
src: ../files/index.html - lähtefaili tee.
dest: /var/www/html/index.html - Sihtfaili tee.
režiim: 0644 - Failikasutaja (6 - lugemine ja kirjutamine), grupi (4 - lugemine) ja teiste (4 - loetud) õigused.
omanik: www-andmed - Määrake faili omanikuks www-andmed .
rühm: www-andmed - Määrake faili rühmaks www-andmed .
Kui olete lõpetanud, salvestage fail, vajutades + X millele järgnes JA ja .
Käivitage apt3.yaml mänguraamat järgmiselt:
$ansible-playbook mänguraamatud/apt3.yamlNagu näete, on ülesanne Kopeeri index.html serverisse on edukas.
Nagu näete, index.html fail kopeeriti Debian 10 hostidesse.
Nagu näete, teenindab Debian 10 veebiserver index.html lehe, mille ma just Debian 10 hostidesse kopeerisin.
Niisiis, need on Ansible põhitõed. Ansible kohta saate rohkem teada, lugedes Ansible ametlikku dokumentatsiooni. Täname, et lugesite seda artiklit.