Võimalik

Kuidas kasutada ansible malli moodulit

Kuidas kasutada ansible malli moodulit
Võimatu mall moodulit kasutatakse peamiselt failide kopeerimiseks kliendist Ansible (kuhu on installitud Ansible) ansible hostidesse (haldab Ansible). Kasutamise eelis mall moodul, mitte koopia moodul on see, et see on võimalik mall moodul saab kasutada Jinja2 mallimiskeelt. Jinja2 on võimas Pythoni mallikeel, mille kaudu saate genereerida konfiguratsioonifaile, veebilehti jne. Jinja2 mallides saate kasutada ka Ansible fact muutujaid, tsükleid ja tingimusi.

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 + X, järgneb Y ja .

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 + X, järgneb Y ja .

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õik
kasutaja: 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 + X, järgneb Y ja .

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:




Jinja2 malli demo


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 + X, järgneb Y ja .

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 + X, järgneb Y ja .

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

. Vastasel juhul ärge printige seda.

Lõpuks indeks.jinja2 mallifail peaks välja nägema nii, nagu on näidatud alloleval ekraanipildil.

Kui olete faili redigeerinud, salvestage fail, vajutades + X, järgneb Y ja .

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

. Kuid minu CentOS-i kaughostil pole liini olemas. Niisiis, Jinja2 kui seisukord töötab.

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

. Muul juhul printige

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 + X, järgneb Y ja .

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

. Kuid minu CentOS-i kaughostis on indeks.HTML failil on rida

Te ei käivita Debiani Linuxi

. Niisiis, Jinja2 kui-veel seisukord töötab.

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 + X, järgneb Y ja .

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

aastal indeks.HTML faili.

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:

% muutujale Nimi massiiviNimi%
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 + X, järgneb Y ja .

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 + X, järgneb Y ja .

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 + X, järgneb Y ja .

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 + X, järgneb Y ja .

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.

Microsoft Sculpt Touch juhtmeta hiirte ülevaade
Lugesin hiljuti Microsoft Sculpt Touch juhtmevaba hiir ja otsustas selle osta. Pärast mõnda aega kasutamist otsustasin jagada sellega oma kogemusi. Se...
Rakenduse AppyMouse ekraanipaneel ja hiirekursor Windowsi tahvelarvutitele
Tahvelarvutite kasutajad tunnevad hiirekursorit sageli puudust, eriti kui neil on kombeks sülearvuteid kasutada. Puutetundliku ekraaniga nutitelefonid...
Hiire keskmine nupp ei tööta Windows 10-s
The hiire keskmine nupp aitab teil sirvida pikki rohke andmega veebisaite ja ekraane. Kui see peatub, siis lõpuks kasutate kerimiseks klaviatuuri, mis...