Lehetséges

Az Ansible Template Module használata

Az Ansible Template Module használata
Az Ansible sablon modult főleg fájlok másolására használják az Ansible kliensről (ahol az Ansible telepítve van) az Ansible hosztokra (az Ansible kezeli). A sablon modul helyett másolat modul, az az Ansible sablon modul használhatja a Jinja2 sablonnyelvet. Jinja2 egy erőteljes Python sablonnyelv, amelyen keresztül konfigurációs fájlokat, weboldalakat stb. generálhat. A Jinja2 sablonokban használhatja az Ansible fact változókat, ciklusokat és feltételeket is.

Ez a cikk bemutatja az Ansible használatát sablon modul és a Jinja2 sablonnyelv néhány alapja. Tehát kezdjük!

Előfeltételek


Ha szeretné kipróbálni a cikk példáit:

1) A számítógépére telepítve kell lennie az Ansible programnak.

2) Legalább Ubuntu / Debian vagy CentOS / RHEL 8 gazdagéppel kell rendelkeznie az Ansible automatizáláshoz.

A LinuxHint-en számos cikk foglalkozik az Ansible telepítésével és a gazdagépek konfigurálásával az Ansible automatizáláshoz. Szükség esetén ezeket is megnézheti.

Ansible Project Directory beállítása

Mielőtt továbblépnénk, célszerű létrehozni egy projekt könyvtárstruktúrát, csak azért, hogy a dolgokat egy kicsit rendben tartsuk.

Projekt könyvtár létrehozása template-demo / és az összes szükséges alkönyvtárat (az aktuális munkakönyvtárban), futtassa a következő parancsot:

$ mkdir -pv template-demo / playbooks / templates

A projektkönyvtár létrehozása után lépjen a projektkönyvtárba az alábbiak szerint:

$ cd template-demo /

Hozzon létre egy otthont ad leltárállomány, az alábbiak szerint:

$ nano házigazdák

Ezután adja hozzá a gazdagép IP vagy DNS nevét (vm1.nodekite.com és vm2.nodekite.com) a leltárállományban.

Miután befejezte ezt a lépést, mentse el a fájlt a megnyomásával + x, utána Y és .

Hozzon létre egy Ansible konfigurációs fájlt a projektkönyvtárban, az alábbiak szerint:

$ nano ansible.vö

Ezután írja be a következő sorokat a lehetséges.vö fájl.

Miután befejezte ezt a lépést, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Ezen a ponton a projektkönyvtárnak a következőképpen kell kinéznie:

$ fa

Amint láthatja, az Ansible hosztok is elérhetők. Tehát folytathatjuk a cikk következő szakaszát.

$ ansible all -u ansible -m ping

Egy lehetséges sablon modul alapjai

A sablon Az Ansible modul ugyanazokat az opciókat fogadja el, mint az másolat modulja az Ansible.

Közös Ansible sablon modul opciók:

src - A számítógépen található Jinja2 sablonfájl útvonala, amelyet a Jinja2 sablonnyelv elemez és átmásol a távoli gazdagépekre.
rend - A távoli állomáson a cél elérési útja, ahová a fájlt átmásolja.
tulajdonos - A fájl tulajdonosa a távoli gazdagépeken.
csoport - A fájl csoportja a távoli gazdagépeken.
mód - A fájlengedélyezési mód a távoli gazdagépeken.

Nézzünk meg egy példát.

Először hozzon létre egy új Ansible játékkönyvet copy_file_template1.yaml ban,-ben játékkönyvek / könyvtárat, az alábbiak szerint:

$ nano playbooks / copy_file_template1.yaml

Ezután írja be a következő sorokat a copy_file_template1.yaml játékkönyv.

- házigazdák: mind
felhasználó: ansible
feladatok:
- név: Index másolása.html fájl a szerverre
sablon:
src: index.jinja2
dest: / home / ansible / index.html
tulajdonos: ansible
csoport: lehetséges
mód: 0644

Ez a játékkönyv másolja a index.jinja2 fájl a játékkönyvek / sablonok / könyvtárat (a projekt könyvtárához képest) a távoli gazdagépekre az Ansible segítségével sablon modul.

Miután végzett ezzel a lépéssel, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Hozza létre a index.jinja2 sablonfájl a játékkönyvek / sablonok könyvtárat, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Írja be a következő sorokat a index.jinja2 sablon fájl:




Jinja2 Template Demo


Üdvözli a Linuxhint!



Ez csak egy sima HTML fájl. Nem használtam itt semmiféle Jinja2 szintaxist.

Miután végzett ezzel a lépéssel, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

A játékkönyvnek sikeresen futnia kell.

Mint láthatja, a index.jinja2 a sablont a Jinja2 sablonnyelv használatával renderelték. A renderelt tartalmat át kell másolni a index.html a távoli gazdagépek fájlja.

Változók nyomtatása Jinja2 sablonban

A Jinja2 sablonokban használhat Ansible tényeket, változókat és felhasználó által definiált változókat.

A Jinja2 sablonján kinyomtathatja egy változó értékét a változóNév szintaxis. Ha a változó objektum, akkor az objektum egyes tulajdonságait kinyomtathatja objectVariable.ingatlan neve szintaxis.

Az alábbi példában kinyomtatjuk a dátum tulajdona ansible_date_time tárgy a mi index.jinja2 sablon.

$ ansible all -u ansible -m beállítás | egrep - 'date | time' szín

Először nyissa meg a index.jinja2 sablonfájl a nano szövegszerkesztővel, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Adja hozzá a következő sort a index.jinja2 sablon fájl:

Az oldal létrehozásának dátuma: ansible_date_time.dátum

A végső index.jinja2 a fájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután befejezte ezt a lépést, mentse el a fájlt a megnyomásával + x, utána Y és .

Futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

Mint láthatja, a index.jinja2 sablont a Jinja2 sablonnyelv dolgozta fel, és felváltotta a ansible_date_time.dátum változó a dátummal ÉÉÉÉ-HH-NN formátum. A kimenetet ezután átmásolta a index.html fájl a távoli gazdagépen.

Feltételes, ha nyilatkozat a Jinja2 sablonban

A Jinja2 sablonnyelv támogatja a feltételeset ha nyilatkozatok. A. Használatával ellenőrizhet bizonyos változásokat, mielőtt bármit kinyomtatna ha nyilatkozat.

A Jinja2 ha a szintaxis a következő:

%, ha a feltétel%
Tegyen valamit, ha a feltétel igaz
% endif%

Lássunk egy példát a Jinja2-re ha nyilatkozat.

Ebben a részben bemutatom a Jinja2-t ha utasítás a ansible_distribution tények változó.

$ ansible all -u ansible -m beállítás | egrep --color 'dist'

Először nyissa meg a index.jinja2 Jinja2 sablon a nano szövegszerkesztővel, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Ezután adja hozzá a következő sorokat a index.jinja2 sablon fájl:

% if ansible_distribution == "Debian"%

A Debian Linuxot futtatja


% endif%

Itt ellenőriztem ansible_distribution van Debian. Ha igen, akkor nyomtassa ki a karakterláncot

A Debian Linuxot futtatja

. Ellenkező esetben ne nyomtassa ki.

Végül a index.jinja2 a sablonfájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Most futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

Amint láthatja, a Debian távoli gazdagépemen a index.html fájlban van a sor

A Debian Linuxot futtatja

. A CentOS távoli gazdagépemen azonban a vonal nincs jelen. Tehát, a Jinja2 ha állapot működik.

Feltételes: if-else nyilatkozat a Jinja2 sablonban

A Jinja2 sablonnyelv támogatja a feltételeset ha más nyilatkozatok. Kinyomtathat egy dolgot, ha a feltétel megegyezik, és mást nyomtathat, ha nem használja a ha más nyilatkozat.

A Jinja2 ha más a szintaxis a következő:

%, ha a feltétel%
Tegyen valamit, ha a feltétel igaz
% más %
Tegyen valamit, ha a feltétel hamis
% endif%

Lássunk egy példát a Jinja2-re ha más nyilatkozat.

Először nyissa meg a index.jinja2 Jinja2 sablon a nano szövegszerkesztővel, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Ezután adja hozzá a következő sorokat a index.jinja2 sablon fájl:

% if ansible_distribution == "Debian"%

A Debian Linuxot futtatja


% más %

Nem fut a Debian Linux


% endif%

Itt ellenőriztem ansible_distribution van Debian. Ha igen, akkor nyomtassa ki a karakterláncot

A Debian Linuxot futtatja

. Ellenkező esetben nyomtasson

Nem fut a Debian Linux

.

Végül a index.jinja2 a sablonfájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

Amint láthatja, a Debian távoli gazdagépemen a index.html fájlban van a sor

A Debian Linuxot futtatja

. De a CentOS távoli gazdagépemen az index.html fájlban van a sor

Nem fut a Debian Linux

. Tehát, a Jinja2 ha más állapot működik.

Feltételes: if-elif nyilatkozat a Jinja2 sablonban

A Jinja2 sablonnyelv támogatja a feltételeset if-elif nyilatkozatok.

A Jinja2 if-elif a szintaxis a következő:

%, ha feltétel1%
Tegyen valamit, ha a feltétel1 igaz
% elif feltétel2%
Tegyen valamit, ha a feltétel2 igaz
% elif feltétel3%
Tegyen valamit, ha a feltétel3 igaz

% elif feltételN%
Tegyen valamit, ha a feltétel N igaz
% más %
Tegyen valamit, ha egyik feltétel sem teljesül
% endif%

Itt a % más % szakasz nem kötelező, de ott van, ha szüksége van rá.

Lássunk egy példát a Jinja2-re if-elif nyilatkozat.

Először nyissa meg a index.jinja2 Jinja2 sablon a nano szövegszerkesztővel, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Ezután adja hozzá a következő sorokat a index.jinja2 sablon fájl:

% if ansible_distribution == "Debian"%

A Debian Linuxot futtatja


% elif ansible_distribution == "CentOS"%

A CentOS Linuxot futtatja


% más %

Az operációs rendszer nem támogatott


% endif%

Itt ellenőriztem ansible_distribution van Debian. Ha igen, akkor nyomtassa ki a karakterláncot

A Debian Linuxot futtatja

.

Azt is megnéztem, hogy ansible_distribution van CentOS. Ha igen, akkor nyomtassa ki a karakterláncot

A CentOS Linuxot futtatja

.

Ellenkező esetben nyomtasson

Az operációs rendszer nem támogatott

.

Végül a index.jinja2 a sablonfájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

Amint láthatja, a Debian távoli gazdagépemen a index.html fájlban van a sor

A Debian Linuxot futtatja

.

A CentOS távoli gazdagépemen az index.html fájlban van a sor

A CentOS Linuxot futtatja

.

Ha lenne egy másik távoli gazdagépem, amely a Debianon vagy a CentOS-tól eltérő operációs rendszert futtatna, akkor megvan a sor

Az operációs rendszer nem támogatott

ban,-ben index.html fájl.

Tehát, a Jinja2 if-elif állapot működik.

Hurkok a Jinja2 sablonban

A tömböket és az objektumokat a Jinja2 hurkok segítségével is kinyomtathatja.
A Jinja2 mert hurok szintaxisa a következő:

% a változóNévhez a tömbNévben%
Csináljon valamit a változónévvel
% endfor%

Itt, a tömb minden egyes iterációjában arrayName, az egyik tömb elem (a tömb elejétől kezdve) az változóNév változó. Ezzel a változóval a hurok belsejében tehet valamit.

Nézzük meg, hogyan nyomtathat tömb elemeket a Jinja2 sablonba a következő példában.

Először nyissa meg a copy_file_template1.yaml Lehetséges játékkönyv a nano szövegszerkesztővel, az alábbiak szerint:

$ nano playbooks / copy_file_template1.yaml

Ezután adja hozzá a következő sorokat a copy_file_template1.yaml playbook fájl:

változatok:
menük:
- itthon
- Termékek
- Rólunk
- Lépjen kapcsolatba velünk

Itt adtam hozzá a menük tömb a copy_file_template1.yaml játékkönyv. Ezután kinyomtatom a tömb elemeket egy hurok használatával index.jinja2 Jinja2 sablonfájl.

Végül a copy_file_template1.yaml a playbook fájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Nyissa meg a index.jinja2 Jinja2 sablon a nano szövegszerkesztővel, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Adja hozzá a következő sorokat a index.jinja2 sablon fájl:

Itt létrehozok egy egyszerű HTML navigációs sávot egy Jinja2 segítségével mert hurok. A hurok a menük tömb (amelyet a copy_file_template1 fájlban definiáltam.yaml playbook) elemeket és generál a menü elem minden iterációban.

Végül a index.jinja2 a sablonfájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

Mint látható, a Jinja2 mert ciklus létrehozott egy HTML navigációs sávot (a index.html fájl).

A Jinja2 sablonban objektumok tömbjéhez is hozzáférhet.

Lássunk egy másik példát.

Először nyissa meg a copy_file_template1.yaml Lehetséges játékkönyv a nano szövegszerkesztővel, az alábbiak szerint:

$ nano playbooks / copy_file_template1.yaml

Ezután adja hozzá a következő sorokat a copy_file_template1.yaml playbook fájl:

változatok:
menük:
- név: Otthon
link: / home
- név: Termékek
link: / termékek
- név: Rólunk
link: / rólunk
- név: Lépjen kapcsolatba velünk
link: / contact-us

Itt adtam hozzá a menük objektumtömb a copy_file_template1.yaml játékkönyv. Ezen objektumok mindegyikének két tulajdonsága van, a név ingatlan és a link ingatlan.

Végül a copy_file_template1.yaml a playbook fájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Nyissa meg a index.jinja2 Jinja2 sablon a nano szövegszerkesztővel, az alábbiak szerint:

$ nano játékkönyvek / sablonok / index.jinja2

Ezután adja hozzá a következő sorokat a index.jinja2 sablon fájl:

Minden, amit itt lát, ugyanaz, mint az előző példában. Az egyetlen különbség az, hogy az objektum tulajdonságait nyomtatom név (használatával menü.név) és link (használatával menü.link) az én index.jinja2 Jinja2 sablon.

Végül a index.jinja2 a sablonfájlnak az alábbi képernyőképen látható módon kell kinéznie.

Miután szerkesztette a fájlt, a gomb megnyomásával mentse el a fájlt + x, utána Y és .

Most futtassa a játékkönyvet copy_file_template1.yaml alábbiak szerint:

$ ansible-playbook playbooks / copy_file_template1.yaml

Mint látható, a Jinja2 mert ciklus létrehozott egy HTML navigációs sávot (a index.html fájl) objektumok tömbjéből.

Mi a következő lépés?

Ebben a cikkben megmutattam, hogyan kell használni az Ansible-t sablon modult, és ismertette a Jinja2 sablonnyelv néhány alapját. Látogasson el a Jinja2 hivatalos weboldalára, hogy többet tudjon meg a Jinja2 sablon nyelvéről.

Az FPS növelése Linux alatt?
Az FPS jelentése Képkocka másodpercenként. Az FPS feladata a videolejátszások vagy játékteljesítmények képkockasebességének mérése. Egyszerű szavakkal...
A legnépszerűbb Oculus App Lab játékok
Ha Oculus fülhallgató-tulajdonos, akkor tisztában kell lennie az oldalsó töltéssel. Az oldaltöltés a nem áruházi tartalom fejhallgatóra történő telepí...
A legjobb 10 játék az Ubuntuban
A Windows platform a játékok egyik domináns platformja volt, mivel a játékokat hatalmas százalékban fejlesztik ma a natív Windows támogatására. Kihívh...