Negalima

Kaip naudoti Ansible Template Module

Kaip naudoti Ansible Template Module
„Ansible“ šabloną modulis daugiausia naudojamas failams nukopijuoti iš „Ansible“ kliento (kur įdiegta „Ansible“) į „Ansible“ pagrindinius kompiuterius (kuriuos valdo „Ansible“). Nauda šabloną modulis, o ne kopija modulis, tai yra Ansible šabloną modulis gali naudoti „Jinja2“ šablonų kalbą. Jinja2 yra galinga „Python“ šablonų kalba, kuria galite generuoti konfigūracijos failus, tinklalapius ir kt. Savo „Jinja2“ šablonuose taip pat galite naudoti „Ansible fact“ kintamuosius, kilpas ir sąlygas.

Š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 + X, paskui Y ir .

Projekto kataloge sukurkite Ansible konfiguracijos failą taip:

$ nano galima.plg

Tada įveskite šias eilutes įmanoma.plg failą.

Baigę šį veiksmą, išsaugokite failą paspausdami + X, paskui Y ir .

Š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: visi
vartotojas: 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 + X, paskui Y ir .

Sukurkite indeksas.jinja2 šablono failą grojaraščiai / šablonai katalogą:

$ nano grojaraščiai / šablonai / rodyklė.jinja2

Įveskite šias eilutes indeksas.jinja2 šablono failas:




„Jinja2“ šablonų demonstracija


Sveiki atvykę į „Linuxhint“!



Tai tik paprastas HTML failas. Čia nenaudojau jokios puošnios „Jinja2“ sintaksės.

Baigę šį veiksmą, išsaugokite failą paspausdami + X, paskui Y ir .

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 + X, paskui Y ir .

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“

. Priešingu atveju jo nespausdinkite.

Galiausiai indeksas.jinja2 šablono failas turėtų atrodyti taip, kaip parodyta toliau pateiktoje ekrano kopijoje.

Redagavę failą, išsaugokite failą paspausdami + X, paskui Y ir .

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“

. Tačiau mano „CentOS“ nuotoliniame kompiuteryje linijos nėra. Taigi, „Jinja2“ jei būklė veikia.

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“

. Priešingu atveju atspausdinkite

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 + X, paskui Y ir .

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“

. Bet mano „CentOS“ nuotoliniame kompiuteryje indeksas.HTML failas turi eilutę

Jūs neveikiate „Debian Linux“

. Taigi, „Jinja2“ jei-dar būklė veikia.

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 + X, paskui Y ir .

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

viduje konors indeksas.HTML failą.

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:

% for variableName in arrayName%
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 + X, paskui Y ir .

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 + X, paskui Y ir .

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 + X, paskui Y ir .

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 + X, paskui Y ir .

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ą.

„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...
„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...
„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...