Būtinos sąlygos
Jei norite išbandyti šio straipsnio pavyzdžius, turite:
1) Įdiekite „Ansible“ savo kompiuteryje.
2] Turėkite „Ubuntu“ pagrindinį kompiuterį, sukonfigūruotą „Ansible automatization“.
„LinuxHint“ yra daug straipsnių, skirtų įdiegti „Ansible“ ir konfigūruoti „Ansible“ automatikos pagrindinius kompiuterius. Jei reikia, galite peržiūrėti šiuos straipsnius.
Projektų katalogo nustatymas
Prieš eidami toliau, sukurkite naują „Ansible“ projekto katalogą, kad viskas būtų kiek sutvarkyta.
Norėdami sukurti projekto katalogą register-demo / ir visus reikalingus pakatalogius (dabartiniame darbo kataloge), vykdykite šią komandą:
$ mkdir -pv register-demo / playbooks
Sukūrę projekto katalogą, eikite į projekto katalogą taip:
$ cd register-demo /
Sukurti šeimininkai atsargų byla taip:
$ nano šeimininkai
Į inventoriaus failą įtraukite savo „Ubuntu“ pagrindinio kompiuterio IP arba DNS pavadinimą (po vieną pagrindinį kompiuterį kiekvienoje eilutėje), kaip parodyta žemiau esančiame ekrano kopijoje.
Čia pridėjau savo „Ubuntu 20“.04 LTS vedėjas vm3.nodekitas.com viduje konors ubuntu20 grupė.
Baigę išsaugokite failą paspausdami
Sukurkite Ansible konfigūracijos failą įmanoma.plg savo projekto kataloge taip:
$ nano galima.plg
Tada įveskite šias eilutes įmanoma.plg failas:
[pagal nutylėjimą]inventorius = šeimininkai
host_key_checking = Netiesa
Kai baigsite, išsaugokite įmanoma.plg failą paspausdami
Dabar pabandykite pinguoti savo „Ubuntu“ pagrindinį kompiuterį taip:
$ ansible ubuntu20 -u ansible -m ping
Kaip matote, mano „Ubuntu 20“.04 šeimininkas vm3.nodekitas.com yra prieinama.
1 pavyzdys: pagrindai
Šiame pavyzdyje aš jums parodysiu keletą „Ansible“ pagrindų Registruotis modulis. Aš naudosiu „Ansible“, kad sugeneruočiau atsitiktinį slaptažodį savo „Ubuntu 20“.04 pagrindinis kompiuteris naudojant pwgen komandą, išsaugokite slaptažodį kintamajame naudodami Registruotis modulį ir atspausdinkite slaptažodį ekrane.
Pirmiausia sukurkite naują pjesę generuoti.yaml viduje konors grojaraščiai / katalogą:
„$ nano“ grojaraščiai / generuoti_pass.yaml
Įveskite šias eilutes generuoti.yaml failas:
- šeimininkai: ubuntu20vartotojas: ansible
tapti: Tiesa
užduotys:
- pavadinimas: Įsitikinkite, kad įdiegta „pwgen“
apt:
vardas: pwgen
būsena: dabartis
„update_cache“: tiesa
- vardas: sugeneruoti slaptažodį
apvalkalas: pwgen-N 1 -s 30
registruotis: mypass
- pavadinimas: atsispausdinkite sugeneruotą slaptažodį
derinti:
msg: "Slaptažodis yra mypass"
Baigę paspauskite
Šioje eilutėje „Ansible“ nurodoma paleisti pjesę generuoti.yaml kiekvienam kompiuteriui ubuntu20 grupė. Mano atveju pjesė bus paleista šeimininkui vm3.nodekitas.com.
Šioje pjesėje aš apibrėžsiu tris užduotis.
Pirmoji užduotis užtikrins, kad pwgen paketas yra įdiegtas.
Antroji užduotis sugeneruos atsitiktinį 30 simbolių slaptažodį naudodama pwgen komandą. Aš naudosiu Registruotis modulis saugoti sugeneruotą slaptažodį mypass kintamasis.
Trečioji užduotis atspausdins mypass kintamasis naudojant „Ansible“ derinti modulis.
Paleiskite pjesę generuoti.yaml naudojant šią komandą:
$ ansible-playbook playbooks / generator_pass.yaml
Kaip matote, pjesė sėkmingai paleista. Taip pat sugeneruotas slaptažodis.
Bet kodėl kintamasis mypass išspausdink tiek daiktų?
Na, kintamasis mypass yra objektas, kuriame yra keletas svarbių savybių.
Svarbiausios kiekvieno iš savybių Registruotis kintamieji yra šie:
cmd - Komanda, paleista generuoti išvestį.
stdout - Komandos išvestis.
stderr - Komandos klaidos išvestis.
pradžia - Data ir laikas, kada komanda buvo pradėta vykdyti.
galas - Data ir laikas, kai komanda baigė vykdyti.
delta - Komandos vykdymo laikas. Tai yra skirtumas tarp galas ir pradžia savybes.
stdout_lines - Masyvas, kuriame yra kiekviena komandos išvesties eilutė. Taip pat kaip stdout, bet stdout atskiria eilutes naudodami naujos eilutės (\ n) simbolius, o ne masyvus.
stderr_lines - Masyvas, kuriame yra kiekviena komandos klaidos išvesties eilutė. Taip pat kaip stderr, bet stderr atskiria eilutes naudodami ne masyvus, o naujos eilutės (\ n) simbolius.
Jei norite tiesiog atsispausdinti / pasiekti slaptažodžio eilutę (kas labai tikėtina), galite atsispausdinti / pasiekti stdout nuosavybė mypass kintamasis jūsų grojaraštyje, kaip pažymėta toliau pateiktoje ekrano kopijoje.
„$ nano“ grojaraščiai / generuoti_pass.yaml
Kai baigsite, paleiskite pjesę generuoti.yaml vėl. Bus spausdinama tik slaptažodžio eilutė, kaip matote toliau pateiktoje ekrano kopijoje.
Tai apima „Ansible“ pagrindus Registruotis modulis.
2 pavyzdys: parduotuvės katalogo turinys
Šiame pavyzdyje aš jums parodysiu, kaip katalogo turinį išsaugoti kintamajame naudojant „Ansible“ Registruotis modulis, taip pat kaip juos kartoti.
Pirmiausia sukurkite naują pjesę get_dir_contents.yaml viduje konors grojaraščiai / kataloge.
„$ nano“ grojaraščiai / get_dir_contents.yaml
Tada įveskite šias eilutes get_dir_contents.yaml pjesė:
- šeimininkai: ubuntu20vartotojas: ansible
tapti: Tiesa
užduotys:
- pavadinimas: išvardykite visus failus ir katalogus aplanke / home / ansible
apvalkalas: ls / home / ansible
registruotis: dir_contents
- pavadinimas: Spausdinkite katalogo turinį naudodami kilpas
derinti:
pranešimas: „item“
kilpa: "dir_contents.stdout_lines "
Baigę paspauskite
Šioje pjesėje aš apibrėžsiu dvi užduotis.
Pirmojoje užduotyje nurodomas visas / home / ansible katalogą ir saugo juos dir_contents kintamasis.
Antroji užduotis atspausdina dir_contents kintamasis.
Paleiskite get_dir_contents.yaml pjesė taip.
$ ansible-playbook playbooks / get_dir_contents.yamlKaip matote, stdout_lines ypatybė katalogo turinį išsaugojo kaip masyvą. The stdout ypatybė taip pat saugoma katalogo turinyje. Šios savybės atskiriamos naujos eilutės (\ n) simboliais. Šiame pavyzdyje stdout_lines su turtu lengva dirbti.
Tada kartokite katalogo turinį naudodami kilpą.
Norėdami tai padaryti, atidarykite get_dir_contents.yaml vadovėlį ir pakeiskite antrąją užduotį, kaip pažymėta žemiau esančiame paveikslėlyje.
„$ nano“ grojaraščiai / get_dir_contents.yaml
Čia kartojuosi dėl dir_contents.stdout_lines masyvas naudojant kilpą ir masyvo elementų spausdinimas naudojant Ansible derinti modulis. Šioje užduotyje elementą kintamasis yra kilpos kintamasis, naudojamas pakartoti masyvo elementus.
Paleiskite get_dir_contents.yaml pjesė:
$ ansible-playbook playbooks / get_dir_contents.yamlKaip matote, / home / ansible katalogas atspausdintas ekrane.
3 pavyzdys: sukurti atsarginę katalogo kopiją
Šiame pavyzdyje parodysiu, kaip sukurti atsarginę katalogo kopiją naudojant „Ansible“ Registruotis, failą, ir kopija moduliai.
Pirmiausia sukurkite naują pjesę atsarginės_namų_direktorius.yaml viduje konors grojaraščiai / katalogą:
„$ nano“ grojaraščiai / atsarginės_namų_dir.yaml
Tada įveskite šias eilutes atsarginės_namų_direktorius.yaml failą.
- šeimininkai: ubuntu20vartotojas: ansible
tapti: Tiesa
užduotys:
- pavadinimas: gaukite namų katalogą / home / ansible content
apvalkalas: ls / home / ansible
registruotis: dir_contents
- pavadinimas: sukurkite naują katalogą / tmp / ansible
failas:
kelias: / tmp / ansible
būsena: katalogas
- pavadinimas: Atsarginis namų katalogas / home / ansible to / tmp / ansible
kopija:
src: / home / ansible / item
pask: / tmp / ansible /
remote_src: Tiesa
kilpa: "dir_contents.stdout_lines
Baigę paspauskite
Šioje pjesėje aš apibrėžsiu tris užduotis.
Pirmoji užduotis saugo / home / ansible katalogą (katalogą, kurio atsarginę kopiją turėsiu sukurti) dir_contents kintamasis naudojant „Ansible“ Registruotis modulis.
Antroji užduotis sukuria naują katalogą / tmp / ansible naudojant Ansible failą modulis. Tai katalogas, kuriame bus saugoma atsarginė kopija.
Trečioji užduotis eina per dir_contents.stdout_lines masyvas ir naudoja Ansible kopija modulis, norėdamas nukopijuoti kiekvieną katalogą į / tmp / ansible / kataloge.
Paleiskite atsarginės_namų_direktorius.yaml pjesė:
$ ansible-playbook playbooks / backup_home_dir.yaml
Kaip matote, mano „Ubuntu 20“.04 LTS priegloba, atsarginė kopija buvo sėkminga.
4 pavyzdys: vykdykite arba praleiskite užduotis
Šiame pavyzdyje aš jums parodysiu, kaip vykdyti arba praleisti užduotis, atsižvelgiant į jūsų užregistruotą kintamąjį, naudojant Registruotis modulis.
Pirmiausia sukurkite naują pjesę registruoti_sąlygos.yaml viduje konors grojaraščiai / katalogą taip:
$ nano grojaraščiai / register_conditions.yaml
Tada įveskite šias eilutes registruoti_sąlygos.yaml failą.
- šeimininkai: ubuntu20vartotojas: ansible
tapti: Tiesa
užduotys:
- pavadinimas: išvardykite katalogo turinį
apvalkalas: ls / home / ansible / test3
registruotis: dir_contents
- pavadinimas: Patikrinkite, ar katalogas tuščias
derinti:
msg: "Katalogas tuščias."
kai: dir_contents.stdout == ""
Baigę paspauskite
Šioje pjesėje aš apibrėžiau dvi užduotis.
Pirmoji užduotis saugo / home / ansible / test3 kataloge dir_contents kintamasis.
Antroji užduotis tikrina, ar dir_contents.stdout yra tuščia eilutė, ar katalogas / home / ansible / test3 Yra tuščias. Jei katalogas tuščias, pranešimas Katalogas tuščias atspausdins.
Paleiskite registruoti_sąlygos.yaml pjesė:
$ ansible-playbook playbooks / register_conditions.yamlKaip matote, pjesė sėkmingai paleista.
Nuo katalogo / home / ansible / test3 yra tuščias, pjesė išspausdino pranešimą Katalogas tuščias.
Tada sukurkite naują failą / home / ansible / test3 kataloge.
$ touch test3 / myfile
Kadangi / home / ansible / test3 katalogas nebėra tuščias, užduotis Patikrinkite, ar katalogas tuščias yra praleistas, kaip matote toliau pateiktoje ekrano kopijoje.
$ ansible-playbook playbooks / register_conditions.yaml
Išvada
„Ansible“ Registruotis modulis yra labai naudingas serverio automatizavimui. Šis straipsnis parodė pagrindinius Registruotis modulis, įskaitant „Ansible“ naudojimo pavyzdžius Registruotis modulis katalogų saugojimui ir atsarginei kopijavimui bei katalogo užduočių vykdymui.