Ansible

Управление данными Ansible с помощью фильтров Jinja

Управление данными Ansible с помощью фильтров Jinja

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

Важно отметить, что создание шаблонов фильтров выполняется на контроллере Ansible, а не на указанных удаленных хостах. Это помогает уменьшить объем данных, передаваемых на удаленный хост после локальной обработки. Если вы не знакомы с шаблонами jinja, Jinja - это простой, интуитивно понятный, быстрый и безопасный язык шаблонов для языка программирования Python, разработанный на основе популярных шаблонов Django фреймворка Python.

Мы не будем вдаваться в подробности работы шаблонов jinja, хотя понимание того, как они работают с шаблонами, может быть дополнительным преимуществом.

Ознакомьтесь с предоставленным ниже ресурсом, чтобы узнать больше о Jinja.

https: // linkfy.в / jinjaDocs

Как работают фильтры Ansible

Как уже упоминалось, механизм фильтрации Ansible основан на модели шаблонов Jinja. Это позволяет пользователям использовать эти шаблоны для ввода данных, их обработки и предоставления вывода на основе определенных фильтров.

После преобразования и фильтрации данных с использованием определенного шаблона вы можете использовать их для выполнения других задач в Ansible. Вы можете узнать больше о фильтрах в Ansible на следующем веб-сайте:

https: // linkfy.в / AnsibleFilters

В Ansible есть множество фильтров, которые очень полезны и применимы ко многим различным сценариям. Получив результат фильтра, вы можете использовать его для выполнения других задач, таких как отладка.

Общий синтаксис фильтрации данных следующий:

|

Использование Ansible Filters

Теперь мы рассмотрим примеры фильтров Ansible, которые мы можем использовать для выполнения различных задач.

ПРИМЕЧАНИЕ: Как упоминалось ранее, в Ansible много фильтров, поэтому мы не можем охватить их все в этой статье. Вместо этого в этом руководстве представлены основы использования различных фильтров Ansible.

Пример 1: фильтры данных формата Ansible

Фильтры данных формата Ansible принимают структуру выходных данных в шаблоне и используют указанный фильтр для отображения ее в формате, который вызывается в фильтре.

Ниже приведен пример фильтра для преобразования в JSON и YAML:

переменная | to_json
переменная | to_yaml

Например, рассмотрим следующий сценарий:

- хосты: все задачи:
- оболочка: cat / tmp / all.json
регистрация: результат
- отлаживать:
msg: "результат.stdout | to_nice_yaml "

Выполнение приведенного выше сценария приведет к выводу данных JSON, преобразованных в YAML. Ниже приведен пример вывода:

Вы также можете указать другие фильтры, такие как to_nice_yaml, для получения вывода в удобочитаемом формате.

переменная | to_nice_json
переменная | to_nice_yaml

Используя фильтры форматирования данных, вы можете преобразовывать данные в различные форматы и использовать их для различных задач.

Например, вы можете передать синтаксический анализ многодокументных строк YAML, как в playbook ниже:

- хосты: все задачи:
- оболочка: cat / tmp / all.json
регистр: результат
- отлаживать:
msg: "результат.stdout | to_yaml | список"

Пример 2: Ansible Default Filter

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

Общий синтаксис фильтра по умолчанию следующий:

| значение по умолчанию)

Например:

- хосты: все
вары:
задачи:
set_fact:
undef_var: "0_var | default (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. Корневой фильтр - переменная | root - возвращает квадратный корень переменной. Чтобы явно указать корень, передайте значение в круглых скобках; например, кубический корень переменная | корень (3)

Эти математические фильтры могут быть весьма полезны, особенно при работе с большими объемами данных и мгновенными математическими операциями.

Пример 5: Хэш-фильтры

Хэш-фильтры Ansible позволяют получить хэш строки или переданных данных. В большинстве случаев эти фильтры вам не понадобятся, но их можно использовать при необходимости. Эти фильтры включают следующее:

  1. Sha1 - var | хэш («sha1»)
  2. Sha256 / sha512 - var | password_hash («sha256 / 512»)
  3. Md5 - var | хэш («md5»)
  4. Контрольная сумма строки - var | контрольная сумма

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

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

  • Фильтр разделения URL - «[Электронная почта защищена]: // linuxhint.com: 8080 / index.html?query = linux »| urlspilt («hostname»), - возвращает «linuxhint.com »
  • Присоединиться к списку - список | join - используется для добавления списка в строку var
  • Путь к каталогу - путь | dirname
  • Развернуть тильду - путь | expanduser

Заключение

Ansible-фильтры пригодятся, когда вы выполняете задачи отладки или вам нужна конкретная информация без лишнего набора текста. Поскольку Ansible поддерживает настраиваемые фильтры, эти фильтры могут быть особенно полезны в определенных случаях использования.

Контроль и управление перемещением мыши между несколькими мониторами в Windows 10
Диспетчер мыши с двумя дисплеями позволяет контролировать и настраивать движение мыши между несколькими мониторами, замедляя ее движения возле границы...
WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...