Як налаштувати файл інвентаризації Ansible (покроковий посібник)

Короткий зміст статті

Ansible, відкритий механізм автоматизації ІТ, оптимізує завдання в ІТ-середовищах, підвищуючи масштабованість, узгодженість і надійність. Ansible є універсальним і виконує три основні завдання: налаштування серверів (провізінінг), коригування налаштувань і управління послугами (управління конфігурацією) та автоматизація розгортання додатків. Він популярний для автоматизації завдань на серверах, віртуальних машинах і в хмарі. Ansible може налаштовувати різні системи, включаючи бази даних, сховища, мережі та брандмауери.

ЩО ТАКЕ ФАЙЛ ІНВЕНТАРІ ANSIBLE?

В Ansible управління великою кількістю віддалених серверів може бути складним завданням. Щоб полегшити цей процес, ви можете групувати та націлювати свої сервери за допомогою спеціального файлу, який називається «файл інвентарю Ansible». Цей файл допомагає організувати ваші сервери в логічні групи, що полегшує застосування конфігурацій або виконання команд на певних наборах серверів.

Файл інвентаризації Ansible служить інструментом відстеження для системних адміністраторів для управління їх віддаленими системами. За замовчуванням Ansible використовує файл хоста Ansible, розташований у каталозі /etc/ansible, для переліку всіх керованих віддалених вузлів. Однак Ansible пропонує гнучкість, дозволяючи користувачам створювати власні файли інвентаризації, адаптовані до їхніх потреб. Це особливо корисно в складних середовищах, де розділення керованих вузлів на окремі файли інвентаризації є кращим варіантом, ніж стандартна настройка файлу хоста Ansible.

У цьому підручнику ми розглянемо встановлення Ansible на Ubuntu 22.04 та налаштування власного файлу інвентаризації Ansible на вузлі управління.

ПЕРЕДУМОВИ

Для налаштування файлу інвентаризації Ansible необхідні такі передумови:

  • Вузол управління Ansible: це має бути машина з Ubuntu 22.04, на якій встановлено Ansible і налаштовано для підключення до хостів Ansible за допомогою ключів SSH. Важливо мати на цьому вузлі стандартного користувача з правами sudo і переконатися, що брандмауер увімкнено відповідно до стандартних процедур налаштування сервера.
  • Керовані вузли / хости Ansible: це віддалені сервери під управлінням Ubuntu 22.04, які будуть керуватися Ansible. Ви повинні мати принаймні два таких сервери, налаштовані та доступні з вузла управління через SSH.

ЯК ВСТАНОВИТИ ANSIBLE НА UBUNTU 22.04?

Спочатку ви встановите Ansible на контрольному вузлі. Щоб встановити Ansible на контрольному вузлі та налаштувати SSH-з'єднання без пароля з віддаленими хостами, виконайте такі кроки:

КРОК 1: ВСТАНОВИТИ ANSIBLE

Увійдіть на контрольний вузол через SSH або термінал і оновіть списки системних пакетів за допомогою такої команди:

$ sudo apt update

Щоб встановити Ansible та його залежності, скористайтеся наведеною нижче командою:

$ sudo apt install -y ansible

КРОК 2: ПЕРЕВІРКА ВСТАНОВЛЕННЯ ANSIBLE

Перевірте версію Ansible, щоб переконатися в успішності встановлення:

$ ansible --version

КРОК 3: НАЛАШТУВАННЯ ФАЙЛУ ІНВЕНТАРІ

Відкрийте файл інвентарі за замовчуванням за допомогою текстового редактора:

$ sudo nano /etc/ansible/hosts

За замовчуванням файл містить коментарі та приклади. Ви можете вказати імена хостів або IP-адреси та згрупувати їх за потреби.

КРОК 4: СТВОРЕННЯ ПАРИ КЛЮЧІВ SSH

Створіть пару ключів SSH на вузлі керування:

$ ssh-keygen

Вищезазначена команда створює пару відкритого та закритого ключів, які зберігаються в каталозі ~/.ssh/.

КРОК 5: КОПІЮВАННЯ ВІДКРИТОГО КЛЮЧА НА ВІДДАЛЕНІ ХОСТИ

Використовуйте ssh-copy-id для копіювання відкритого ключа на кожен віддалений хост:

ssh-copy-id user@remote_host_ip

Замініть user на своє ім'я користувача, а remote_host_ip на IP-адресу віддаленого хоста.

Введіть пароль для віддаленого хоста, коли з'явиться запит.

КРОК 6: ПЕРЕВІРКА БЕЗПАРОЛЬНОГО SSH-З'ЄДНАННЯ

Перевірте SSH-з'єднання з віддаленим хостом без введення пароля:

$ ssh user@remote_host_ip

Ви повинні мати можливість увійти в систему без запиту пароля.

Якщо у вас є додаткові хости, повторіть процес для додаткових хостів. Повторіть кроки 5 і 6 для кожного додаткового віддаленого хоста, переконавшись, що ви можете підключитися до кожного з них через SSH без пароля.

Виконавши ці кроки, ви встановите Ansible на свій контрольний вузол і налагодите безпарольне SSH-з'єднання з віддаленими хостами, що забезпечить безперебійну комунікацію для завдань автоматизації Ansible.

ЯК СТВОРИТИ ВЛАСНИЙ ФАЙЛ ІНВЕНТАРІЗАЦІЇ ANSIBLE?

Щоб створити власний файл інвентаризації для управління декількома вузлами в окремих проектах в Ansible, виконайте такі кроки:

КРОК 1: СТВОРІТЬ КАТАЛОГ ПРОЕКТУ

Відкрийте термінал і створіть каталог для вашого проекту. Наприклад, припустимо, ви хочете створити каталог проекту з назвою «ansible»:

$ mkdir ansible && cd ansible

КРОК 2: СТВОРІТЬ ФАЙЛ ІНВЕНТАРІ

У каталозі проекту створіть простий текстовий файл для вашого інвентарю:

$ sudo nano inventory

Ви можете назвати файл довільно.

КРОК 3: ДОДАТИ УПРАВЛЯЄМІ ВУЗЛИ

У файлі інвентаризації Ansible перелічіть IP-адреси ваших керованих вузлів, кожну в окремому рядку:

192.168.1.6

198.148.1.5

Додайте більше вузлів за потреби. Після додавання хостів збережіть зміни та закрийте текстовий редактор.

КРОК 4: ПЕРЕВІРКА УПРАВЛЯЄМИХ ХОСТІВ

Переконайтеся, що ваші керовані хости вказані правильно, використовуючи команду інвентаризації Ansible:

$ ansible-inventory -i ansible/inventory --list

Обов'язково вкажіть повний шлях до файлу інвентаризації за допомогою опції -i.

КРОК 5: ВИКОНАННЯ ЗАВДАНЬ З ВИКОРИСТАННЯМ НАЛАШТОВАНОЇ ІНВЕНТАРИЗАЦІЇ

Після створення налаштованого файлу інвентаризації ви можете виконувати завдання Ansible або плейбуки, спрямовані на керовані хости:

$ sudo ansible -i ansible/inventory -m ping all

Замініть -m ping на будь-який інший модуль Ansible або вкажіть плейбук для виконання на хостах, перелічених у вашому файлі інвентаризації.

Виконавши ці кроки, ви ефективно організуєте та керуватимете інвентаризацією Ansible, створюючи окремі файли інвентаризації для різних проектів, спрощуючи відстеження ресурсів та співпрацю між системними адміністраторами.

ОРГАНІЗАЦІЯ СЕРВЕРІВ У ГРУПИ ТА ПІДГРУПИ У ФАЙЛІ ІНВЕНТАРИЗАЦІЇ ANSIBLE

Щоб організувати вузли в групи та підгрупи в Ansible для кращого управління інвентаризацією, виконайте такі кроки:

КРОК 1: ГРУПУВАННЯ СЕРВЕРІВ

У файлі інвентаризації організуйте сервери в різні групи та підгрупи для кращого управління. Ця практика не тільки дозволяє організувати хости, але й дає змогу використовувати групові змінні, що корисно для управління декількома середовищами стадіювання за допомогою Ansible.

[webservers]

192.168.1.6

192.168.1.5

[dbservers]

192.168.1.7

server_hostname

[development]

192.168.1.5

192.168.1.7

[production]

192.168.1.5

server_hostname

КРОК 2: ВИКОРИСТАННЯ МЕТАГРУП

Ви можете об'єднати кілька груп як дочірні групи під «батьківською» групою, створивши метагрупу. Це дозволяє організувати більш детальну структуру.

ПРИКЛАД:

[web_dev]

192.168.1.6

[web_prod]

192.168.1.5

[db_dev]

192.168.1.7

[db_prod]

server_hostname

[webservers:children]

web_dev

web_prod

[dbservers:children]

db_dev

db_prod

[development:children]

web_dev

db_dev

[production:children]

web_prod

db_prod

КРОК 4: ПОКРАЩЕННЯ ТАРГЕТУВАННЯ

Розбийте групи або створіть альтернативні схеми, щоб за необхідності орієнтуватися на менші групи серверів, особливо якщо кількість ваших серверів зростає.

ЯК НАЛАШТУВАТИ ПСЕВДОНІМИ ХОСТІВ В ІНВЕНТАРІ ANSIBLE?

Використовуйте псевдоніми для найменування серверів, щоб полегшити пошук під час виконання команд і плейбуків.

Додайте змінну з назвою ansible_host після імені псевдоніма, яка містить відповідну IP-адресу або ім'я хоста сервера.

ПРИКЛАД:

server1 ansible_host=192.168.1.6

server2 ansible_host=192.168.1.5

server3 ansible_host=192.168.1.7

server4 ansible_host=server_hostname

При виконанні команд і сценаріїв використовуйте посилання на сервери за їхніми псевдонімами, а не за IP-адресами або іменами хостів. Це спрощує націлювання на окремі сервери.

$ sudo ansible -i ansible/inventory -m ping server1

ЯК НАЛАШТУВАТИ ІМЕНА ЗМІННИХ У ФАЙЛІ ІНВЕНТАРІ ANSIBLE?

У Ansible змінні відіграють важливу роль в управлінні відмінностями між керованими хостами. Вони дозволяють відображати відмінності між системами під час виконання плейбуків або спеціальних команд. Наприклад, у попередньому розділі ми використовували змінну ansible_host, щоб вказати IP-адресу керованого вузла.

У файлах інвентаризації змінні можуть визначати різні атрибути, такі як імена хостів, типи з'єднань, порти тощо. У наступному прикладі ми розширюємо цю концепцію, вказавши користувача, який використовується для встановлення віддалених з'єднань з вузлами.

Для кожного запису сервера ми визначаємо дві змінні: ansible_host, яка вказує IP-адресу хоста, та ansible_user, яка вказує користувача, що використовується для віддаленого з'єднання.

server01 ansible_host=192.168.1.6 ansible_user=root

server02 ansible_host=192.168.1.5 ansible_user=user

Крім того, змінні також можна визначати на рівні групи, що дозволяє оптимізувати управління на декількох хостах. У цьому прикладі ми створюємо дві окремі групи змінних — [webservers_a:vars] і [webservers_b:vars] — кожна з яких визначає користувача для підключення до керованих вузлів.

[webservers_a]

server01 ansible_host=192.168.1.6

[webservers_b]

server02 ansible_host=192.168.1.5

[webservers_a:vars]

ansible_user=root

[webservers_b:vars]

ansible_user=user

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

ВИКОРИСТОВУЙТЕ ШАБЛОНИ ДЛЯ ВИКОНАННЯ КОМАНД І ПЛАНІВ ДІЙ

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

Розглянемо такий файл інвентаризації:

[webservers]

192.168.1.6

192.168.1.5

[dbservers]

192.168.1.7

server_hostname

[development]

192.168.1.6

192.168.1.7

[production]

192.168.1.5

server_hostname

Тепер припустимо, що вам потрібно виконати команду, спрямовану тільки на сервери баз даних, що працюють у виробничому середовищі. Ви можете використовувати такий шаблон:

$ ansible dbservers:\&production -m ping

Тут символ & позначає логічну операцію AND, вказуючи, що дійсні цілі повинні бути присутніми в обох групах. Оскільки це спеціальна команда в Bash, ми додаємо символ \ escape, щоб уникнути помилок командного рядка.
Як альтернатива, щоб вибрати тільки сервери в групі бази даних, але не в виробництві, ви можете використовувати:

$ ansible dbservers:\!production -m ping

Символ « означає, що ціль не повинна належати до певної групи. Знову ж таки, для обробки спеціальних символів у Bash ми використовуємо символ екранування \.

Більш просунуті параметри шаблонів, такі як позиційні шаблони та регулярні вирази, можна знайти в документації Ansible.

ВИСНОВОК

Цей посібник містить вичерпний огляд інвентаризації Ansible. Ми розглянули методи організації вузлів у групи та підгрупи, налаштування змінних інвентаризації та використання шаблонів для націлювання на конкретні групи серверів під час виконання команд і плейбуків.

Якщо ви використовуєте сервер VPS Linux, ви також можете використовувати Ansible і налаштовувати файли інвентаризації.

 

 

Залиште свої відгуки

Поділіться своїми думками та допоможіть нам покращитися! Ваш відгук важливий для нас.

Завантажте своє фото