Початок роботи з Ansible на платформі Ubuntu для оптимізації управління середовищем і конфігурацією.
Управління конфігураціями є ключовим етапом у рамках циклу DevOps. Воно сприяє автоматизації та координації ІТ-інфраструктури.
Існує цілий ряд інструментів для управління конфігурацією, серед яких Puppet, Ansible, Chef та SaltStack. Ansible виділяється як один з найбільш затребуваних інструментів у сфері DevOps. Він здатний легко керувати великою кількістю серверів і всією ІТ-інфраструктурою.
У цій статті ми розглянемо наступні аспекти:
- Процес встановлення Ansible
- Налаштування обміну ключами SSH
- Конфігурація Ansible клієнта
- Тестування Ansible
Інсталяція Ansible
Для спрощення, давайте використаємо Ansible на двох серверах. Один з них буде ansible-сервером, а інший – ansible-клієнтом, з наступними IP-адресами:
- ansible-сервер – 10.0.0.1
- ansible-клієнт – 10.0.0.25
Встановлення є досить простим процесом. На всіх серверах, де ви плануєте використовувати Ansible, потрібно виконати наведені нижче кроки, включно з обома згаданими серверами.
- Виконайте команду нижче для встановлення необхідного програмного забезпечення, що є передумовою для встановлення Ansible.
[email protected]:~# apt install software-properties-common
- Додайте репозиторій з пакетом Ansible.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
- Оновіть APT (Advanced Packaging Tool) для отримання свіжих версій пакетів.
[email protected]:~# apt update
- І, нарешті, запустіть цю команду для встановлення Ansible.
[email protected]:~# apt install ansible
Процес встановлення потрібних пакетів займе лише кілька секунд.
Як переконатися, що встановлення відбулося успішно та перевірити версію?
Це просто. Використовуйте команду `–version` з ansible, як показано нижче.
[email protected]:~# ansible --version ansible 2.8.1 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0] [email protected]:~#
Як бачите, встановлена Ansible версії 2.8.1, і відображається необхідна інформація, як-от розташування файлу конфігурації та модуля python.
Наступним кроком буде налаштування обміну ключами SSH, щоб сервер та клієнти могли взаємодіяти один з одним.
Обмін ключами SSH
Ansible встановлює з’єднання зі своїм клієнтом за допомогою SSH (Secure shell).
Спочатку ми згенеруємо відкритий ключ на ansible-сервері, який потрібно буде скопіювати на ansible-клієнт.
Переконайтеся, що ви виконали вхід як користувач root.
- Згенеруйте пару ключів за допомогою команди ssh-keygen.
[email protected]:~# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected] The key's randomart image is: +---[RSA 2048]----+ | =.+oo . | | . B.B.= . | | . o @oE + | | . *oO * . | | o++.S + . | | .o +o . + | | .o..o + | | ..o o . | | .o o. | +----[SHA256]-----+ [email protected]:~#
Як видно, відкритий ключ згенеровано в каталозі .ssh. Повний шлях – /root/.ssh/id_rsa.pub.
Зверніть увагу, що файли приватного та відкритого ключів мають бути захищені від читання іншими користувачами. Перевірте їхні дозволи, переглянувши вміст каталогу.
cd /root/.ssh
[email protected]:~# ls -l -rw------- 1 root root 1679 Jun 19 00:37 id_rsa -rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub
Якщо ви виявите, що дозволи встановлені неправильно, змініть їх командою chmod.
Приклад:
chmod 400 id_rsa chmod 400 id_rsa.pub
Скопіюємо відкритий ключ на Ansible хост з IP-адресою 10.0.0.25.
[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established. ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added. [email protected]:~/.ssh#
З виводу вище видно, що 1 ключ було успішно додано. Це свідчить про успішний обмін ключами SSH.
Наступним кроком буде налаштування Ansible клієнта.
Налаштування Ansible клієнта
Припускається, що ви вже виконали встановлення Ansible на клієнтському сервері, як було описано на попередніх етапах.
Налаштування клієнта або хоста передбачає інформування Ansible сервера про наявність клієнтів. Для цього:
- Увійдіть на Ansible сервер.
- Перейдіть до директорії /etc/ansible.
- Додайте наступний рядок у файл hosts за допомогою улюбленого текстового редактора.
[Client] node1 ansible_ssh_host=10.0.0.25
Тестування Ansible
Якщо всі кроки виконано правильно, ви отримаєте повідомлення SUCCESS після запуску команди нижче на ansible-сервері.
[email protected]:~/.ssh# ansible -m ping Client node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } [email protected]:~/.ssh#
Ця команда надсилає запит клієнту для перевірки з’єднання і підтвердження успішного встановлення зв’язку.
Висновок
Сподіваємося, ця стаття дала вам уявлення про те, як розпочати роботу з Ansible. Слідкуйте за нашими оновленнями та іншими навчальними матеріалами з Ansible. Також ви можете переглянути курс “Mastering Ansible” на Udemy.