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
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
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šetciuží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
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:
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
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
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
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
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
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 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
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 Nepoužívate Debian Linux
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
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ý
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á:
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
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
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
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
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.