GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak používat šablonu Jinja2 v Ansible

Jinja2 je jedním z nejvýkonnějších a nejslavnějších šablonových enginů založených na pythonu. Je nejoblíbenější pro uživatele Ansible kvůli stejnému programovacímu jazyku. Pomáhá mnoha IT pracovníkům mnoha způsoby. Jinja2 šablona je schopna přistupovat k proměnným v ansible. V Ansible je potřeba změnit spoustu věcí na každém serveru, což zabere spoustu času. Takže pomocí šablon jinja2 lze měnit proměnné pouze na tuto šablonu, což vede k úspoře času a snadnému prostředí.

V ansible se pro přístup k proměnným používá šablona jinja2. Takže změna proměnné podle potřeby a času může pomoci dostupným playbookům ušetřit spoustu času. Šablona Jinja2 je dodávána s vestavěnými filtry a uživatelé mohou s těmito filtry manipulovat pouze při konfiguraci mnoha souborů pro plynulé playbooky.

Má mnoho dalších funkcí. Některé z nich jsou uvedeny níže.

  • Z hlediska ladění je to docela jednoduché
  • Dědičnost šablon je dobře podporována
  • Je velmi rychlý a snadno kompilovatelný

V tomto článku budeme diskutovat o použití šablony jinja2 a procesu její konfigurace.

Proměnné přístupné šablonou Jinja2

Jinja2 šablona má přístup k proměnným v ansible. Na kontrolním uzlu ansible napište soubor šablony jinja2, který může snadno přistupovat k proměnným definovaným ve stejném adresáři nebo v playbooku.

Napíšeme příklad, který ukazuje, jak šablona jinja2 přistupuje a manipuluje s hodnotami pomocí přístupu k proměnným. Zde je playbook jinja2_var_example.yml

Nyní spustíme playbook jinja2_var_example.yml

Zde si můžete všimnout změny hodnoty na výstupu. Protože {{ }} je také syntaxí šablony jinja2, může přistupovat k proměnné a měnit hodnotu na skutečnou.

Další příklad ukazující přístup šablony jinja2 k proměnné. Zde vytvoříme složku a napíšeme šablonu jinja2 „nginx.conf.j2“, protože j2 je rozšíření pro šablonu jinja2.

$ mkdir jinja2_variable
$ cd jinja2_variable/
$ vim nginx.conf.j2

Potom napíšeme soubor pomocí šablony jinja2, kde se používají proměnné. Takové proměnné mohou být definovány v různých souborech nebo v playbookech, se kterými lze manipulovat podle potřeby v danou chvíli.

Určitě jste si všimli proměnných {{ http_port }} a {{ http_host }} na výše uvedeném snímku obrazovky.

Nyní napíšeme playbook, který se skládá ze skutečné hodnoty proměnných obsažených v souboru šablony jinja2.

Po úspěšném spuštění playbooku budou proměnné nahrazeny skutečnými hodnotami v souboru cílové cesty.

Hodnoty se změnily na níže uvedeném snímku obrazovky.

Toto jsou příklady ukazující, že šablona jinja2 přistupuje k proměnným a zobrazuje skutečné hodnoty na konečném výstupu.

Podmíněné v šabloně jinja2

Šablona jinja2 může použít podmíněné příkazy jako cykly for. Smyčky pomáhají iterovat položky v rozsahu, seznamu a tak dále. Zde píšeme příklad, který ukazuje smyčku for použitou v šabloně jinja2.

Například napíšeme náš soubor šablony „ server_hosts.j2“ jako následující snímek obrazovky.

$ cat server_hosts.j2

Výstup:

{% for host in groups['all'] %}

{{ hostvars[host].ansible_facts.default_ipv4.address }} {{ hostvars[host].ansible_facts.fqdn }} {{ hostvars[host].ansible_facts.hostname }}

{% endfor %}

Bude iterovat přes všechny hostitele v inventáři. U každého hostitele se zobrazí hodnota všech proměnných použitých v šabloně.

Na řídicím uzlu napíšeme playbook „conditional.yml“ včetně výše uvedeného souboru šablony jinja2.

$ sudo vim conditional.yml

Nyní spouštíme příručku „conditional.yml“

$ ansible-playbook conditional.yml

Nyní můžeme vidět výsledek na hostitelském uzlu, zda je soubor /etc/hosts aktualizován nebo ne.

Je to konečný výsledek našich proměnných v souboru šablony jinja2 iterovaných přes všechny hostitele v inventáři. Takže podmíněné příkazy jako cykly for lze také použít v souborech šablon jinja2.

Filtry používané v šabloně jinja2

Pokud chcete, aby byl výstup jiný nebo formátovaný, můžete použít filtry. Proměnné můžete jednoduše spojit s argumenty, jak je uvedeno níže.

{{ variable | argument }}

Zde napíšeme soubor šablony jinja2 „jinja_filters.j2“, abychom ukázali filtry použité v souboru šablony jinja2.

$ vim jinja_filters.j2

Chystáme se napsat playbook „filters.yml“, který se skládá ze souboru šablony jinja2.

$ vim filters.yml

Nyní spouštíme playbook „filters.yml“

Nyní můžeme vidět výsledek na hostitelském uzlu, zda je cílový soubor vytvořen s obsahem na velká písmena nebo ne.

Zde můžete vidět, že veškerý text je psán velkými písmeny, protože jsme použili filtr vložením položky proměnné do argumentu velkých písmen.

Závěr

Takové soubory šablon jinja2 můžete použít podle svých požadavků k manipulaci s proměnnými a daty, abyste ušetřili čas a hladký chod playbooků na ansible. Můžete také použít filtry pro manipulaci s čísly od vysokých k nízkým a tak dále. Zkuste prozkoumat šablonu jinja2 pro další funkce. Děkuji!


Ubuntu
  1. Jak používat příkaz Apt-Get v Linuxu

  2. Jak používat příkaz sudo v Linuxu

  3. Jak používat příkaz basename?

  1. Jak používat příkaz hostname v Linuxu

  2. Jak používat příkaz Passwd v Linuxu

  3. Jak používat příkaz wall v Linuxu

  1. Jak používat příkaz Modprobe v Linuxu

  2. Jak používat příkaz vmstat

  3. Jak používat w Command v Linuxu s příklady