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
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
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: svikorisnik: 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
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:
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
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
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
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
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
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 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
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 Ne koristite Debian Linux
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
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
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:
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
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
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
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
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.