Отговорни

Манипулирайте с отговорни данни с помощта на филтри Jinja

Манипулирайте с отговорни данни с помощта на филтри Jinja

В някои случаи, когато използвате Ansible за автоматизиране на различни задачи, може да се наложи да трансформирате и манипулирате данни. В Ansible можете да използвате набор от вградени филтри или да създавате персонализирани филтри за манипулиране, обработка и конвертиране на данни. Ansible използва филтри за шаблони jinja2 във фонов режим, за да позволи на потребителите да създават филтри за определени данни.

Важно е да се отбележи, че шаблонирането на филтрите се извършва на контролера Ansible, а не на посочените отдалечени хостове. Това помага да се намали количеството данни, прехвърлени към отдалечения хост след локална обработка. Ако не сте запознати с шаблонирането на jinja, Jinja е прост, интуитивен, бърз и сигурен език за шаблониране на езика за програмиране на Python, разработен след популярните шаблони на Python framework Django.

Няма да разглеждаме как работи шаблонирането на jinja, макар че това може да е допълнително предимство, за да разберем как работи с шаблоните.

Вижте ресурса, предоставен по-долу, за да научите повече за Jinja.

https: // linkfy.към / jinjaDocs

Как работят Ansible филтрите

Както бе споменато, филтърът за филтриране Ansible се основава на шаблонен модел на Jinja. Това позволява на потребителите да използват тези шаблони за въвеждане на данни, тяхната обработка и предоставяне на изход въз основа на дефинираните филтри.

След като данните се трансформират и филтрират с помощта на дефинирания шаблон, можете да го използвате за изпълнение на други задачи в Ansible. Можете да научите повече за филтрите в Ansible на следния уебсайт:

https: // linkfy.към / AnsibleFilters

Ansible има много филтри, които са много полезни и приложими за много различни сценарии. След като получите изхода на филтъра, можете да го използвате за изпълнение на други задачи, като отстраняване на грешки.

Общият синтаксис за филтриране на данни е както следва:

|

Използване на Ansible Filters

Сега ще разгледаме примери за Ansible филтри, които можем да използваме за изпълнение на различни задачи.

ЗАБЕЛЕЖКА: Както бе споменато по-горе, Ansible има много филтри, така че не можем да покрием всички от тях в тази статия. Вместо това този урок се стреми да ви предостави основите на използването на различни Ansible филтри.

Пример 1: Филтри за данни на Ansible Format

Филтрите за данни на Ansible формат вземат изходна структура от данни в шаблон и използват посочения филтър, за да я изобразят във формата, извикан във филтъра.

По-долу е даден примерен филтър за конвертиране в JSON и YAML:

променлива | до_json
променлива | to_yaml

Например, помислете за следната книга с игри:

- домакини: всички задачи:
- черупка: котка / tmp / всички.json
регистър: резултат
- отстраняване на грешки:
msg: "резултат.stdout | to_nice_yaml "

Изпълнението на горната книга за игри ще даде изход за JSON данните, преобразувани в YAML. Следното е примерен изход:

Можете също така да посочите други филтри, като to_nice_yaml, за да получите изхода в четим от човека формат.

променлива | to_nice_json
променлива | to_nice_yaml

Използвайки филтрите за форматиране на данни, можете да трансформирате данни в различни формати и да ги използвате за различни задачи.

Например можете да предадете синтактичен анализ на многодокументални YAML низове, както е в книгата за игри по-долу:

- домакини: всички задачи:
- черупка: котка / tmp / всички.json
регистър: резултат
- отстраняване на грешки:
msg: "резултат.stdout | to_yaml | списък "

Пример 2: Ansible филтър по подразбиране

Филтърът по подразбиране Ansible помага да се зададат стойности по подразбиране към недефинирани променливи. Конфигурацията по подразбиране Ansible не успява да дефинира променливи. Например, ако имате недефинирана променлива, можете да кажете Ansible по подразбиране на стойност, вместо да повдигате грешка.

Общият синтаксис за филтъра по подразбиране е както следва:

| стойност по подразбиране)

Например:

- домакини: всички
варира:
задачи:
set_fact:
undef_var: "0_var | по подразбиране (5)"

Горната книга за игри ще зададе стойността на променливата '0_var' на 5, ако не е изрично дефинирана, вместо да извежда грешка.

За да дефинирате променлива, можете да използвате задължителния филтър. Всичко, което трябва да направите, е да се обърнете към примера по-горе и да замените подразбирането със задължителното:

0_var | задължителен

Пример 3: Ansible филтри за отстраняване на грешки

При отстраняване на грешки можете да използвате филтъра type_debug, за да получите информация за типа променлива. Типът на променливата ще бъде в Python, тъй като двигателят е базиран на Python. Общият синтаксис за филтъра е както следва:

променлива | type_debug

Пример 4: Филтри по математика

Физическите математически филтри Ansible ви позволяват да извършвате математически заявки. Тези филтри включват следното:

  1. Логаритъмен филтър - променлива | log - указва основата на логаритъма в скоби като променлива | дневник (2)
  2. Филтър за захранване - променлива | pow (3) - връща променливата, повдигната до определената мощност
  3. Абсолютен филтър - променлива | abs - връща абсолютната стойност за предадената променлива
  4. Корен филтър - променлива | корен - това връща квадратния корен на променливата. За да посочите изрично корена, предайте стойността в скоби; например корен на куб променлива | корен (3)

Тези математически филтри могат да бъдат доста полезни, особено при работа с големи количества данни и незабавни математически операции.

Пример 5: Хеш филтри

Хеш филтрите Ansible ви позволяват да получите хеш на низ или предадени данни. В повечето случаи няма да имате нужда от тези филтри, но те са достъпни за използване, ако възникне необходимост. Тези филтри включват следното:

  1. Ша1 - var | хеш (“sha1”)
  2. Sha256 / sha512 - var | парола_хаш (“sha256 / 512”)
  3. Md5 - var | хеш (“md5”)
  4. Контролна сума на низа - var | контролна сума

Други полезни филтри

Както може би сте забелязали, Ansible има много филтри. Някои филтри Ansible, които може да намерите за полезни, включват следното:

  • Филтър за разделяне на URL адреси - “[Имейл защитен]: // linuxhint.com: 8080 / индекс.html?заявка = linux ”| urlspilt („име на хост“), - връща „linuxhint.com ”
  • Присъединете се към списъка - списък | присъединяване - използва се за добавяне на списък в низ var
  • Път в директорията - път | dirname
  • Разширете тилда - път | разшири потребител

Заключение

Ansible филтрите са полезни, когато изпълнявате задачи за отстраняване на грешки или се нуждаете от конкретна информация, без да пишете много. Тъй като Ansible поддържа персонализирани филтри, тези филтри могат да бъдат особено полезни в конкретни случаи на употреба.

Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...
Урок Сянка на Tomb Raider за Linux
Shadow of the Tomb Raider е дванадесетото допълнение към поредицата Tomb Raider - франчайз за екшън-приключенска игра, създаден от Eidos Montreal. Игр...