Іноді, коли ви використовуєте Ansible для автоматизації різних завдань, можливо, вам доведеться перетворити дані та маніпулювати ними. У Ansible ви можете використовувати набір вбудованих фільтрів або створювати власні фільтри для обробки, обробки та перетворення даних. Ansible використовує фільтри шаблонів jinja2 у фоновому режимі, щоб дозволити користувачам створювати фільтри для вказаних даних.
Важливо зазначити, що шаблонування фільтрів здійснюється на контролері Ansible, а не на вказаних віддалених хостах. Це допомагає зменшити обсяг даних, переданих віддаленому хосту після локальної обробки. Якщо ви не знайомі з шаблонуванням jinja, Jinja - це проста, інтуїтивно зрозуміла, швидка та безпечна мова шаблонів для мови програмування Python, розроблена за популярними шаблонами Django framework Python.
Ми не будемо вивчати, як працює шаблонування jinja, хоча це може бути додатковою перевагою, щоб зрозуміти, як це працює з шаблонами.
Перегляньте поданий нижче ресурс, щоб дізнатись більше про Jinja.
https: // linkfy.до / jinjaDocs
Як працюють відповідні фільтри
Як вже згадувалося, механізм фільтрації Ansible базується на шаблонній моделі Jinja. Це дозволяє користувачам використовувати ці шаблони для введення даних, їх обробки та надання результатів на основі визначених фільтрів.
Після того, як дані трансформуються та фільтруються за допомогою визначеного шаблону, ви можете використовувати їх для виконання інших завдань у Ansible. Ви можете дізнатись більше про фільтри в Ansible на веб-сайті:
https: // linkfy.до / AnsibleFilters
Ansible має безліч фільтрів, які є дуже корисними та застосовними до багатьох різних сценаріїв. Отримавши вихід фільтра, ви можете використовувати його для виконання інших завдань, таких як налагодження.
Загальний синтаксис для фільтрації даних такий:
|Використання Ansible фільтрів
Зараз ми розглянемо приклади фільтрів 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 з декількох документів, як у наведеному нижче посібнику:
- господарі: всі завдання:- оболонка: cat / tmp / all.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 дозволяють виконувати математичні запити. Ці фільтри включають наступне:
- Логарифмовий фільтр - змінна | log - визначає основу логарифму в дужках як змінну | журнал (2)
- Фільтр живлення - змінна | pow (3) - повертає підняту змінну до заданої потужності
- Абсолютний фільтр - змінна | abs - повертає абсолютне значення для переданої змінної
- Кореневий фільтр - змінна | корінь - повертає квадратний корінь змінної. Щоб явно вказати корінь, передайте значення в дужки; наприклад, куб корінь змінна | корінь (3)
Ці математичні фільтри можуть бути дуже корисними, особливо коли йдеться про великі обсяги даних та миттєві математичні операції.
Приклад 5: Хеш-фільтри
Хеш-фільтри Ansible дозволяють отримати хеш рядка або переданих даних. У більшості випадків ці фільтри вам не знадобляться, але вони доступні для використання у разі потреби. Ці фільтри включають наступне:
- Ша1 - var | хеш (“sha1”)
- Sha256 / sha512 - var | password_hash (“sha256 / 512”)
- Md5 - var | хеш (“md5”)
- Рядок контрольної суми - var | контрольна сума
Інші корисні фільтри
Як ви могли помітити, Ansible має безліч фільтрів. Деякі фільтри Ansible, які можуть вам виявитися корисними, включають наступне:
- Фільтр розділення URL-адрес - “[Електронна пошта захищена]: // linuxhint.com: 8080 / index.html?запит = linux ”| urlspilt (“ім’я хосту”), - повертає “linuxhint.com ”
- Приєднатися до списку - список | join - використовується для додавання списку у рядок var
- Шлях до каталогу - шлях | ім'я
- Розгорніть тильду - шлях | розгорнути користувач
Висновок
Ансибельні фільтри стають у пригоді, коли ви виконуєте завдання налагодження або коли вам потрібна конкретна інформація, не надто вводячи текст. Оскільки Ansible підтримує власні фільтри, ці фільтри можуть бути особливо корисними в конкретних випадках використання.