See artikkel näitab teile, kuidas rakendust Ansible kasutada mall moodul ja mõned Jinja2 mallikeele põhitõed. Alustame siis!
Eeldused
Kui soovite proovida selle artikli näiteid:
1) Teie arvutisse peab olema installitud Ansible.
2) Teil peab olema vähemalt Ubuntu / Debiani host või CentOS / RHEL 8 host, mis on konfigureeritud Ansible automatiseerimise jaoks.
LinuxHintis on palju artikleid, mis on pühendatud Ansible'i installimisele ja hostide konfigureerimisele Ansible'i automatiseerimiseks. Vajadusel võite ka need üle vaadata.
Võimatu projekti kataloogi seadistamine
Enne kui läheme edasi, on hea mõte luua projekti kataloogistruktuur, lihtsalt selleks, et asju natuke korrastada.
Projektikataloogi loomiseks mall-demo / ja kõik vajalikud alamkataloogid (teie praeguses töökataloogis), käivitage järgmine käsk:
$ mkdir -pv template-demo / playbooks / mallid
Kui projekti kataloog on loodud, navigeerige projekti kataloogi järgmiselt:
$ cd mall-demo /
Loo võõrustajad varude toimik järgmiselt:
$ nano hostid
Seejärel lisage oma hosti IP või DNS nimi (vm1.nodekite.com ja vm2.nodekite.com) inventeerimisfailis.
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Looge projekti kataloogi Ansible konfiguratsioonifail järgmiselt:
$ nano on võimalik.vrd
Seejärel tippige väljale järgmised read võimalik.vrd faili.
Kui see samm on lõpetatud, salvestage fail, vajutades
Siinkohal peaks projekti kataloog välja nägema järgmine:
$ puu
Nagu näete, on ka Ansible hostidele juurdepääsetav. Niisiis võime liikuda selle artikli järgmise jaotise juurde.
$ ansible all -u ansible -m ping
Ansible Template Module'i põhitõed
The mall mooduli Ansible aktsepteerib samu valikuid nagu koopia mooduli Ansible.
Ühine Ansible mall mooduli valikud:
src - Teie arvuti Jinja2 mallifaili tee, mida Jinja2 mallikeel sõelub ja kopeerib kaughostidesse.
dest - Sihttee kaughostidel, kuhu fail kopeeritakse.
omanik - Kaughostide faili omanik.
Grupp - Faili rühm kaughostidel.
režiimis - Failihalduse režiim kaughostides.
Vaatame ühte näidet.
Kõigepealt looge uus Ansible mänguraamat copy_file_template1.yaml aastal mänguraamatud / kataloogi järgmiselt:
$ nano playbooks / copy_file_template1.yaml
Seejärel tippige väljale järgmised read copy_file_template1.yaml mänguraamat.
- võõrustajad: kõikkasutaja: ansible
ülesanded:
- nimi: Kopeeri register.HTML-fail serverisse
mall:
src: indeks.jinja2
dest: / kodu / ansible / register.HTML
omanik: ansible
rühm: ansible
režiim: 0644
See mänguraamat kopeerib indeks.jinja2 fail failist mänguraamatud / mallid / kataloogi (teie projekti kataloogi suhtes) kaughostidele, kasutades rakendust Ansible mall moodul.
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Looge indeks.jinja2 mallifail mänguraamatud / mallid kataloogi järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Tippige väljale järgmised read indeks.jinja2 mallifail:
Tere tulemast Linuxhinti!
See on lihtsalt tavaline HTML-fail. Ma ei kasutanud siin mingit uhket Jinja2 süntaksit.
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Mänguraamat peaks edukalt töötama.
Nagu näete, indeks.jinja2 mall renderdati Jinja2 mallimiskeelt kasutades. Renderdatud sisu tuleks kopeerida indeks.HTML kaughostide fail.
Muutujate printimine Jinja2 malli
Jinja2 mallides saate kasutada Ansible fakte, muutujaid ja kasutaja määratletud muutujaid.
Jinja2 mallil saate printida muutuja väärtuse, kasutades muutujaNimi süntaks. Kui muutuja on objekt, saate printida üksikute objekti atribuudid, kasutades objektiMuutuv.kinnistu nimi süntaks.
Järgnevas näites printime kuupäev vara ansible_date_time objekt meie indeks.jinja2 mall.
$ ansible all -u ansible -m seadistamine | egrep - värv 'kuupäev | kellaaeg'
Esiteks avage indeks.jinja2 mallifail nano tekstiredaktoriga järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Lisage veergu järgmine rida indeks.jinja2 mallifail:
Leht on loodud ansible_date_time.kuupäev
Finaal indeks.jinja2 fail peaks välja nägema nagu alloleval ekraanipildil näidatud.
Kui olete selle sammu lõpetanud, salvestage fail, vajutades
Käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Nagu näete, indeks.jinja2 malli töödeldi Jinja2 mallikeelega ja asendati mall ansible_date_time.kuupäev muutuja kuupäevaga AAAA-KK-PP vormingus. Seejärel kopeeriti väljund indeks.HTML fail kaughosti.
Tingimuslik, kui avaldus Jinja2 mallis
Jinja2 mallikeel toetab tingimuslikku kui avaldused. Enne millegi printimist saate teatud muutujaid kontrollida kui avaldus.
Jinja2 kui süntaks on järgmine:
% kui tingimus%Tehke midagi, kui tingimus on tõene
% endif%
Vaatame Jinja2 näidet kui avaldus.
Selles osas demonstreerin Jinja2-d kui avalduse abil ansible_distribution faktide muutuja.
$ ansible all -u ansible -m seadistamine | egrep - värv "dist"
Esiteks avage indeks.jinja2 Jinja2 mall nano tekstiredaktoriga järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Järgmisena lisage jaotisse järgmised read indeks.jinja2 mallifail:
% if ansible_distribution == "Debian"%Käitate Debiani Linuxi
% endif%
Siin olen kontrollinud, kas ansible_distribution on Debian. Kui see on nii, printige string välja Käitate Debiani Linuxi
Lõpuks indeks.jinja2 mallifail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Nüüd käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Nagu näete, on minu Debiani kaughostis indeks.HTML failil on rida Käitate Debiani Linuxi
Tingimuslik: if-else avaldus Jinja2 mallis
Jinja2 mallikeel toetab tingimuslikku kui-veel avaldused. Saate printida ühe asja, kui tingimus vastab, ja printida midagi muud, kui see ei kasuta kui-veel avaldus.
Jinja2 kui-veel süntaks on järgmine:
% kui tingimus%Tehke midagi, kui tingimus on tõene
% veel%
Tehke midagi, kui tingimus on vale
% endif%
Vaatame Jinja2 näidet kui-veel avaldus.
Esiteks avage indeks.jinja2 Jinja2 mall nano tekstiredaktoriga järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Järgmisena lisage jaotisse järgmised read indeks.jinja2 mallifail:
% if ansible_distribution == "Debian"%Käitate Debiani Linuxi
% veel%
Te ei käivita Debiani Linuxi
% endif%
Siin olen kontrollinud, kas ansible_distribution on Debian. Kui see on nii, siis printige string välja Käitate Debiani Linuxi Te ei käivita Debiani Linuxi
Lõpuks indeks.jinja2 mallifail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Nagu näete, on minu Debiani kaughostis indeks.HTML failil on rida Käitate Debiani Linuxi Te ei käivita Debiani Linuxi
Tingimuslik: if-elifi avaldus Jinja2 mallis
Jinja2 mallimiskeel toetab tingimuslikku if-elif avaldused.
Jinja2 if-elif süntaks on järgmine:
% kui tingimus1%Tehke midagi, kui tingimus1 on tõene
% elif tingimus2%
Tehke midagi, kui tingimus2 on tõene
% elif tingimus3%
Tehke midagi, kui tingimus3 on tõene
…
% elif tingimusN%
Tehke midagi, kui tingimus N on tõene
% veel%
Tehke midagi, kui ükski tingimustest ei vasta
% endif%
Siin, % veel% jaotis on valikuline, kuid see on olemas, kui seda vajate.
Vaatame Jinja2 näidet if-elif avaldus.
Esiteks avage indeks.jinja2 Jinja2 mall nano tekstiredaktoriga järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Järgmisena lisage jaotisse järgmised read indeks.jinja2 mallifail:
% if ansible_distribution == "Debian"%Käitate Debiani Linuxi
% elif ansible_distribution == "CentOS"%
Kasutate CentOS Linuxi
% veel%
Teie operatsioonisüsteemi ei toetata
% endif%
Siin olen kontrollinud, kas ansible_distribution on Debian. Kui see on nii, siis printige string välja Käitate Debiani Linuxi
Olen ka kontrollinud, kas ansible_distribution on CentOS. Kui see on nii, printige string välja Kasutate CentOS Linuxi
Muul juhul printige Teie operatsioonisüsteemi ei toetata
Lõpuks indeks.jinja2 mallifail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Nagu näete, on minu Debiani kaughostis indeks.HTML failil on rida Käitate Debiani Linuxi
Minu CentOS-i kaughostis indeks.HTML failil on rida Kasutate CentOS Linuxi
Kui mul oleks mõni muu kaughost, mis käitab muud OS-i kui Debian või CentOS, oleks sellel ka rida Teie operatsioonisüsteemi ei toetata
Niisiis, Jinja2 if-elif seisukord töötab.
Silmused Jinja2 mallis
Massiive ja objekte saab printida ka Jinja2 silmuste abil.
Jinja2 eest silmuse süntaks on järgmine:
Tehke midagi muutujaga nameName
% endfor%
Siin, massiivi igas iteratsioonis arrayName, üks massiivi elementidest (alates massiivi algusest) on määratud muutujaNimi muutuv. Selle muutujaga aasas saate midagi teha.
Vaatame, kuidas saate järgmises näites massiivielemente oma Jinja2 mallile printida.
Esiteks avage copy_file_template1.yaml Järgmine nano tekstiredaktoriga käsiraamat:
$ nano playbooks / copy_file_template1.yaml
Järgmisena lisage jaotisse järgmised read copy_file_template1.yaml esitusraamatu fail:
vars:menüüd:
- Kodu
- Tooted
- Meist
- Võta meiega ühendust
Siia olen lisanud a menüüd massiiv copy_file_template1.yaml mänguraamat. Järgmisena trükin massiivi elemendid minu silmusesse indeks.jinja2 Jinja2 mallifail.
Lõpuks copy_file_template1.yaml esitusraamatu fail peaks välja nägema alloleval ekraanipildil näidatud viisil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Nüüd avage indeks.jinja2 Jinja2 mall nano tekstiredaktoriga järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Lisage veergu järgmised read indeks.jinja2 mallifail:
Siin genereerin Jinja2 abil lihtsa HTML-i navigeerimisriba eest silmus. Silmus kordub läbi menüüd massiiv (mille olen määranud copy_file_template1.yaml playbook) elemente ja genereerib a menüü üksus igas iteratsioonis.
Lõpuks indeks.jinja2 mallifail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Nagu näete, Jinja2 eest tsükkel genereeris HTML-i navigeerimisriba ( indeks.HTML fail).
Juurdepääsu saab ka oma Jinja2 malli objektide massiivile.
Vaatame veel ühte näidet.
Esiteks avage copy_file_template1.yaml Järgmine nano tekstiredaktoriga käsiraamat:
$ nano playbooks / copy_file_template1.yaml
Järgmisena lisage jaotisse järgmised read copy_file_template1.yaml esitusraamatu fail:
vars:menüüd:
- nimi: Kodu
link: / kodu
- nimi: Tooted
link: / tooted
- nimi: Meie kohta
link: / meie kohta
- nimi: võtke meiega ühendust
link: / võtke meiega ühendust
Siia olen lisanud a menüüd objektimassiiv copy_file_template1.yaml mänguraamat. Igal neist objektidest on kaks omadust, a nimi vara ja a link vara.
Lõpuks copy_file_template1.yaml esitusraamatu fail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Ava indeks.jinja2 Jinja2 mall nano tekstiredaktoriga järgmiselt:
$ nano mänguraamatud / mallid / register.jinja2
Järgmisena lisage jaotisse järgmised read indeks.jinja2 mallifail:
Kõik, mida siin näete, on sama mis eelmises näites. Ainus erinevus on see, et ma printin objekti omadusi nimi (kasutades menüü.nimi) ja link (kasutades menüü.link) Minu indeks.jinja2 Jinja2 mall.
Lõpuks indeks.jinja2 mallifail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.
Kui olete faili redigeerinud, salvestage fail, vajutades
Nüüd käivitage mänguraamat copy_file_template1.yaml järgnevalt:
$ ansible-playbook playbooks / copy_file_template1.yaml
Nagu näete, Jinja2 eest tsükkel genereeris HTML-i navigeerimisriba ( indeks.HTML fail) objektide massiivist.
Mis järgmiseks?
Selles artiklis olen teile näidanud, kuidas rakendust Ansible kasutada mall moodul ja kirjeldas Jinja2 mallimiskeele põhitõdesid. Külastage Jinja2 ametlikku veebisaiti, et saada lisateavet Jinja2 mallikeele kohta.