Безглуздий Популярна система управління конфігурацією, яка дозволяє віддалено керувати багатьма серверами. Ansbile використовується для автоматизації налаштування та розгортання програмного забезпечення. Основна перевага Ansible - вона не вимагає встановлення агентів на контрольованих хостах (як шеф -кухар або лялька). Досить встановити сервер Python та SSH на хостів. У цій статті ми розглянемо, як встановити та налаштувати сервер Ansible на Linux та як використовувати Ansible для управління іншими хостами Linux.
Зміст:
- Ansible Installation в Linux
- Починається Ansible Work
- Ansible Playbooks
Ansible Installation в Linux
Для Ansible вам потрібно встановити на керуванні та контрольованих хостах SSH та Python. Сам Ansible потрібно встановити лише на сервері управління.
OpenSsh -сервер зазвичай встановлюється за замовчуванням у всіх версіях Linux, тому він залишається встановити Python 3+ та Ansible.
Команди для ubuntu/debian:
Встановіть Python:
$ Sudo apt install python3
Перевірте версію:
$ python3 -Вверсія
Python 3.8.10
Встановіть Ansible:
$ Sudo apt Встановіть Ansible
$ Ansible -Вверсія
Ansible 2.дев'ять.6Установка в Centos, Rocky Linux, Rhel, Oracle:
$ DNF Встановити Epel-Relase
$ Dnf makecache
$ DNF Встановити python3
$ DNF Встановіть Ansible
Починається Ansible Work
Під час встановлення пакету буде створено каталог /etc /ansible за допомогою таких файлів конфігурації:
-
/etc/Ansible/хости
- Тут ви можете вказати список хостів, які ви будете контролювати через Ansible; -
/etc/ansible/ansible.CFG
- Файл налаштувань Ansible.
У файлі/etc/ansible/hosts ви можете створити кілька окремих груп хостів. Наприклад, усі хости з Nginx, з базами Mariadb тощо.D. У цьому прикладі ми створимо одну групу під назвою Servers_all.
$ Sudo nano/etc/ansible/hosts
[Servers_all] srvubunt1 ansible_host = 192.168.Чотирнадцять.144 ansible_user = sysops srvubunt2 ansible_host = 192.168.Чотирнадцять.142 ansible_user = sysops srv-db01 ansible_host = 192.168.Чотирнадцять.151 ansible_user = sysops
Ви можете вказати хости за допомогою DNS або IP. Ansible_user вказує користувача, який буде використовуватися для підключення SSH.
[Сервери] srvubunt1 ansible_host = 192.168.Чотирнадцять.144 srvubunt2 ansible_host = 192.168.Чотирнадцять.142 [servers_all: vars] ansible_port = 22 ansible_user = sysops
Щоб отримати вміст інвентаризації у вигляді дерева, виконайте:
$ Ansible-Inventory-Граф
"Host_key_checking = false"
Тепер за допомогою вбудованого модуля Пінга Ви можете перевірити з'єднання. Пінг -модуль перевіряє:
- доступність хостів;
- Дані бухгалтерського обліку SSH;
- Можливість запускати Ansible Module на хостах за допомогою Python.
Давайте перевіримо наявність усіх хостів у файлі інвентаризації:
$ Ansible all -m ping -ask -pass
Усі господарі доступні.
$ Sudo apt Установіть sshpass
В іншому випадку при використанні параметра --Запитувати
З'явиться помилка:
Щоб отримати тип з'єднання "SSH" з паролями, потрібно встановити програму SSHPASS.
У попередньому прикладі, щоб підключитися до віддалених хостів, потрібно вводити пароль користувача кожного разу. Так що, виконуючи команди та Ansible PLA, пароль не запитується, вам потрібно налаштувати автентифікацію SSH за допомогою клавіш.
Генерувати клавіші RSA на сервері управління:
$ Ssh -keygen -t rsa
Тепер вам потрібно скопіювати ключ у кожен вузол за допомогою SSH-Copy-Ine:
$ ssh-copy-isy [email protected].Чотирнадцять.144
# nano/etc/ssh/sshd_config
PubKeyAuthentication Так AuthrizedKeysFile .Ssh/avollized_keys
# Сервіс SSHD перезапуск
Тепер ви можете виконати команду через Ansible, не вводячи пароля. Давайте перевіримо час роботи на всіх серверах у групі серверів_all:
$ Ansible servers_all -a 'puttime'
Ось кілька прикладів інтерактивної ефективності команд для хостів у файлі інвентаризації.
Ми виконаємо інвентаризацію стану господарів. У цьому прикладі нам потрібна лише інформація про оперативну пам’ять на серверах:
$ Ansible -m налаштування -a 'фільтр = ansible_memtotal_mb'
Використовуючи модуль оболонки, перевірте час роботи на всіх хостах:
$ Ansible -m shell -a 'puttime' all
Ansible Playbooks
Ви можете надсилати команди на керовані сервери через консоль (ad-hoc) або за допомогою спеціального файлу Playbook у форматі YAML. У ігровій книзі ви можете описати необхідний стан системи. Ansible при запуску перевірить, чи відповідає конфігурація контрольованого хоста опису в ігровому книзі.
Розглянемо приклад простої ігрової книги, що Midnight Commander (MC) повинен встановити на хостів.
Створіть каталог для ігрових книжок:
$ Sudo mkdir -p/etc/ansible/playbooks
Тепер створіть файл YML:
$ Sudo nano/etc/ansible/playbooks/mc-розгортання.yml
- Хости: Servers_All Stae: Так Стати_метд: Судо Завдання: - Ім'я: Оновлення apt: update_cache = Так - Ім'я: Встановити mc apt: name = mc state = останній
Якщо контрольовані хости працюють над Centos-як версією Linux, вам потрібно замінити останній рядок yum: name = mc state = останній
.
Для виконання ігрової книги про хостів у групі:
$ Ansible-playbook/etc/ansible/playbooks/mc-розгортання.Yml -ask-become-pass
Щоб вимкнути пароль за допомогою sudo в Ubuntu, вам потрібно виконати команду на керованих хостах:
$ echo "sysops all = (all) nopasswd: all" | Sudo tee /etc /sudoers.D/Sysops
Після цього ви можете запустити ігрову книжку без параметра --Запитати
.
Результати шоу ігрової книги, на яких серверах він успішно працював.
Як графічна оболонка, ви можете використовувати Ansible Tower (оплачується від Redhat) та Ansible awx (безкоштовно). Використання Ви можете керувати не лише серверами Linux, але й системами Windows (вам знадобиться налаштований WinRM). Особливості управління Windows через Ansible ми розглянемо в наступній статті.