Možné

Jak používat modul Ansible Template

Jak používat modul Ansible Template
Možné šablona modul se používá hlavně ke kopírování souborů z klienta Ansible (kde je nainstalován Ansible) na hostitele Ansible (spravovaný Ansible). Výhodou používání šablona spíše než modul kopírovat modul, je to možné šablona modul může používat šablonový jazyk Jinja2. Jinja2 je výkonný jazyk šablon Pythonu, pomocí kterého můžete generovat konfigurační soubory, webové stránky atd. Ve svých šablonách Jinja2 můžete také použít proměnné, smyčky a podmínky Ansible Facts.

Tento článek vám ukáže, jak používat Ansible šablona modul a některé základy šablonového jazyka Jinja2. Pojďme tedy začít!

Předpoklady


Chcete-li vyzkoušet příklady v tomto článku:

1) Musíte mít ve svém počítači nainstalovanou aplikaci Ansible.

2) Musíte mít alespoň hostitele Ubuntu / Debian nebo hostitele CentOS / RHEL 8 nakonfigurovaného pro automatickou automatizaci.

Existuje mnoho článků o LinuxHint věnovaných instalaci Ansible a konfiguraci hostitelů pro automatizaci Ansible. V případě potřeby je můžete také zkontrolovat.

Nastavení možného adresáře projektu

Než se přesuneme dále, je dobré vytvořit adresářovou strukturu projektu, jen aby to bylo trochu organizované.

Chcete-li vytvořit adresář projektu demo šablony / a všechny požadované podadresáře (ve vašem aktuálním pracovním adresáři), spusťte následující příkaz:

$ mkdir -pv template-demo / playbooks / templates

Po vytvoření adresáře projektu přejděte do adresáře projektu následujícím způsobem:

$ cd template-demo /

Vytvořit hostitelé soubor inventáře takto:

$ nano hostitelé

Poté přidejte název hostitele IP nebo DNS (vm1.nodekite.com a vm2.nodekite.com) v souboru inventáře.

Po dokončení tohoto kroku uložte soubor stisknutím + X, následován Y a .

V adresáři projektu vytvořte konfigurační soubor Ansible:

$ nanoodpovědný.srov

Potom zadejte následující řádky do zodpovědný.srov soubor.

Po dokončení tohoto kroku uložte soubor stisknutím + X, následován Y a .

V tomto okamžiku by měl adresář projektu vypadat takto:

$ strom

Jak vidíte, hostitelé Ansible jsou také přístupní. Můžeme tedy přejít k další části tohoto článku.

$ ansible vše -u ansible -m ping

Základy možného modulu šablony

The šablona modul Ansible přijímá stejné možnosti jako kopírovat modul Ansible.

Společné možné šablona možnosti modulu:

src - Cesta k souboru šablony Jinja2 ve vašem počítači, která bude analyzována templatingovým jazykem Jinja2 a zkopírována do vzdálených hostitelů.
dest - Cílová cesta na vzdálených hostitelích, na které bude soubor zkopírován.
majitel - Vlastník souboru na vzdálených hostitelích.
skupina - Skupina souboru na vzdálených hostitelích.
režimu - Režim oprávnění k souboru na vzdálených hostitelích.

Podívejme se na příklad.

Nejprve vytvořte nový scénář hry Ansible copy_file_template1.yaml v knihy o hře / adresář takto:

$ nano playbooks / copy_file_template1.yaml

Potom zadejte následující řádky do copy_file_template1.yaml hrací kniha.

- hostitelé: všichni
uživatel: odpovědný
úkoly:
- name: Kopírovat rejstřík.html soubor na server
šablona:
src: index.jinja2
dest: / home / ansible / index.html
vlastník: odpovědný
skupina: odpovědná
režim: 0644

Tato hrací kniha zkopíruje soubor index.jinja2 soubor z knihy o hře / šablony / adresář (ve vztahu k vašemu adresáři projektu) ke vzdáleným hostitelům pomocí Ansible šablona modul.

Po dokončení tohoto kroku uložte soubor stisknutím + X, následován Y a .

Vytvořte index.jinja2 soubor šablony v příručky / šablony adresář takto:

$ nano playbooks / templates / index.jinja2

Do řádku zadejte následující řádky index.jinja2 soubor šablony:




Ukázka šablony Jinja2


Vítejte v Linuxhintu!



Toto je jen obyčejný soubor HTML. Nepoužíval jsem zde žádnou fantazijní syntaxi Jinja2.

Po dokončení tohoto kroku uložte soubor stisknutím + X, následován Y a .

Spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Příručka by se měla úspěšně spustit.

Jak vidíte, index.jinja2 Šablona byla vykreslena pomocí šablonového jazyka Jinja2. Vykreslený obsah by měl být zkopírován do index.html soubor vzdálených hostitelů.

Tisk proměnných v šabloně Jinja2

Ve svých šablonách Jinja2 můžete použít Ansible fakta, proměnné a uživatelem definované proměnné.

Na své šabloně Jinja2 můžete vytisknout hodnotu proměnné pomocí variableName syntax. Pokud je proměnná objekt, můžete tisknout vlastnosti jednotlivých objektů pomocí objectVariable.název vlastnosti syntax.

V následujícím příkladu vytiskneme datum majetek ansible_date_time objekt v našem index.jinja2 šablona.

$ ansible all -u ansible -m nastavení | egrep --color 'date | time'

Nejprve otevřete index.jinja2 soubor šablony s nano textovým editorem, a to následovně:

$ nano playbooks / templates / index.jinja2

Přidejte následující řádek do index.jinja2 soubor šablony:

Stránka vygenerována ansible_date_time.datum

Finále index.jinja2 soubor by měl vypadat, jak je znázorněno na následujícím obrázku.

Po dokončení tohoto kroku uložte soubor stisknutím + X, následován Y a .

Spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Jak vidíte, index.jinja2 Šablona byla zpracována šablonovým jazykem Jinja2 a nahradila ansible_date_time.datum proměnná s datem v RRRR-MM-DD formát. Výstup byl poté zkopírován do souboru index.html soubor na vzdáleném hostiteli.

Podmíněné, pokud je prohlášení v šabloně Jinja2

Jazyk šablon Jinja2 podporuje podmíněné -li prohlášení. Můžete zkontrolovat určité proměnné před tiskem čehokoli pomocí -li prohlášení.

Jinja2 -li syntaxe je následující:

% pokud podmínka%
Udělejte něco, pokud je podmínka pravdivá
% endif%

Podívejme se na příklad Jinja2 -li prohlášení.

V této části předvedu Jinja2 -li prohlášení pomocí ansible_distribution fakta proměnná.

$ ansible all -u ansible -m nastavení | egrep --color 'dist'

Nejprve otevřete index.jinja2 Šablona Jinja2 s textovým editorem nano:

$ nano playbooks / templates / index.jinja2

Dále přidejte následující řádky do index.jinja2 soubor šablony:

% if ansible_distribution == "Debian"%

Používáte Debian Linux


% endif%

Zde jsem zkontroloval, zda ansible_distribution je Debian. Pokud ano, vytiskněte řetězec

Používáte Debian Linux

. Jinak jej nevytiskněte.

Nakonec index.jinja2 soubor šablony by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Nyní spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Jak vidíte, na mém vzdáleném hostiteli Debianu je index.html soubor má řádek

Používáte Debian Linux

. Na mém vzdáleném hostiteli CentOS však linka není k dispozici. Jinja2 -li stav funguje.

Podmíněné: Prohlášení if-else v šabloně Jinja2

Jazyk šablon Jinja2 podporuje podmíněné kdyby-jinak prohlášení. Můžete si vytisknout jednu věc, pokud se podmínka shoduje, a vytisknout něco jiného, ​​pokud nepoužívá kdyby-jinak prohlášení.

Jinja2 kdyby-jinak syntaxe je následující:

% pokud podmínka%
Udělejte něco, pokud je podmínka pravdivá
% else%
Udělejte něco, pokud je podmínka nepravdivá
% endif%

Podívejme se na příklad Jinja2 kdyby-jinak prohlášení.

Nejprve otevřete index.jinja2 Šablona Jinja2 s textovým editorem nano:

$ nano playbooks / templates / index.jinja2

Dále přidejte následující řádky do index.jinja2 soubor šablony:

% if ansible_distribution == "Debian"%

Používáte Debian Linux


% else%

Nepoužíváte Debian Linux


% endif%

Zde jsem zkontroloval, zda ansible_distribution je Debian. Pokud ano, vytiskněte řetězec

Používáte Debian Linux

. Jinak tiskněte

Nepoužíváte Debian Linux

.

Nakonec index.jinja2 soubor šablony by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Jak vidíte, na mém vzdáleném hostiteli Debianu je index.html soubor má řádek

Používáte Debian Linux

. Ale na mém vzdáleném hostiteli CentOS, index.html soubor má řádek

Nepoužíváte Debian Linux

. Jinja2 kdyby-jinak stav funguje.

Podmíněné: Prohlášení if-elif v šabloně Jinja2

Jazyk šablon Jinja2 podporuje podmíněné if-elif prohlášení.

Jinja2 if-elif syntaxe je následující:

% pokud podmínka1%
Udělejte něco, pokud je podmínka1 pravdivá
% elif podmínka2%
Udělejte něco, pokud je podmínka2 pravdivá
% elif podmínka3%
Udělejte něco, pokud je podmínka3 pravdivá

% elif podmínkaN%
Udělejte něco, pokud je podmínka N pravdivá
% else%
Udělejte něco, pokud není splněna žádná z podmínek
% endif%

Tady % else% část je volitelná, ale je zde, pokud ji potřebujete.

Podívejme se na příklad Jinja2 if-elif prohlášení.

Nejprve otevřete index.jinja2 Šablona Jinja2 s textovým editorem nano:

$ nano playbooks / templates / index.jinja2

Dále přidejte následující řádky do index.jinja2 soubor šablony:

% if ansible_distribution == "Debian"%

Používáte Debian Linux


% elif ansible_distribution == "CentOS"%

Používáte CentOS Linux


% else%

Váš operační systém není podporován


% endif%

Zde jsem zkontroloval, zda ansible_distribution je Debian. Pokud ano, vytiskněte řetězec

Používáte Debian Linux

.

Také jsem zkontroloval, zda ansible_distribution je CentOS. Pokud ano, vytiskněte řetězec

Používáte CentOS Linux

.

Jinak tiskněte

Váš operační systém není podporován

.

Nakonec index.jinja2 soubor šablony by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Jak vidíte, na mém vzdáleném hostiteli Debianu je index.html soubor má řádek

Používáte Debian Linux

.

Na mém vzdáleném hostiteli CentOS je index.html soubor má řádek

Používáte CentOS Linux

.

Pokud bych měl jiného vzdáleného hostitele s jiným operačním systémem než Debian nebo CentOS, měl by linku

Váš operační systém není podporován

v index.html soubor.

Jinja2 if-elif stav funguje.

Smyčky v šabloně Jinja2

Pole a objekty můžete také tisknout pomocí smyček v Jinja2.
Jinja2 pro syntaxe smyčky je následující:

% pro variableName v arrayName%
Udělejte něco s variableName
% endfor%

Tady, v každé iteraci pole arrayName, jeden z prvků pole (počínaje začátkem pole) je přiřazen k název proměnné proměnná. S touto proměnnou můžete ve smyčce něco udělat.

V následujícím příkladu si ukážeme, jak můžete vytisknout prvky pole ve své šabloně Jinja2.

Nejprve otevřete copy_file_template1.yaml Možná hrací kniha s nano textovým editorem:

$ nano playbooks / copy_file_template1.yaml

Dále přidejte následující řádky do copy_file_template1.yaml soubor příručky:

vars:
nabídky:
- Domov
- produkty
- O nás
- Kontaktujte nás

Tady jsem přidal a nabídky pole v copy_file_template1.yaml hrací kniha. Dále vytisknu prvky pole pomocí smyčky v mém index.jinja2 Soubor šablony Jinja2.

Nakonec copy_file_template1.yaml soubor playbook by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Nyní otevřete index.jinja2 Šablona Jinja2 s textovým editorem nano:

$ nano playbooks / templates / index.jinja2

Přidejte následující řádky do index.jinja2 soubor šablony:

Tady generuji jednoduchou navigační lištu HTML pomocí Jinja2 pro smyčka. Smyčka iteruje skrz nabídky pole (které jsem definoval v copy_file_template1.yaml playbook) prvky a generuje a Jídelní lístek položka v každé iteraci.

Nakonec index.jinja2 soubor šablony by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Jak vidíte, Jinja2 pro smyčka vygenerovala navigační lištu HTML (v index.html soubor).

Ve své šabloně Jinja2 můžete také přistupovat k řadě objektů.

Uvidíme další příklad.

Nejprve otevřete copy_file_template1.yaml Možná hrací kniha s nano textovým editorem:

$ nano playbooks / copy_file_template1.yaml

Dále přidejte následující řádky do copy_file_template1.yaml soubor příručky:

vars:
nabídky:
- jméno: Home
odkaz: / home
- název: Výrobky
odkaz: / produkty
- jméno: O nás
odkaz: / about-us
- jméno: Kontaktujte nás
link: / contact-us

Tady jsem přidal a nabídky pole objektu v copy_file_template1.yaml hrací kniha. Každý z těchto objektů má dvě vlastnosti, a název majetek a odkaz vlastnictví.

Nakonec copy_file_template1.yaml soubor playbook by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Otevři index.jinja2 Šablona Jinja2 s textovým editorem nano:

$ nano playbooks / templates / index.jinja2

Dále přidejte následující řádky do index.jinja2 soubor šablony:

Všechno, co zde vidíte, je stejné jako v předchozím příkladu. Jediný rozdíl je v tom, že tisknu vlastnosti objektu název (použitím Jídelní lístek.název) a odkaz (použitím Jídelní lístek.odkaz) v mém index.jinja2 Jinja2 šablona.

Nakonec index.jinja2 soubor šablony by měl vypadat, jak je znázorněno na následujícím obrázku.

Jakmile soubor upravíte, uložte jej stisknutím + X, následován Y a .

Nyní spusťte příručku copy_file_template1.yaml jak následuje:

$ ansible-playbook playbooks / copy_file_template1.yaml

Jak vidíte, Jinja2 pro smyčka vygenerovala navigační lištu HTML (v index.html soubor) z řady objektů.

Co bude dál?

V tomto článku jsem vám ukázal, jak používat Ansible šablona modul a popsal některé základní základy šablonového jazyka Jinja2. Navštivte oficiální webové stránky Jinja2 a dozvíte se více o šablonovém jazyce Jinja2.

V systému Windows 10 nefunguje levé tlačítko myši
Pokud používáte speciální myš s notebookem nebo stolním počítačem, ale levé tlačítko myši nefunguje ve Windows 10/8/7 z nějakého důvodu uvádíme několi...
Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...
Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...