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_jsonpromě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_jsonpromě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í:
Například:
- hostitelé: všichnivars:
ú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_debugPříklad 4: Matematické filtry
Matematické filtry Ansible umožňují provádět matematické dotazy. Mezi tyto filtry patří následující:
- Logaritmický filtr - proměnná | log - určuje základnu logaritmu v závorkách jako proměnná | protokol (2)
- Filtr napájení - proměnná | pow (3) - vrací proměnnou zvýšenou na zadaný výkon
- Absolutní filtr - proměnná | abs - vrátí absolutní hodnotu předané proměnné
- 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í:
- Sha1 - var | hash („sha1“)
- Sha256 / sha512 - var | heslo_hash („sha256 / 512“)
- MD5 - var | hash („md5“)
- Ř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í.