Šis straipsnis parodys, kaip naudotis „Ansible“ šabloną modulis ir kai kurie „Jinja2“ šablonų kalbos pagrindai. Taigi, pradėkime!
Būtinos sąlygos
Jei norite išbandyti šio straipsnio pavyzdžius:
1) Savo kompiuteryje turite būti įdiegę „Ansible“.
2) Jūs turite turėti bent „Ubuntu“ / „Debian“ pagrindinį kompiuterį arba „CentOS / RHEL 8“ pagrindinį kompiuterį, sukonfigūruotą „Ansible Automation“.
„LinuxHint“ yra daug straipsnių, skirtų „Ansible“ diegimui ir kompiuterių konfigūravimui „Ansible“ automatizavimui. Jei reikia, taip pat galite tai patikrinti.
Anoniminio projekto katalogo nustatymas
Prieš einant toliau, verta sukurti projekto katalogo struktūrą, kad viskas būtų šiek tiek sutvarkyta.
Norėdami sukurti projekto katalogą template-demo / ir visus reikalingus pakatalogius (dabartiniame darbo kataloge), vykdykite šią komandą:
$ mkdir -pv template-demo / playbooks / templates
Sukūrę projekto katalogą, eikite į projekto katalogą taip:
$ cd template-demo /
Sukurti šeimininkai atsargų byla taip:
$ nano šeimininkai
Tada pridėkite pagrindinio kompiuterio IP arba DNS pavadinimą (vm1.nodekitas.com ir vm2.nodekitas.com) inventoriaus byloje.
Baigę šį veiksmą, išsaugokite failą paspausdami
Projekto kataloge sukurkite Ansible konfiguracijos failą taip:
$ nano galima.plg
Tada įveskite šias eilutes įmanoma.plg failą.
Baigę šį veiksmą, išsaugokite failą paspausdami
Šiuo metu projekto katalogas turėtų atrodyti taip:
$ medis
Kaip matote, prieinami yra ir „Ansible“ kompiuteriai. Taigi galime pereiti prie kito šio straipsnio skirsnio.
$ ansible all -u ansible -m ping
Neišmanomo šablono modulio pagrindai
The šabloną modulis „Ansible“ priima tas pačias parinktis kaip ir kopija „Ansible“ modulis.
Bendras Negalimas šabloną modulio parinktys:
src - Jinja2 šablono failo kelias jūsų kompiuteryje, kurį analizuos Jinja2 šablono kalba ir nukopijuos į nuotolinius kompiuterius.
pask - Paskirties kelias nuotoliniuose pagrindiniuose kompiuteriuose, į kuriuos bus nukopijuotas failas.
savininkas - Nuotolinio kompiuterio failo savininkas.
grupė - Failo grupė nuotoliniuose pagrindiniuose kompiuteriuose.
režimas - Failo leidimo režimas nuotoliniuose pagrindiniuose kompiuteriuose.
Pažvelkime į pavyzdį.
Pirmiausia sukurkite naują „Ansible“ pjesę copy_file_template1.yaml viduje konors grojaraščiai / katalogą:
„$ nano“ grojaraščiai / copy_file_template1.yaml
Tada įveskite šias eilutes copy_file_template1.yaml pjesė.
- šeimininkai: visivartotojas: ansible
užduotys:
- pavadinimas: Kopijuoti rodyklę.HTML failą į serverį
šablonas:
src: rodyklė.jinja2
dest: / home / ansible / index.HTML
savininkas: ansible
grupė: ansible
režimas: 0644
Ši knyga nukopijuos indeksas.jinja2 failą iš grojaraščiai / šablonai / katalogą (atsižvelgiant į jūsų projekto katalogą) į nuotolinius kompiuterius, naudojant „Ansible“ šabloną modulis.
Baigę šį veiksmą, išsaugokite failą paspausdami
Sukurkite indeksas.jinja2 šablono failą grojaraščiai / šablonai katalogą:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Įveskite šias eilutes indeksas.jinja2 šablono failas:
Sveiki atvykę į „Linuxhint“!
Tai tik paprastas HTML failas. Čia nenaudojau jokios puošnios „Jinja2“ sintaksės.
Baigę šį veiksmą, išsaugokite failą paspausdami
Paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Pjesių knyga turėtų būti sėkmingai paleista.
Kaip matote, indeksas.jinja2 šablonas buvo pateiktas naudojant „Jinja2“ šablonų kalbą. Pateiktas turinys turėtų būti nukopijuotas į indeksas.HTML nuotolinių kompiuterių failas.
Kintamųjų spausdinimas „Jinja2“ šablone
„Jinja2“ šablonuose galite naudoti „Ansible fact“, kintamuosius ir vartotojo nustatytus kintamuosius.
Savo „Jinja2“ šablone galite atsispausdinti kintamojo vertę naudodami kintamasis vardas sintaksė. Jei kintamasis yra objektas, galite atsispausdinti atskirų objektų ypatybes naudodami objektasKintamas.nuosavybės pavadinimas sintaksė.
Toliau pateiktame pavyzdyje atspausdinsime data nuosavybė ansible_date_time objektas mūsų indeksas.jinja2 šabloną.
$ ansible all -u ansible -m sąranka | egrep - spalva „data | laikas“
Pirmiausia atidarykite indeksas.jinja2 šablono failas su „nano“ teksto redaktoriumi taip:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Pridėkite šią eilutę prie indeksas.jinja2 šablono failas:
Puslapis sugeneruotas ansible_date_time.data
Galutinis indeksas.jinja2 failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Baigę šį veiksmą, išsaugokite failą paspausdami
Paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Kaip matote, indeksas.jinja2 šabloną apdorojo „Jinja2“ šablonų kalba ir pakeitė šabloną ansible_date_time.data kintamasis su data MMMM-MM-DD formatas. Tada išvestis buvo nukopijuota į indeksas.HTML failą nuotoliniame pagrindiniame kompiuteryje.
Sąlyginis, jei teiginys „Jinja2“ šablone
„Jinja2“ šablonų kalba palaikoma sąlyginė jei pareiškimus. Prieš spausdindami ką nors, naudodami., Galite patikrinti tam tikrus kintamuosius jei pareiškimas.
„Jinja2“ jei sintaksė yra tokia:
%, jei sąlyga%Darykite ką nors, jei sąlyga yra teisinga
% endif%
Pažiūrėkime „Jinja2“ pavyzdį jei pareiškimas.
Šiame skyriuje pademonstruosiu „Jinja2“ jei pareiškimas naudojant ansible_distribution faktai kintamasis.
$ ansible all -u ansible -m sąranka | egrep - spalva „dist“
Pirmiausia atidarykite indeksas.jinja2 „Jinja2“ šablonas su nano teksto redaktoriumi taip:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Tada pridėkite šias eilutes indeksas.jinja2 šablono failas:
% if ansible_distribution == "Debian"%Jūs naudojate „Debian Linux“
% endif%
Čia aš patikrinau, ar ansible_distribution yra Debian. Jei taip, spausdinkite eilutę Jūs naudojate „Debian Linux“
Galiausiai indeksas.jinja2 šablono failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Dabar paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Kaip matote, mano nuotoliniame „Debian“ pagrindiniame kompiuteryje indeksas.HTML failas turi eilutę Jūs naudojate „Debian Linux“
Sąlyginis: „if-else“ teiginys „Jinja2“ šablone
„Jinja2“ šablonų kalba palaikoma sąlyginė jei-dar pareiškimus. Galite išspausdinti vieną dalyką, jei sąlyga atitinka, ir atspausdinti ką nors kita, jei jis nenaudoja jei-dar pareiškimas.
„Jinja2“ jei-dar sintaksė yra tokia:
%, jei sąlyga%Darykite ką nors, jei sąlyga yra teisinga
% Kitas %
Darykite ką nors, jei sąlyga yra klaidinga
% endif%
Pažiūrėkime „Jinja2“ pavyzdį jei-dar pareiškimas.
Pirmiausia atidarykite indeksas.jinja2 „Jinja2“ šablonas su nano teksto redaktoriumi taip:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Tada pridėkite šias eilutes indeksas.jinja2 šablono failas:
% if ansible_distribution == "Debian"%Jūs naudojate „Debian Linux“
% Kitas %
Jūs neveikiate „Debian Linux“
% endif%
Čia aš patikrinau, ar ansible_distribution yra Debian. Jei taip, spausdinkite eilutę Jūs naudojate „Debian Linux“ Jūs neveikiate „Debian Linux“
Galiausiai indeksas.jinja2 šablono failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Kaip matote, mano nuotoliniame „Debian“ pagrindiniame kompiuteryje indeksas.HTML failas turi eilutę Jūs naudojate „Debian Linux“ Jūs neveikiate „Debian Linux“
Sąlyginis: „if-elif“ teiginys „Jinja2“ šablone
„Jinja2“ šablonų kalba palaikoma sąlyginė jei-elifas pareiškimus.
„Jinja2“ jei-elifas sintaksė yra tokia:
%, jei sąlyga1%Darykite ką nors, jei sąlyga1 yra teisinga
% elif condition2%
Darykite ką nors, jei sąlyga2 yra teisinga
% elif condition3%
Darykite ką nors, jei sąlyga3 yra teisinga
…
% elif conditionN%
Darykite ką nors, jei sąlygaN yra teisinga
% Kitas %
Darykite ką nors, jei nė viena iš sąlygų netenkinama
% endif%
Čia, % Kitas % skyrius yra neprivalomas, bet jis yra, jei jums to reikia.
Pažiūrėkime „Jinja2“ pavyzdį jei-elifas pareiškimas.
Pirmiausia atidarykite indeksas.jinja2 „Jinja2“ šablonas su nano teksto redaktoriumi taip:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Tada pridėkite šias eilutes indeksas.jinja2 šablono failas:
% if ansible_distribution == "Debian"%Jūs naudojate „Debian Linux“
% elif ansible_distribution == "CentOS"%
Jūs naudojate „CentOS Linux“
% Kitas %
Jūsų operacinė sistema nepalaikoma
% endif%
Čia aš patikrinau, ar ansible_distribution yra Debian. Jei taip, spausdinkite eilutę Jūs naudojate „Debian Linux“
Aš taip pat patikrinau, ar ansible_distribution yra CentOS. Jei taip, spausdinkite eilutę Jūs naudojate „CentOS Linux“
Priešingu atveju atspausdinkite Jūsų operacinė sistema nepalaikoma
Galiausiai indeksas.jinja2 šablono failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Kaip matote, mano nuotoliniame „Debian“ pagrindiniame kompiuteryje indeksas.HTML failas turi eilutę Jūs naudojate „Debian Linux“
Mano nuotoliniame „CentOS“ pagrindiniame kompiuteryje indeksas.HTML failas turi eilutę Jūs naudojate „CentOS Linux“
Jei turėčiau kitą nuotolinį pagrindinį kompiuterį, kuriame būtų naudojama kita nei Debian arba CentOS OS, jis turėtų eilutę Jūsų operacinė sistema nepalaikoma
Taigi, „Jinja2“ jei-elifas būklė veikia.
„Jinja2“ šablono kilpos
Taip pat galite spausdinti masyvus ir objektus naudodami „Jinja2“ kilpas.
„Jinja2“ dėl kilpos sintaksė yra tokia:
Atlikite ką nors naudodami „variableName“
% endfor%
Čia, kiekvienoje masyvo iteracijoje arrayName, vienas iš masyvo elementų (pradedant nuo masyvo pradžios) priskiriamas kintamasPavadinimas kintamasis. Galite ką nors padaryti su šiuo kintamuoju kilpos viduje.
Pažiūrėkime, kaip šiame pavyzdyje galite spausdinti masyvo elementus savo „Jinja2“ šablone.
Pirmiausia atidarykite copy_file_template1.yaml Leidžiama knyga su nano teksto redaktoriumi taip:
„$ nano“ grojaraščiai / copy_file_template1.yaml
Tada pridėkite šias eilutes copy_file_template1.yaml grojaraščio failas:
varsas:meniu:
- Namai
- Produktai
- Apie mus
- Susisiekite su mumis
Čia aš pridėjau a meniu masyvas copy_file_template1.yaml pjesė. Toliau išspausdinsiu masyvo elementus naudodamas mano kilpą indeksas.jinja2 „Jinja2“ šablono failas.
Galiausiai copy_file_template1.yaml grojaraščio failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Dabar atidarykite indeksas.jinja2 „Jinja2“ šablonas su nano teksto redaktoriumi taip:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Įtraukite šias eilutes į indeksas.jinja2 šablono failas:
Čia kuriu paprastą HTML naršymo juostą naudodamas „Jinja2“ dėl kilpa. Kilpa kartojasi per meniu masyvas (kurį aš apibrėžiau copy_file_template1.yaml playbook) elementus ir generuoja a Meniu elementas kiekvienoje iteracijoje.
Galiausiai indeksas.jinja2 šablono failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Kaip matote, „Jinja2“ dėl ciklas sugeneravo HTML naršymo juostą ( indeksas.HTML failas).
Taip pat galite pasiekti objektų masyvą savo „Jinja2“ šablone.
Pažiūrėkime dar vieną pavyzdį.
Pirmiausia atidarykite copy_file_template1.yaml Leidžiama knyga su nano teksto redaktoriumi taip:
„$ nano“ grojaraščiai / copy_file_template1.yaml
Tada pridėkite šias eilutes copy_file_template1.yaml grojaraščio failas:
varsas:meniu:
- vardas: Namai
nuoroda: / namai
- pavadinimas: Produktai
nuoroda: / produktai
- vardas: Apie mus
nuoroda: / apie mus
- vardas: Susisiekite su mumis
nuoroda: / susisiekite su mumis
Čia aš pridėjau a meniu objektų masyvas copy_file_template1.yaml pjesė. Kiekvienas iš šių objektų turi dvi savybes: a vardas turto ir a nuoroda nuosavybė.
Galiausiai copy_file_template1.yaml grojaraščio failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Atidaryk indeksas.jinja2 „Jinja2“ šablonas su nano teksto redaktoriumi taip:
$ nano grojaraščiai / šablonai / rodyklė.jinja2
Tada pridėkite šias eilutes indeksas.jinja2 šablono failas:
Viskas, ką matote čia, yra tas pats, kas ankstesniame pavyzdyje. Skirtumas tik tas, kad spausdinu objekto savybes vardas (naudojant Meniu.vardas) ir nuoroda (naudojant Meniu.nuoroda) Mano indeksas.jinja2 „Jinja2“ šablonas.
Galiausiai indeksas.jinja2 šablono failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.
Redagavę failą, išsaugokite failą paspausdami
Dabar paleiskite pjesę copy_file_template1.yaml taip:
$ ansible-playbook playbooks / copy_file_template1.yaml
Kaip matote, „Jinja2“ dėl ciklas sugeneravo HTML naršymo juostą ( indeksas.HTML failas) iš objektų masyvo.
Kas toliau?
Šiame straipsnyje aš jums parodžiau, kaip naudotis „Ansible“ šabloną modulį ir aprašė kai kuriuos „Jinja2“ šablonų kalbos pagrindus. Apsilankykite oficialioje „Jinja2“ svetainėje ir sužinokite daugiau apie „Jinja2“ šablonų kalbą.