ProHoster > Блог > адміністрування > Використання інвенторів-плагінів з Ansible Content Collections в Ansible Tower
Використання інвенторів-плагінів з Ansible Content Collections в Ansible Tower
ІТ-середовища стають все складнішими і складнішими. У цих умовах для системи ІТ-автоматизації критично важливо мати актуальну інформацію про вузли, які є в мережі та підлягають обробці. У Red Hat Ansible Automation Platform це питання вирішується через так звані інвентори (інвентаризація) - Списки керованих вузлів.
У своїй простій формі інвентори є статичний файл. Це ідеальний варіант, коли ви починаєте працювати з Ansible, але в міру розширення автоматизації його стає недостатньо.
І ось чому:
Як оновлювати та підтримувати в актуальному стані повний список контрольованих вузлів, коли щось постійно змінюється, коли робочі навантаження – а за ними і вузли, на яких вони виконуються – то виникають, то зникають?
Як класифікувати компоненти ІТ-інфраструктури, щоб прицільно вибирати вузли для застосування тієї чи іншої автоматизації?
Відповіді на обидва ці питання дає динамічний інвентор (dynamic inventory) – скрипт або плагін, який шукає вузли, що підлягають автоматизації, звертаючись до джерела істини (source of truth). Крім того, динамічний інвентор автоматично класифікує вузли по групах, щоб ви могли точніше відбирати цільові системи для виконання тієї чи іншої автоматизації Ansible.
Інвентори-плагіни дають користувачеві Ansible можливість звертатися до зовнішніх платформ для динамічного пошуку цільових вузлів і використовувати ці платформи як джерело істини для формування інвенторів. Стандартний список джерел у Ansible включає хмарні платформи AWS EC2, Google GCP та Microsoft Azure, також для Ansible є і безліч інших інвенторів-плагінів.
Ansible Tower поставляється разом із рядом інвентори-плагінів, які працюють прямо «з коробки» і крім перерахованих вище хмарних платформ забезпечують інтеграцію з VMware vCenter, Red Hat OpenStack Platform і Red Hat Satellite. Для цих плагінів достатньо надати облікові дані для підключення до цільової платформи, після чого їх можна використовувати як джерело інвенторів-даних в Ansible Tower.
Крім штатних плагінів з комплекту постачання Ansible Tower, є й інші інвентори-плагіни, що підтримуються силами спільноти Ansible. З переходом на Red Hat Ansible Content Collections ці плагіни стали включатись у відповідні колекції.
У цьому пості ми для прикладу розберемо роботу з інвентором-плагіном для ServiceNow, популярної платформи управління ІТ-сервісами, в CMDB якої замовники часто зберігають відомості про всі свої пристрої. Крім того, CMDB може містити корисний для автоматизації контекст, наприклад, відомості про власників серверів, рівні обслуговування (production/non-production), встановлені оновлення та вікна технічного обслуговування. Інвентори-плагін Ansible вміє працювати з CMDB ServiceNow та входить до складу колекції обслуговування зараз на порталі galaxy.ansible.com.
Git-репозиторій
Щоб використовувати в Ansible Tower інвентори-плагін із колекції, його треба задати як джерело проекту. У Ansible Tower проект – це інтеграція з якоюсь системою керування версіями, на кшталт репозиторію git, яку можна використовувати для синхронізації не тільки плейбуків автоматизації, а й змінних, а також списків інвенторів.
Файл servicenow.yml містить подробиці для інвенторів плагіна. У нашому випадку ми просто вказуємо таблицю CMDB ServiceNow, яку хочемо використовувати. А також задаємо поля, які будуть додаватися як змінні вузли, плюс певну інформацію щодо груп, які хочемо створити.
Зверніть увагу, що тут не конкретизується інстанс ServiceNow, до якого ми будемо підключатися, і не задаються жодні облікові дані для підключення. Все це ми пізніше налаштуємо у Ansible Tower.
Файл collections/requirements.yml потрібен для того, щоб Ansible Tower міг завантажити потрібну колекцію і отримати тим самим потрібний інвентор-плагін. Інакше довелося б вручну встановлювати та підтримувати цю колекцію на всіх наших вузлах Ansible Tower.
Після того, як ми відправили цю конфігурацію в систему контролю версій, Ansible Tower можна створювати проект, що посилається на відповідний репозиторій. У прикладі нижче Ansible Tower узгоджується з нашим репозиторієм на github. Зверніть увагу на SCM URL: він дозволяє прописати обліковий запис для підключення до приватного репозиторію, а також встановити конкретну гілку, мітку або коміт для вилучення.
Створюємо credentials для ServiceNow
Як уже говорилося, конфігурація в нашому репозиторії не містить облікових даних для підключення до ServiceNow і не конкретизує інстанс ServiceNow, з яким ми спілкуватимемося. Тому для завдання цих даних ми створимо credentials в Ansible Tower. Згідно документації інвентор-плагін ServiceNow, існує ряд змінних оточення, за допомогою яких ми і задамо параметри підключення, наприклад, так:
= username
The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE
set_via:
env:
- name: SN_USERNAME
У цьому випадку, якщо змінна оточення SN_USERNAME задана, то інвентор-плагін буде використовувати її як обліковий запис для підключення до ServiceNow.
Ще нам треба задати змінні SN_INSTANCE та SN_PASSWORD.
Отже, ми визначили потрібний нам тип credential, тепер можна додати обліковий запис ServiceNow і задати інстанс, ім'я користувача та пароль, ось так:
Створюємо інвентори
Отже, тепер у нас все готове створити інвентори в Ansible Tower. Назвемо його ServiceNow:
Після створення інвенторів ми можемо прикріпити до неї джерело даних. Тут ми вказуємо проект, який створили раніше, і вводимо шлях до нашого інвентору-файлу YAML у репозиторії системи керування версіями, у нашому випадку це servicenow.yml у корені проекту. Крім того, треба прив'язати обліковий запис ServiceNow.
Щоб перевірити, як усе працює, спробуємо синхронізуватись із джерелом даних, натиснувши кнопку «Sync all». Якщо все налаштовано правильно, то вузли мають імпортуватися до нашого інвентору:
Зверніть увагу, що необхідні нам групи також створилися.
Висновок
У цьому пості ми розглянули, як у Ansible Tower використовувати інвентори-плагіни з колекцій на прикладі плагіна ServiceNow. Ми також безпечно прописали облікові дані для підключення до нашого інстансу ServiceNow. Прив'язка інвенторів-плагінів з проекту працює не тільки зі сторонніми або плагінами, що настроюються, але і цілком може застосовуватися для модифікації роботи деяких штатних інвенторів. Завдяки цьому Ansible Automation Platform легко та безшовно інтегрується з існуючими інструментами при автоматизації ІТ-середовищ, які стають дедалі складнішими.
Знайти додаткові відомості з розглянутих у цьому посту тем, а також інших аспектів застосування Ansible можна тут:
*Red Hat не дає жодних гарантій коректності наведеного тут коду. Усі матеріали надаються на умовах відсутності підтримки, якщо тільки інше не заявлено у явному вигляді.