Odgovorno

Kako uporabljati modul Ansible Template

Kako uporabljati modul Ansible Template
Ansible predloga modul se v glavnem uporablja za kopiranje datotek iz odjemalca Ansible (kjer je nameščen Ansible) na gostitelje Ansible (upravlja Ansible). Prednost uporabe predloga namesto modula kopirati modul, je to Ansible predloga modul lahko uporablja predloge jezika Jinja2. Jinja2 je zmogljiv predloga Python, s pomočjo katerega lahko generirate konfiguracijske datoteke, spletne strani itd. V predlogah Jinja2 lahko uporabite tudi spremenljivke, zanke in pogoje Ansible fact.

Ta članek vam bo pokazal, kako uporabljati Ansible predloga modul in nekatere osnove predloga jezika Jinja2. Torej, začnimo!

Pogoji


Če bi radi preizkusili primere v tem članku:

1) V računalniku mora biti nameščen Ansible.

2) Za avtomatizacijo Ansible morate imeti konfiguriran vsaj gostitelj Ubuntu / Debian ali gostitelj CentOS / RHEL 8.

V LinuxHintu je veliko člankov, namenjenih namestitvi programa Ansible in konfiguriranju gostiteljev za avtomatizacijo Ansible. Po potrebi jih lahko tudi preverite.

Nastavitev Ansible Project Directory

Preden nadaljujemo, je dobro ustvariti strukturo imenika projekta, samo da bodo stvari malo organizirane.

Če želite ustvariti imenik projekta predloga-demo / in vse zahtevane podimenike (v trenutnem delovnem imeniku) zaženite naslednji ukaz:

$ mkdir -pv template-demo / playbooks / templates

Ko je imenik projekta ustvarjen, se pomaknite do imenika projekta, kot sledi:

$ cd predloga-demo /

Ustvariti gostitelji inventarna datoteka, kot sledi:

$ nano gostitelji

Nato dodajte gostiteljsko ime IP ali DNS (vm1.nodekite.com in vm2.nodekite.com) v inventarni datoteki.

Ko končate s tem korakom, shranite datoteko s pritiskom na + X, čemur sledi Y in .

V imeniku projekta ustvarite konfiguracijsko datoteko Ansible, kot sledi:

$ nano ansible.prim

Nato v vrstico vnesite naslednje vrstice ansible.prim mapa.

Ko končate ta korak, shranite datoteko s pritiskom na + X, čemur sledi Y in .

Na tej točki mora biti imenik projekta videti tako:

$ drevo

Kot lahko vidite, so dostopni tudi gostitelji Ansible. Torej lahko preidemo na naslednji odsek tega članka.

$ ansible vse -u ansible -m ping

Osnove modula Ansible Template

The predloga modul Ansible sprejema enake možnosti kot kopirati modul Ansible.

Skupni odgovor predloga možnosti modula:

src - Pot do datoteke predloge Jinja2 v vašem računalniku, ki jo bo razčlenil jezik za predloge Jinja2 in kopiral na oddaljene gostitelje.
dest - Ciljna pot na oddaljenih gostiteljih, na katere bo datoteka kopirana.
lastnik - Lastnik datoteke na oddaljenih gostiteljih.
skupini - Skupina datoteke na oddaljenih gostiteljih.
način - Način dovoljenja za datoteke na oddaljenih gostiteljih.

Oglejmo si primer.

Najprej ustvarite novo knjigo Ansible copy_file_template1.yaml v igralne knjige / imenik, kot sledi:

$ nano playbooks / copy_file_template1.yaml

Nato v vrstico vnesite naslednje vrstice copy_file_template1.yaml knjigo iger.

- gostitelji: vsi
uporabnik: ansible
naloge:
- ime: Kopiraj indeks.html na strežnik
predloga:
src: indeks.jinja2
dest: / home / ansible / index.html
lastnik: ansible
skupina: ansible
način: 0644

Ta knjiga bo kopirala indeks.jinja2 datoteko iz playbooks / predloge / imenik (glede na imenik vašega projekta) na oddaljene gostitelje z uporabo programa Ansible predloga modul.

Ko končate s tem korakom, shranite datoteko s pritiskom na + X, čemur sledi Y in .

Ustvari indeks.jinja2 datoteka predloge v knjige / predloge imenik, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

V vrstico vnesite naslednje vrstice indeks.jinja2 datoteka predloge:




Demo predloge Jinja2


Dobrodošli v Linuxhintu!



To je samo navadna datoteka HTML. Tu nisem uporabil nobene modne sintakse Jinja2.

Ko končate s tem korakom, shranite datoteko s pritiskom na + X, čemur sledi Y in .

Zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Knjiga iger bi se morala uspešno izvajati.

Kot lahko vidite, indeks.jinja2 Predloga je bila upodobljena s predlogom jezika Jinja2. Upodobljeno vsebino je treba kopirati v indeks.html datoteka oddaljenih gostiteljev.

Tiskanje spremenljivk v predlogi Jinja2

V predlogah Jinja2 lahko uporabite dejstva, spremenljivke in uporabniško določene spremenljivke.

Na predlogo Jinja2 lahko natisnete vrednost spremenljivke s pomočjo spremenljivoime skladnja. Če je spremenljivka objekt, lahko posamezne lastnosti predmeta natisnete s pomočjo objectVariable.imeName skladnja.

V primeru, ki sledi, bomo natisnili datum lastnina ansible_date_time predmet v našem indeks.jinja2 predloga.

$ ansible all -u ansible -m setup | egrep --color 'datum | čas'

Najprej odprite indeks.jinja2 datoteka predloge z urejevalnikom besedil nano, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

V vrstico dodajte naslednjo vrstico indeks.jinja2 datoteka predloge:

Stran je bila ustvarjena ansible_date_time.datum

Konec indeks.jinja2 datoteka naj bo videti tako, kot je prikazano na spodnjem posnetku zaslona.

Ko končate s tem korakom, shranite datoteko s pritiskom na + X, čemur sledi Y in .

Zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kot lahko vidite, indeks.jinja2 Predloga je bila obdelana s predlogom jezika Jinja2 in nadomeščena ansible_date_time.datum spremenljivka z datumom v LLLL-MM-DD format. Izhod je bil nato kopiran v indeks.html datoteko na oddaljenem gostitelju.

Pogojna izjava if v predlogi Jinja2

Jezik za predloge Jinja2 podpira pogojno če izjave. Določene spremenljivke lahko preverite, preden kar koli natisnete s pomočjo če izjavo.

Jinja2 če sintaksa je naslednja:

% if condition%
Naredite nekaj, če je pogoj resničen
% endif%

Oglejmo si primer Jinja2 če izjavo.

V tem poglavju bom predstavil Jinja2 če stavek z uporabo ansible_distribution dejstva spremenljiva.

$ ansible all -u ansible -m setup | egrep --color 'dist'

Najprej odprite indeks.jinja2 Predloga Jinja2 z urejevalnikom besedil nano, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

Nato dodajte naslednje vrstice v indeks.jinja2 datoteka predloge:

% if ansible_distribution == "Debian"%

Uporabljate Debian Linux


% endif%

Tukaj sem preveril, če ansible_distribution je Debian. Če je, natisnite niz

Uporabljate Debian Linux

. V nasprotnem primeru ga ne tiskajte.

Končno, indeks.jinja2 Datoteka predloge mora biti videti, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Zdaj zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kot lahko vidite, je na mojem oddaljenem gostitelju Debian indeks.html datoteka ima vrstico

Uporabljate Debian Linux

. Vendar na mojem oddaljenem gostitelju CentOS linija ni prisotna. Torej, Jinja2 če stanje deluje.

Pogojno: if-else izjava v predlogi Jinja2

Jezik za predloge Jinja2 podpira pogojno če potem izjave. Če se pogoj ujema, lahko natisnete eno stvar, če pa ne uporablja datoteke, natisnete nekaj drugega če potem izjavo.

Jinja2 če potem sintaksa je naslednja:

% if condition%
Naredite nekaj, če je pogoj resničen
% else%
Naredite nekaj, če je stanje napačno
% endif%

Oglejmo si primer Jinja2 če potem izjavo.

Najprej odprite indeks.jinja2 Predloga Jinja2 z urejevalnikom besedil nano, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

Nato dodajte naslednje vrstice v indeks.jinja2 datoteka predloge:

% if ansible_distribution == "Debian"%

Uporabljate Debian Linux


% else%

Ne uporabljate Debian Linuxa


% endif%

Tukaj sem preveril, če ansible_distribution je Debian. Če je, natisnite niz

Uporabljate Debian Linux

. V nasprotnem primeru natisnite

Ne uporabljate Debian Linuxa

.

Končno, indeks.jinja2 Datoteka predloge mora biti videti, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kot lahko vidite, je na mojem oddaljenem gostitelju Debian indeks.html datoteka ima vrstico

Uporabljate Debian Linux

. Toda na mojem oddaljenem gostitelju CentOS je indeks.html datoteka ima vrstico

Ne uporabljate Debian Linuxa

. Torej, Jinja2 če potem stanje deluje.

Pogojno: izjava if-elif v predlogi Jinja2

Jezik za predloge Jinja2 podpira pogojno if-elif izjave.

Jinja2 if-elif sintaksa je naslednja:

% if condition1%
Naredite nekaj, če je pogoj1 resničen
% elif condition2%
Naredite nekaj, če je pogoj2 resničen
% elif condition3%
Naredite nekaj, če je pogoj3 resničen
..
% elif conditionN%
Naredite nekaj, če je pogojN resničen
% else%
Naredite nekaj, če noben od pogojev ne izpolnjuje
% endif%

Tukaj % else% odsek ni obvezen, vendar je tam, če ga potrebujete.

Oglejmo si primer Jinja2 if-elif izjavo.

Najprej odprite indeks.jinja2 Predloga Jinja2 z urejevalnikom besedil nano, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

Nato dodajte naslednje vrstice v indeks.jinja2 datoteka predloge:

% if ansible_distribution == "Debian"%

Uporabljate Debian Linux


% elif ansible_distribution == "CentOS"%

Nameščate CentOS Linux


% else%

Vaš operacijski sistem ni podprt


% endif%

Tukaj sem preveril, če ansible_distribution je Debian. Če je, natisnite niz

Uporabljate Debian Linux

.

Preveril sem tudi, ali ansible_distribution je CentOS. Če je, natisnite niz

Nameščate CentOS Linux

.

V nasprotnem primeru natisnite

Vaš operacijski sistem ni podprt

.

Končno, indeks.jinja2 Datoteka predloge mora biti videti, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kot lahko vidite, je na mojem oddaljenem gostitelju Debian indeks.html datoteka ima vrstico

Uporabljate Debian Linux

.

Na mojem oddaljenem gostitelju CentOS je indeks.html datoteka ima vrstico

Uporabljate CentOS Linux

.

Če bi imel drugega oddaljenega gostitelja z operacijskim sistemom, ki ni Debian ali CentOS, bi imel linijo

Vaš operacijski sistem ni podprt

v indeks.html mapa.

Torej, Jinja2 if-elif stanje deluje.

Zanke v predlogi Jinja2

Polja in predmete lahko tudi natisnete z zankami v Jinja2.
Jinja2 za sintaksa zanke je naslednja:

% za spremenljivoName v nizu%
Naredite nekaj s spremenljivkoName
% endfor%

Tu v vsaki ponovitvi matrike arrayName, eden od elementov polja (začenši z začetka polja) je dodeljen variableName spremenljivka. S to spremenljivko lahko znotraj zanke nekaj storite.

Oglejmo si, kako lahko v naslednjem primeru natisnete elemente matrike v svojo predlogo Jinja2.

Najprej odprite copy_file_template1.yaml Odgovorna knjiga z urejevalnikom besedil nano, kot sledi:

$ nano playbooks / copy_file_template1.yaml

Nato dodajte naslednje vrstice v copy_file_template1.yaml datoteka playbook:

variira:
meniji:
- Domov
- Izdelki
- O nas
- Kontaktiraj nas

Tu sem dodal meniji matriko v copy_file_template1.yaml knjigo iger. Nato bom elemente polja natisnil z zanko v mojem indeks.jinja2 Datoteka predloge Jinja2.

Končno, copy_file_template1.yaml datoteka playbook naj bo videti tako, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Zdaj odprite indeks.jinja2 Predloga Jinja2 z urejevalnikom besedil nano, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

V vrstico dodajte naslednje vrstice indeks.jinja2 datoteka predloge:

Tu ustvarjam preprosto navigacijsko vrstico HTML z uporabo Jinja2 za zanko. Zanka se ponovi skozi meniji polje (ki sem ga definiral v copy_file_template1.yaml playbook) elemente in ustvari a meni v vsaki ponovitvi.

Končno, indeks.jinja2 Datoteka predloge mora biti videti, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kot lahko vidite, Jinja2 za zanka je ustvarila vrstico za krmarjenje HTML (v indeks.html mapa).

Do svoje predloge v predlogi Jinja2 lahko dostopate tudi.

Poglejmo še en primer.

Najprej odprite copy_file_template1.yaml Odgovorna knjiga z nano urejevalnikom besedil, kot sledi:

$ nano playbooks / copy_file_template1.yaml

Nato dodajte naslednje vrstice v copy_file_template1.yaml datoteka playbook:

variira:
meniji:
- ime: Domov
povezava: / domov
- ime: Izdelki
povezava: / izdelki
- ime: O nas
povezava: / o-nas
- ime: Pišite nam
povezava: / kontaktirajte nas

Tukaj sem dodal meniji objektno polje v copy_file_template1.yaml knjigo iger. Vsak od teh predmetov ima dve lastnosti, a ime lastnine in a povezava lastnine.

Končno, copy_file_template1.yaml datoteka playbook naj bo videti tako, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Odprite indeks.jinja2 Predloga Jinja2 z urejevalnikom besedil nano, kot sledi:

$ nano knjige / predloge / kazalo.jinja2

Nato dodajte naslednje vrstice v indeks.jinja2 datoteka predloge:

Vse, kar vidite tukaj, je enako kot v prejšnjem primeru. Edina razlika je v tem, da tiskam lastnosti predmeta ime (z uporabo meni.ime) in povezava (z uporabo meni.povezava) v mojem indeks.jinja2 Predloga Jinja2.

Končno, indeks.jinja2 Datoteka predloge mora biti videti, kot je prikazano na spodnjem posnetku zaslona.

Ko datoteko uredite, jo shranite s pritiskom na + X, čemur sledi Y in .

Zdaj zaženite knjigo iger copy_file_template1.yaml kot sledi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kot lahko vidite, Jinja2 za zanka je ustvarila vrstico za krmarjenje HTML (v indeks.html datoteka) iz niza predmetov.

Kaj je naslednje?

V tem članku sem vam pokazal, kako uporabljati Ansible predloga modul in opisal nekatere osnove predloga jezika Jinja2. Obiščite uradno spletno stran Jinja2, če želite izvedeti več o predloga jeziku Jinja2.

Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...
S temi brezplačnimi orodji dodajte gibe miške v sistem Windows 10
V zadnjih letih so se računalniki in operacijski sistemi močno razvili. Včasih so morali uporabniki uporabljati ukaze za krmarjenje po upraviteljih da...