Možné

Manipulujte s možnými daty pomocí filtrů Jinja

Manipulujte s možnými daty pomocí filtrů Jinja

V některých případech, když používáte Ansible k automatizaci různých úkolů, možná budete muset data transformovat a manipulovat s nimi. V Ansible můžete použít sadu předdefinovaných filtrů nebo vytvořit vlastní filtry pro manipulaci, zpracování a převod dat. Ansible používá na pozadí filtry jinja2, které uživatelům umožňují vytvářet filtry pro zadaná data.

Je důležité si uvědomit, že filtrování šablon filtrů se provádí na řadiči Ansible, a nikoli na zadaných vzdálených hostitelích. To pomáhá snížit množství dat přenesených na vzdáleného hostitele po místním zpracování. Pokud nejste obeznámeni s šablonami jinja, Jinja je jednoduchý, intuitivní, rychlý a bezpečný šablonový jazyk pro programovací jazyk Python vyvinutý po populárních šablonách Django v rámci Pythonu.

Nebudeme se zabývat tím, jak funguje šablonování džinji, i když to může být další výhodou, abychom pochopili, jak to funguje se šablonami.

Podívejte se na níže uvedený zdroj a dozvíte se více o Jinji.

https: // linkfy.do / jinjaDocs

Jak fungují možné filtry

Jak již bylo zmíněno, filtrovací modul Ansible staví na šablonovém modelu Jinja. To umožňuje uživatelům používat tyto šablony k zadávání dat, jejich zpracování a poskytování výstupu na základě definovaných filtrů.

Jakmile jsou data transformována a filtrována pomocí definované šablony, můžete je použít k provádění dalších úkolů v Ansible. Další informace o filtrech v Ansible najdete na následujícím webu:

https: // linkfy.do / AnsibleFilters

Ansible má mnoho filtrů, které jsou velmi užitečné a použitelné pro mnoho různých scénářů. Jakmile budete mít výstup filtru, můžete jej použít k provádění dalších úkolů, například ladění.

Obecná syntaxe pro filtrování dat je následující:

|

Používání možných filtrů

Nyní se podíváme na příklady filtrů Ansible, které můžeme použít k provádění různých úkolů.

POZNÁMKA: Jak již bylo zmíněno dříve, Ansible má mnoho filtrů, takže v tomto článku nemůžeme pokrýt všechny. Místo toho se tento kurz snaží poskytnout vám základy používání různých filtrů Ansible.

Příklad 1: Možný formát datových filtrů

Filtry datového formátu Ansible vezmou výstupní datovou strukturu v šabloně a pomocí zadaného filtru ji vykreslí ve formátu volaném ve filtru.

Níže je ukázkový filtr pro převod na JSON a YAML:

proměnná | to_json
proměnná | to_yaml

Zvažte například následující příručku:

- hostitelé: všechny úkoly:
- shell: cat / tmp / all.JSON
zaregistrovat: výsledek
- ladit:
msg: "výsledek.standardní výstup | to_nice_yaml "

Spuštěním výše uvedené příručky se vytvoří výstup pro data JSON převedená na YAML. Následuje ukázkový výstup:

Můžete také určit další filtry, například to_nice_yaml, abyste získali výstup ve formátu čitelném pro člověka.

proměnná | to_nice_json
proměnná | to_nice_yaml

Pomocí formátovacích datových filtrů můžete data transformovat do různých formátů a použít je pro různé úkoly.

Můžete například předat analyzovat řetězce YAML s více dokumenty, jak je uvedeno v příručce níže:

- hostitelé: všechny úkoly:
- shell: cat / tmp / all.JSON
zaregistrovat: výsledek
- ladit:
msg: "výsledek.standardní výstup | to_yaml | seznam"

Příklad 2: Možný výchozí filtr

Výchozí filtr Ansible pomáhá nastavit výchozí hodnoty na nedefinované proměnné. Výchozí konfigurace Ansible selže u nedefinovaných proměnných. Například pokud máte nedefinovanou proměnnou, můžete Ansible místo vyvolání chyby říct, že má výchozí hodnotu.

Obecná syntaxe pro výchozí filtr je následující:

| výchozí hodnota)

Například:

- hostitelé: všichni
vars:
úkoly:
set_fact:
undef_var: "0_var | výchozí (5)"

Výše uvedený playbook nastaví hodnotu proměnné „0_var“ na 5, pokud není výslovně definována, místo vyvolání chyby.

K definování proměnné můžete použít povinný filtr. Vše, co musíte udělat, je odkazovat se na výše uvedený příklad a nahradit výchozí povinné:

0_var | povinné

Příklad 3: Možné filtry ladění

Při ladění můžete použít filtr type_debug k získání informací o typu proměnné. Typ proměnné bude v Pythonu, protože engine je založen na Pythonu. Obecná syntaxe filtru je následující:

proměnná | type_debug

Příklad 4: Matematické filtry

Matematické filtry Ansible umožňují provádět matematické dotazy. Mezi tyto filtry patří následující:

  1. Logaritmický filtr - proměnná | log - určuje základnu logaritmu v závorkách jako proměnná | protokol (2)
  2. Filtr napájení - proměnná | pow (3) - vrací proměnnou zvýšenou na zadaný výkon
  3. Absolutní filtr - proměnná | abs - vrátí absolutní hodnotu předané proměnné
  4. Kořenový filtr - proměnná | root - vrátí druhou odmocninu proměnné. Chcete-li explicitně určit kořen, předejte hodnotu v závorkách; například kostka root proměnná | root (3)

Tyto matematické filtry mohou být docela užitečné, zejména při řešení velkého množství dat a okamžitých matematických operací.

Příklad 5: Hash filtry

Filtry hash Ansible umožňují získat hash řetězce nebo předaných dat. Ve většině případů tyto filtry nebudete potřebovat, ale v případě potřeby jsou k dispozici k použití. Mezi tyto filtry patří následující:

  1. Sha1 - var | hash („sha1“)
  2. Sha256 / sha512 - var | heslo_hash („sha256 / 512“)
  3. MD5 - var | hash („md5“)
  4. Řetězcový kontrolní součet - var | kontrolní součet

Další užitečné filtry

Jak jste si možná všimli, Ansible má mnoho filtrů. Některé filtry Ansible, které se vám mohou hodit, zahrnují následující:

  • Filtr rozdělení adresy URL - “[Chráněno e-mailem]: // linuxhint.com: 8080 / index.html?dotaz = linux ”| urlspilt („hostname“), - vrátí „linuxhint.com “
  • Připojte se k seznamu - seznam | join - slouží k přidání seznamu do řetězce var
  • Cesta k adresáři - cesta | dirname
  • Rozbalte vlnovku - cesta | expanduser

Závěr

Možné filtry se hodí, když provádíte ladicí úkoly nebo potřebujete konkrétní informace bez přílišného psaní. Protože Ansible podporuje vlastní filtry, mohou být tyto filtry užitečné zejména v konkrétních případech použití.

Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...
Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...