Odgovorno

Kako se koristi modul odgovornog predloška

Kako se koristi modul odgovornog predloška
Odgovoran predložak modul se uglavnom koristi za kopiranje datoteka s klijenta Ansible (gdje je instaliran Ansible) na hostove Ansible (upravlja Ansible). Prednost korištenja predložak modul, a ne kopirati modul, je li to Ansible predložak modul može koristiti jezik predložaka Jinja2. Jinja2 je moćan jezik za predloške Pythona putem kojeg možete generirati konfiguracijske datoteke, web stranice itd. Također možete koristiti varijable, petlje i uvjete odgovornih činjenica u svojim Jinja2 predlošcima.

Ovaj će vam članak pokazati kako se koristi Ansible predložak modul i neke osnove jezika predložaka Jinja2. Pa, krenimo!

Preduvjeti


Ako želite isprobati primjere u ovom članku:

1) Na računalu morate imati instaliran Ansible.

2) Morate imati barem Ubuntu / Debian host ili CentOS / RHEL 8 host konfiguriran za Ansible automatizaciju.

Na LinuxHintu postoji mnogo članaka posvećenih Instaliranju Ansible i konfiguriranju hostova za Ansible automatizaciju. Po potrebi ih možete i provjeriti.

Postavljanje odgovornog direktorija projekata

Prije nego što nastavimo dalje, dobra je ideja stvoriti strukturu direktorija projekta, samo da stvari budu malo organizirane.

Za stvaranje direktorija projekta predložak-demo / i sve potrebne poddirektorijume (u vašem trenutnom radnom direktoriju), pokrenite sljedeću naredbu:

$ mkdir -pv template-demo / playbooks / predlošci

Jednom kad se kreira direktorij projekta, prijeđite na direktorij projekta, kako slijedi:

$ cd predložak-demo /

Stvoriti domaćini inventarna datoteka, kako slijedi:

$ nano domaćini

Zatim dodajte IP ili DNS ime hosta (vm1.nodekite.com i vm2.nodekite.com) u inventarskom spisu.

Kad završite s ovim korakom, spremite datoteku pritiskom na + x, nakon čega slijedi Y i .

Stvorite konfiguracijsku datoteku Ansible u direktoriju projekta, kako slijedi:

$ nano ansible.usp

Zatim unesite sljedeće retke u ansible.usp datoteka.

Nakon što završite ovaj korak, spremite datoteku pritiskom na + x, nakon čega slijedi Y i .

U ovom trenutku, direktorij projekta trebao bi izgledati kako slijedi:

$ drvo

Kao što vidite, i Ansible domaćini su dostupni. Dakle, možemo prijeći na sljedeći odjeljak ovog članka.

$ ansible sve -u ansible -m ping

Osnove modula odgovornog predloška

The predložak modul Ansible prihvaća iste opcije kao i kopirati modul Ansible.

Zajednički odgovor predložak opcije modula:

src - Put datoteke predloška Jinja2 na vašem računalu, koji će biti raščlanjen od strane Jinja2 predložak jezika i kopiran na udaljene hostove.
dest - Odredišni put na udaljenim hostovima na koji će se datoteka kopirati.
vlasnik - Vlasnik datoteke na udaljenim hostovima.
skupina - Grupa datoteke na udaljenim hostovima.
način rada - Način dopuštenja datoteke na udaljenim hostovima.

Pogledajmo primjer.

Prvo izradite novu knjigu odgovora Ansible copy_file_template1.yaml u igraonice / direktorij, kako slijedi:

$ nano playbooks / copy_file_template1.yaml

Zatim unesite sljedeće retke u copy_file_template1.yaml igraonica.

- domaćini: svi
korisnik: ansible
zadaci:
- naziv: Kopiraj indeks.html datoteku na poslužitelj
predložak:
src: indeks.jinja2
dest: / home / ansible / index.html
vlasnik: ansible
skupina: ansible
način rada: 0644

Ova knjiga za reprodukciju kopirat će indeks.jinja2 datoteka iz playbooks / predlošci / direktorij (u odnosu na direktorij vašeg projekta) na udaljene hostove koristeći Ansible predložak modul.

Kad završite s ovim korakom, spremite datoteku pritiskom na + x, nakon čega slijedi Y i .

Stvorite indeks.jinja2 datoteka predloška u playbooks / predlošci direktorij, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Utipkajte sljedeće retke u indeks.jinja2 datoteka predloška:




Demo predloška Jinja2


Dobrodošli u Linuxhint!



Ovo je samo obična HTML datoteka. Ovdje nisam koristio nikakvu otmjenu sintaksu Jinja2.

Nakon što završite s ovim korakom, spremite datoteku pritiskom na + x, nakon čega slijedi Y i .

Pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Knjiga s igrama trebala bi se uspješno izvoditi.

Kao što vidite, indeks.jinja2 predložak je izveden uporabom jezika predložaka Jinja2. Prikazani sadržaj treba kopirati u indeks.html datoteka udaljenih hostova.

Ispis varijabli u predlošku Jinja2

U svojim predlošcima Jinja2 možete koristiti odgovorne činjenice, varijable i korisnički definirane varijable.

Na predlošku Jinja2 možete ispisati vrijednost varijable pomoću varijabilnoime sintaksa. Ako je varijabla objekt, pojedinačna svojstva objekta možete ispisati pomoću objectVariable.ime_namjene sintaksa.

U primjeru koji slijedi ispisat ćemo datum vlasništvo ansible_date_time objekt u našem indeks.jinja2 predložak.

$ ansible all -u ansible -m setup | egrep --boja 'datum | vrijeme'

Prvo otvorite indeks.jinja2 datoteka predloška s nano uređivačem teksta, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Dodajte sljedeći redak u indeks.jinja2 datoteka predloška:

Stranica generirana ansible_date_time.datum

Konačni indeks.jinja2 datoteka bi trebala izgledati kao što je prikazano na snimci zaslona u nastavku.

Nakon što završite s ovim korakom, spremite datoteku pritiskom na + x, nakon čega slijedi Y i .

Pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kao što vidite, indeks.jinja2 Predložak je obrađen jezikom za predloške Jinja2 i zamijenjen je ansible_date_time.datum varijabla s datumom u GGGG-MM-DD format. Izlaz je zatim kopiran u indeks.html datoteku na udaljenom hostu.

Uvjetno ako je izjava u predlošku Jinja2

Jinja2 jezik predloška podržava uvjetni ako izjave. Možete provjeriti određene varijable prije ispisa bilo čega pomoću ako izjava.

Jinja2 ako sintaksa je sljedeća:

% ako je uvjet%
Učinite nešto ako je uvjet istinit
% završi ako %

Pogledajmo primjer Jinje2 ako izjava.

U ovom odjeljku pokazat ću Jinja2 ako izjava pomoću ansible_distribution činjenice varijabilne.

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

Prvo otvorite indeks.jinja2 Jinja2 predložak s nano uređivačem teksta, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Dalje, dodajte sljedeće retke u indeks.jinja2 datoteka predloška:

% if ansible_distribution == "Debian"%

Pokrećete Debian Linux


% završi ako %

Evo, provjerio sam je li ansible_distribution je Debian. Ako jest, ispišite niz

Pokrećete Debian Linux

. U suprotnom, nemojte ga ispisivati.

Napokon, indeks.jinja2 Datoteka predloška trebala bi izgledati kako je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Sada pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kao što vidite, na mom udaljenom hostu za Debian, indeks.html datoteka ima liniju

Pokrećete Debian Linux

. Međutim, na mom CentOS udaljenom hostu linija nije prisutna. Dakle, Jinja2 ako stanje radi.

Uvjetno: if-else izjava u predlošku Jinja2

Jinja2 jezik predloška podržava uvjetni ako-drugo izjave. Možete ispisati jednu stvar ako se uvjet podudara, a ispisati nešto drugo ako ne koristi ako-drugo izjava.

Jinja2 ako-drugo sintaksa je sljedeća:

% ako je uvjet%
Učinite nešto ako je uvjet istinit
% else%
Učinite nešto ako je stanje lažno
% završi ako %

Pogledajmo primjer Jinje2 ako-drugo izjava.

Prvo otvorite indeks.jinja2 Predložak Jinja2 s nano uređivačem teksta, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Dalje, dodajte sljedeće retke u indeks.jinja2 datoteka predloška:

% if ansible_distribution == "Debian"%

Pokrećete Debian Linux


% else%

Ne koristite Debian Linux


% završi ako %

Evo, provjerio sam je li ansible_distribution je Debian. Ako jest, ispišite niz

Pokrećete Debian Linux

. Inače, ispisujte

Ne koristite Debian Linux

.

Napokon, indeks.jinja2 Datoteka predloška trebala bi izgledati kao što je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kao što vidite, na mom udaljenom hostu za Debian, indeks.html datoteka ima liniju

Pokrećete Debian Linux

. Ali na mom CentOS udaljenom hostu, indeks.html datoteka ima liniju

Ne koristite Debian Linux

. Dakle, Jinja2 ako-drugo stanje radi.

Uvjetno: if-elif izjava u predlošku Jinja2

Jinja2 jezik predloška podržava uvjetni if-elif izjave.

Jinja2 if-elif sintaksa je sljedeća:

% ako je uvjet1%
Učinite nešto ako je uvjet1 istinit
% elif uvjet2%
Učinite nešto ako je uvjet2 istinit
% elif uvjet3%
Učinite nešto ako je uvjet3 istinit
..
% elif uvjetN%
Učinite nešto ako je uvjetN istinit
% else%
Učinite nešto ako nijedan od uvjeta nije istinit
% završi ako %

Evo, % else% odjeljak nije obavezan, ali postoji ako ga trebate.

Pogledajmo primjer Jinje2 if-elif izjava.

Prvo otvorite indeks.jinja2 Jinja2 predložak s nano uređivačem teksta, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Dalje, dodajte sljedeće retke u indeks.jinja2 datoteka predloška:

% if ansible_distribution == "Debian"%

Pokrećete Debian Linux


% elif ansible_distribution == "CentOS"%

Pokrećete CentOS Linux


% else%

Vaš operativni sustav nije podržan


% završi ako %

Evo, provjerio sam je li ansible_distribution je Debian. Ako jest, ispišite niz

Pokrećete Debian Linux

.

Također sam provjerio je li ansible_distribution je CentOS. Ako jest, ispišite niz

Pokrećete CentOS Linux

.

Inače, ispisujte

Vaš operativni sustav nije podržan

.

Napokon, indeks.jinja2 Datoteka predloška trebala bi izgledati kako je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kao što vidite, na mom udaljenom hostu za Debian, indeks.html datoteka ima liniju

Pokrećete Debian Linux

.

Na mom CentOS udaljenom hostu, indeks.html datoteka ima liniju

Pokrećete CentOS Linux

.

Da imam drugog udaljenog domaćina koji izvodi OS koji nije Debian ili CentOS, imao bi liniju

Vaš operativni sustav nije podržan

u indeks.html datoteka.

Dakle, Jinja2 if-elif stanje radi.

Petlje u predlošku Jinja2

Također možete ispisati nizove i objekte pomoću petlji u Jinja2.
Jinja2 za Sintaksa petlje je sljedeća:

% za varijabilnoIme u nizu%
Učinite nešto s variableName
% endfor%

Ovdje, u svakoj iteraciji niza poljeName, jedan od elemenata niza (počevši od početka niza) dodijeljen je varijabilnoName varijabilna. Pomoću ove varijable možete učiniti nešto unutar petlje.

Pogledajmo kako u sljedećem primjeru možete ispisati elemente niza u predlošku Jinja2.

Prvo otvorite copy_file_template1.yaml Odgovorna knjiga s nano uređivačem teksta, kako slijedi:

$ nano playbooks / copy_file_template1.yaml

Dalje, dodajte sljedeće retke u copy_file_template1.yaml datoteka playbook:

varira:
jelovnici:
- Dom
- Proizvodi
- O nama
- Kontaktirajte nas

Evo, dodao sam a jelovnici niz u copy_file_template1.yaml igraonica. Dalje, ispisat ću elemente niza pomoću petlje u mojem indeks.jinja2 Datoteka predloška Jinja2.

Napokon, copy_file_template1.yaml datoteka playbook trebala bi izgledati kao što je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Sada otvorite indeks.jinja2 Predložak Jinja2 s nano uređivačem teksta, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Dodajte sljedeće retke u indeks.jinja2 datoteka predloška:

Evo, generiram jednostavnu HTML navigacijsku traku pomoću Jinja2 za petlja. Petlja se ponavlja kroz jelovnici niz (koji sam definirao u copy_file_template1.yaml playbook) elemente i generira a izbornik stavka u svakoj iteraciji.

Napokon, indeks.jinja2 Datoteka predloška trebala bi izgledati kako je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kao što vidite, Jinja2 za petlja generirala je HTML navigacijsku traku (u indeks.html datoteka).

Također možete pristupiti nizu objekata u predlošku Jinja2.

Pogledajmo još jedan primjer.

Prvo otvorite copy_file_template1.yaml Odgovorna knjiga s nano uređivačem teksta, kako slijedi:

$ nano playbooks / copy_file_template1.yaml

Dalje, dodajte sljedeće retke u copy_file_template1.yaml datoteka playbook:

varira:
jelovnici:
- naziv: Početna
veza: / home
- naziv: Proizvodi
veza: / proizvodi
- ime: O nama
veza: / o-nama
- ime: Kontaktirajte nas
link: / kontaktirajte nas

Evo, dodao sam a jelovnici objektni niz u copy_file_template1.yaml igraonica. Svaki od ovih predmeta ima dva svojstva, a Ime imovine i a veza imovine.

Napokon, copy_file_template1.yaml datoteka playbook trebala bi izgledati kao što je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Otvori indeks.jinja2 Jinja2 predložak s nano uređivačem teksta, kako slijedi:

$ nano knjige / predlošci / indeks.jinja2

Dalje, dodajte sljedeće retke u indeks.jinja2 datoteka predloška:

Sve što ovdje vidite je isto kao u prethodnom primjeru. Jedina je razlika što ispisujem svojstva predmeta Ime (koristeći izbornik.Ime) i veza (koristeći izbornik.veza) u mojoj indeks.jinja2 Predložak Jinja2.

Napokon, indeks.jinja2 Datoteka predloška trebala bi izgledati kako je prikazano na snimci zaslona u nastavku.

Nakon što uredite datoteku, spremite je pritiskom na + x, nakon čega slijedi Y i .

Sada pokrenite knjigu s igrama copy_file_template1.yaml kako slijedi:

$ ansible-playbook playbooks / copy_file_template1.yaml

Kao što vidite, Jinja2 za petlja generirala je HTML navigacijsku traku (u indeks.html datoteka) iz niza objekata.

Što je sljedeće?

U ovom sam vam članku pokazao kako se koristi Ansible predložak modul i opisao neke od osnova jezika predložaka Jinja2. Posjetite službenu web stranicu Jinja2 da biste saznali više o jeziku predložaka Jinja2.

Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...
Kako prikazati OSD prekrivač u aplikacijama i igrama na cijelom zaslonu za Linux
Igranje igara preko cijelog zaslona ili upotreba aplikacija u režimu preko cijelog zaslona bez ometanja može vas odsjeći od relevantnih informacija o ...
Top 5 karata za hvatanje igara
Svi smo vidjeli i voljeli streaming reprodukcije na YouTubeu. PewDiePie, Jakesepticye i Markiplier samo su neki od najboljih igrača koji su zaradili m...