Možné

Ako používať Ansible Template Module

Ako používať Ansible Template Module
To možné šablóna modul sa používa hlavne na kopírovanie súborov z klienta Ansible (kde je nainštalovaný Ansible) na hostiteľov Ansible (spravovaných Ansible). Výhodou použitia šablóna skôr ako modul kópia modul, je to možné šablóna modul môže používať šablónový jazyk Jinja2. Jinja2 je mocný šablónový jazyk Pythonu, prostredníctvom ktorého môžete generovať konfiguračné súbory, webové stránky atď. Vo svojich šablónach Jinja2 môžete tiež použiť premenné, slučky a podmienky Ansible Facts.

Tento článok vám ukáže, ako používať Ansible šablóna modul a niektoré základy šablónového jazyka Jinja2. Takže poďme na to!

Predpoklady


Ak si chcete vyskúšať príklady v tomto článku:

1) Musíte mať v počítači nainštalovaný program Ansible.

2) Musíte mať aspoň hostiteľa Ubuntu / Debian alebo hostiteľa CentOS / RHEL 8 nakonfigurovaného na automatizáciu Ansible.

Existuje veľa článkov o LinuxHint venovaných inštalácii Ansible a konfigurácii hostiteľov pre automatizáciu Ansible. V prípade potreby ich môžete tiež skontrolovať.

Nastavenie možného adresára projektu

Predtým, ako sa posunieme ďalej, je dobré vytvoriť adresárovú štruktúru projektu, aby bola situácia trochu organizovaná.

Vytvorenie adresára projektu šablóna-ukážka / a všetky požadované podadresáre (vo vašom aktuálnom pracovnom adresári), spustite nasledujúci príkaz:

$ mkdir -pv šablóna-ukážka / príručky / šablóny

Po vytvorení adresára projektu prejdite do adresára projektu takto:

$ cd šablóna-ukážka /

Vytvor hostitelia inventárny súbor, a to nasledovne:

$ nano hostitelia

Potom pridajte adresu IP alebo DNS hostiteľa (vm1.nodekite.com a vm2.nodekite.com) v inventárnom súbore.

Po dokončení tohto kroku uložte súbor stlačením + X, nasledovaný Y a .

V adresári projektu vytvorte konfiguračný súbor Ansible:

$ nano zodpovedné.porov

Potom zadajte nasledujúce riadky do zodpovedné.porov spis.

Po dokončení tohto kroku uložte súbor stlačením + X, nasledovaný Y a .

V tomto okamihu by mal adresár projektu vyzerať takto:

$ strom

Ako vidíte, hostitelia Ansible sú tiež prístupní. Môžeme teda prejsť na ďalšiu časť tohto článku.

$ ansible všetko -u ansible -m ping

Základy možného modulu šablón

The šablóna modul Ansible prijíma rovnaké možnosti ako kópia modul Ansible.

Bežné možné šablóna možnosti modulu:

src - Cesta k súboru šablóny Jinja2 vo vašom počítači, ktorá bude analyzovaná šablónovacím jazykom Jinja2 a skopírovaná do vzdialených hostiteľov.
cieľ - Cieľová cesta na vzdialených hostiteľoch, na ktorú sa súbor skopíruje.
vlastník - Vlastník súboru na vzdialených hostiteľoch.
skupina - Skupina súboru na vzdialených hostiteľoch.
režim - Režim povolení súborov na vzdialených hostiteľoch.

Pozrime sa na príklad.

Najskôr si vytvorte nový playbook Ansible copy_file_template1.yaml v knihy o hre / adresár takto:

$ nano playbooks / copy_file_template1.yaml

Potom zadajte nasledujúce riadky do copy_file_template1.yaml hracia kniha.

- hostitelia: všetci
užívateľ: zodpovedný
úlohy:
- názov: Kopírovať index.html súbor na server
šablóna:
src: index.jinja2
cieľ: / domov / zodpovedný / index.html
vlastník: zodpovedný
skupina: zodpovedná
režim: 0644

Táto príručka bude kopírovať index.jinja2 súbor z príručky / šablóny / adresára (vo vzťahu k vášmu adresáru projektu) vzdialeným hostiteľom pomocou Ansible šablóna modul.

Po dokončení tohto kroku uložte súbor stlačením + X, nasledovaný Y a .

Vytvorte index.jinja2 súbor so šablónou v priečinku playbooky / šablóny adresár takto:

$ nano playbooks / templates / index.jinja2

Zadajte nasledujúce riadky do index.jinja2 súbor šablóny:




Ukážka šablóny Jinja2


Vitajte v Linuxhint!



Toto je obyčajný súbor HTML. Nepoužíval som tu nijakú vymyslenú syntax Jinja2.

Po dokončení tohto kroku uložte súbor stlačením + X, nasledovaný Y a .

Spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Príručka by sa mala úspešne spustiť.

Ako vidíte, index.jinja2 šablóna bola vykreslená pomocou šablónového jazyka Jinja2. Vykreslený obsah by sa mal skopírovať do priečinka index.html súbor vzdialených hostiteľov.

Tlač premenných v šablóne Jinja2

Vo svojich šablónach Jinja2 môžete použiť možné fakty, premenné a používateľom definované premenné.

Na svojej šablóne Jinja2 môžete tlačiť hodnotu premennej pomocou variableName syntax. Ak je premenná objekt, môžete tlačiť vlastnosti jednotlivých objektov pomocou objectVariable.propertyName syntax.

V nasledujúcom príklade vytlačíme dátum majetok ansible_date_time objekt v našom index.jinja2 šablóna.

$ ansible všetko -u ansible -m nastavenie | egrep --color 'date | time'

Najskôr otvorte index.jinja2 súbor šablón pomocou nano textového editora:

$ nano playbooks / templates / index.jinja2

Pridajte nasledujúci riadok do index.jinja2 súbor šablóny:

Stránka vygenerovaná ansible_date_time.dátum

Finálny index.jinja2 súbor by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po dokončení tohto kroku uložte súbor stlačením + X, nasledovaný Y a .

Spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Ako vidíte, index.jinja2 šablóna bola spracovaná šablónovacím jazykom Jinja2 a nahradila ansible_date_time.dátum premenná s dátumom v RRRR-MM-DD formát. Výstup bol potom skopírovaný do index.html súbor na vzdialenom hostiteľovi.

Podmienené, ak je vyhlásenie v šablóne Jinja2

Jazyk šablóny Jinja2 podporuje podmienené ak Vyhlásenia. Pred tlačením ktoréhokoľvek z nich môžete skontrolovať určité premenné pomocou ak vyhlásenie.

2. Jinja ak syntax je nasledovná:

% if condition%
Ak je podmienka pravdivá, urobte niečo
% koniec Ak %

Pozrime sa na príklad Jinja2 ak vyhlásenie.

V tejto časti predvediem Jinja2 ak vyhlásenie pomocou ansible_distribution fakty premenná.

$ ansible všetko -u ansible -m nastavenie | egrep --color 'dist'

Najskôr otvorte index.jinja2 Šablóna Jinja2 s nano textovým editorom:

$ nano playbooks / templates / index.jinja2

Ďalej pridajte nasledujúce riadky do súboru index.jinja2 súbor šablóny:

% if ansible_distribution == "Debian"%

Používate Debian Linux


% koniec Ak %

Tu som skontroloval, či ansible_distribution je Debian. Ak je, vytlačte reťazec

Používate Debian Linux

. V opačnom prípade to netlačte.

Nakoniec index.jinja2 súbor šablóny by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Teraz spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Ako vidíte, na mojom vzdialenom hostiteľovi Debianu je index.html súbor má riadok

Používate Debian Linux

. Na mojom vzdialenom hostiteľovi CentOS však linka nie je k dispozícii. Takže Jinja2 ak stav funguje.

Podmienené: Vyhlásenie if-else v šablóne Jinja2

Jazyk šablóny Jinja2 podporuje podmienené keby-inak Vyhlásenia. Ak sa stav zhoduje, môžete vytlačiť jednu vec a ak nepoužíva znak, môžete vytlačiť niečo iné keby-inak vyhlásenie.

2. Jinja keby-inak syntax je nasledovná:

% if condition%
Ak je podmienka pravdivá, urobte niečo
% else%
Ak je podmienka nesprávna, urobte niečo
% koniec Ak %

Pozrime sa na príklad Jinja2 keby-inak vyhlásenie.

Najskôr otvorte index.jinja2 Šablóna Jinja2 s nano textovým editorom:

$ nano playbooks / templates / index.jinja2

Ďalej pridajte nasledujúce riadky do súboru index.jinja2 súbor šablóny:

% if ansible_distribution == "Debian"%

Používate Debian Linux


% else%

Nepoužívate Debian Linux


% koniec Ak %

Tu som skontroloval, či ansible_distribution je Debian. Ak je, vytlačte reťazec

Používate Debian Linux

. Inak tlačte

Nepoužívate Debian Linux

.

Nakoniec index.jinja2 súbor šablóny by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Ako vidíte, na mojom vzdialenom hostiteľovi Debianu je index.html súbor má riadok

Používate Debian Linux

. Ale na mojom vzdialenom hostiteľovi CentOS je index.html súbor má riadok

Nepoužívate Debian Linux

. Takže Jinja2 keby-inak stav funguje.

Podmienené: vyhlásenie if-elif v šablóne Jinja2

Jazyk šablóny Jinja2 podporuje podmienené keby-elif Vyhlásenia.

2. Jinja keby-elif syntax je nasledovná:

% ak podmienka1%
Ak je podmienka1 pravdivá, urobte niečo
% elif condition2%
Ak je podmienka2 pravdivá, urobte niečo
% elif condition3%
Ak je podmienka3 pravdivá, urobte niečo

% elif conditionN%
Ak je podmienka N pravdivá, urobte niečo
% else%
Urobte niečo, ak nie je splnená žiadna z podmienok
% koniec Ak %

Tu je % else% časť je voliteľná, ale je tam, ak ju potrebujete.

Pozrime sa na príklad Jinja2 keby-elif vyhlásenie.

Najskôr otvorte index.jinja2 Šablóna Jinja2 s nano textovým editorom:

$ nano playbooks / templates / index.jinja2

Ďalej pridajte nasledujúce riadky do súboru index.jinja2 súbor šablóny:

% if ansible_distribution == "Debian"%

Používate Debian Linux


% elif ansible_distribution == "CentOS"%

Používate systém CentOS Linux


% else%

Váš operačný systém nie je podporovaný


% koniec Ak %

Tu som skontroloval, či ansible_distribution je Debian. Ak je, vytlačte reťazec

Používate Debian Linux

.

Tiež som skontroloval, či ansible_distribution je CentOS. Ak je, vytlačte reťazec

Používate systém CentOS Linux

.

Inak tlačte

Váš operačný systém nie je podporovaný

.

Nakoniec index.jinja2 súbor šablóny by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Ako vidíte, na mojom vzdialenom hostiteľovi Debianu je index.html súbor má riadok

Používate Debian Linux

.

Na mojom vzdialenom hostiteľovi CentOS je index.html súbor má riadok

Používate systém CentOS Linux

.

Keby som mal iného vzdialeného hostiteľa, na ktorom beží iný OS ako Debian alebo CentOS, mal by túto linku

Váš operačný systém nie je podporovaný

v index.html spis.

Takže Jinja2 keby-elif stav funguje.

Slučky v šablóne Jinja2

Polia a objekty môžete tlačiť aj pomocou slučiek v aplikácii Jinja2.
2. Jinja pre syntax slučky je nasledovná:

% pre premennúName v poliName%
Robte niečo s variableName
% endfor%

Tu v každej iterácii poľa arrayName, jeden z prvkov poľa (začínajúci od začiatku poľa) je priradený k názov premennej premenná. Vo vnútri cyklu môžete s touto premennou niečo robiť.

Pozrime sa, ako môžete v nasledujúcom príklade tlačiť prvky poľa vo svojej šablóne Jinja2.

Najskôr otvorte copy_file_template1.yaml Prípadná príručka s textovým editorom nano:

$ nano playbooks / copy_file_template1.yaml

Ďalej pridajte nasledujúce riadky do súboru copy_file_template1.yaml súbor príručky:

vars:
ponuky:
- Domov
- Produkty
- O nás
- Kontaktuj nás

Tu som pridal a jedálne lístky pole v copy_file_template1.yaml hracia kniha. Ďalej vytlačím prvky poľa pomocou slučky v mojom index.jinja2 Súbor šablóny Jinja2.

Nakoniec copy_file_template1.yaml súbor playbook by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Teraz otvorte index.jinja2 Šablóna Jinja2 s nano textovým editorom:

$ nano playbooks / templates / index.jinja2

Pridajte nasledujúce riadky do súboru index.jinja2 súbor šablóny:

Tu generujem jednoduchý navigačný panel HTML pomocou Jinja2 pre slučka. Slučka iteruje cez jedálne lístky pole (ktoré som definoval v copy_file_template1.yaml playbook) prvky a generuje a Ponuka položka v každej iterácii.

Nakoniec index.jinja2 súbor šablóny by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Ako vidíte, Jinja2 pre slučka vygenerovala navigačnú lištu HTML (v priečinku index.html súbor).

Môžete tiež získať prístup k množine objektov vo svojej šablóne Jinja2.

Pozrime sa na ďalší príklad.

Najskôr otvorte copy_file_template1.yaml Prípadná príručka s textovým editorom nano:

$ nano playbooks / copy_file_template1.yaml

Ďalej pridajte nasledujúce riadky do súboru copy_file_template1.yaml súbor príručky:

vars:
ponuky:
- meno: Domov
odkaz: / domov
- názov: Výrobky
odkaz: / produkty
- meno: O nás
odkaz: / about-us
- meno: Kontaktujte nás
link: / contact-us

Tu som pridal a jedálne lístky pole objektov v copy_file_template1.yaml hracia kniha. Každý z týchto objektov má dve vlastnosti, a názov majetok a a odkaz nehnuteľnosť.

Nakoniec copy_file_template1.yaml súbor príručky by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Otvor index.jinja2 Šablóna Jinja2 s nano textovým editorom:

$ nano playbooks / templates / index.jinja2

Ďalej pridajte nasledujúce riadky do súboru index.jinja2 súbor šablóny:

Všetko, čo tu vidíte, je rovnaké ako v predchádzajúcom príklade. Rozdiel je iba v tom, že tlačím vlastnosti objektu názov (použitím Ponuka.názov) a odkaz (použitím Ponuka.odkaz) v mojom index.jinja2 Šablóna Jinja2.

Nakoniec index.jinja2 súbor šablóny by mal vyzerať tak, ako je to znázornené na snímke obrazovky nižšie.

Po úprave súboru ho uložte stlačením + X, nasledovaný Y a .

Teraz spustite príručku copy_file_template1.yaml nasledovne:

$ ansible-playbook playbooks / copy_file_template1.yaml

Ako vidíte, Jinja2 pre slučka vygenerovala navigačnú lištu HTML (v priečinku index.html súbor) z poľa objektov.

Čo bude ďalej?

V tomto článku som vám ukázal, ako používať Ansible šablóna modul a popísal niektoré zo základov templatingového jazyka Jinja2. Navštívte oficiálne webové stránky Jinja2 a dozviete sa viac o šablónovitom jazyku Jinja2.

Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...
Hry HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
Mnoho vývojárov a vydavateľov hier prichádza s remastrom starých hier v rozlíšení HD, aby predĺžili životnosť franšízy. Prosím fanúšikov, ktorí požadu...
Hry Ako používať AutoKey na automatizáciu hier pre Linux
Ako používať AutoKey na automatizáciu hier pre Linux
AutoKey je obslužný program na automatizáciu stolných počítačov pre systémy Linux a X11, programovaný v programoch Python 3, GTK a Qt. Pomocou jeho fu...