Ansible — система управления конфигурациями, написанная на языке программирования Python. Используется для автоматизации настройки и развертывания программного обеспечения.Это инструмент с открытым исходным кодом для управления программным обеспечением, конфигурацией и развертыванием приложений на множестве хостов.
Установка
Сначала обновите индекс пакетов:
sudo apt update
Используйте для установки PPA-репозиторий. Установите software-properties-common, пакет, который упрощает управление независимыми программными репозиториями.
sudo apt install software-properties-common
Затем добавьте репозиторий Ansible PPA с помощью следующей команды:
sudo apt-add-repository ppa:ansible/ansible
Для присоединения нажмите клавишу Enter.
Еще раз обновите базу пакетов и выполните установку Ansible:
sudo apt update
sudo apt install ansible
После этого, на сервере будет установлено программное обеспечение Ansible, необходимое для администрирования ваших хостов.
Настройка доступа к хостам по SSH
С помощью следующей команды создайте SSH-ключ, который будет использоваться для подключения к хостам:
ssh-keygen -t rsa -b 4096
На сервере Ansible используйте команду cat, чтобы отобразить открытые ключи SSH в терминале:
cat ~/.ssh/id_rsa.pub
root@kvmde67:~# ssh-keygen -t rsa -b 4096
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:Zvr1I9IfDK3wCK9K5h5KtWBtC0R2ppUtgQOB/fikhNE root@kvmde67.fornex.org
The key's randomart image is:
+---[RSA 4096]----+
|+=o.=+ |
|ooE=o . |
| oo+ . |
|..o.o . |
| .+++ . S . . |
| ..=.o * + + |
| . * . o.+ o |
| . = . o..o... |
| ..+.. .. oo. |
+----[SHA256]-----+
root@kvmde67:~# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQClTC6YhDZdHhiTj2UjDdOv5gpJufT0YKF6tnE1YwIFRrROBH8+hG7hyNlRtc7c5NGTp7fXXoVhnFRFe+thN/4ZDJ/1A44Pe91NldOBVovMlulk9RsRQqvLX8sZXLzY17i+2DINVF3aoOh6o3QEHrk3Axh+qz5DUYvJ70wM6GM40szUBf0wpA1GwoUaOmT4oZVDN6xRT05k++DGcik/EgwWy8hWK8hW8fmg5kXiWSvslLM8i/URaFFtTiFrna1NB75Rbl9brMLc3xMwUzqXRnohRBGbP/M7Js7HoaiS3yHqxIeo2JPVfdmxwpdCB2y14FTG0GU7gTeEOg6BUYNsSlU6IKv593RIGZ9hyPGnDiTZd3jgaOdOoYTKiHWj23zlrqqwSWbNQ== root@kvmde67.fornex.org
Скопируйте сгенерированный ключ на каждый хост, который будет обслуживаться Ansible:
ssh-copy-id user_name@ip-address
Например: ssh-copy-id root@5.187.2.32
С помощью текстового редактора откройте следующий файл конфигурации:
sudo nano /etc/ansible/hosts
Используя следующий синтаксис, определяется группа [servers] с двумя разными серверами, каждый из которых имеет собственный индентификатор: server1, server2. Обязательно замените выделенные IP-адреса IP-адресами ваших хостов Ansible.
[group_name]
server1 ansible_host=your_server_ip_1
server2 ansible_host=your_server_ip_2
[servers:vars]
ansible_python_interpreter=/usr/bin/python3
Подгруппа servers:vars задает параметр хоста ansible_python_interpreter, который будет действителен для всех хостов в группе servers. С этим значением параметра удаленный сервер использует исполняемый файл Python 3 /usr/bin/python3, а не /usr/bin/python (Python 2.7)
Например:
[servers]
server1 ansible_host=5.187.2.32
server2 ansible_host=5.187.5.236
[servers:vars]
ansible_python_interpreter=/usr/bin/python3
Сохраните изменения и закройте файл (CTRL + X, Y, Enter).
Важно!: на каждом хосте должен быть установлен язык python и пакет python-apt:
apt-get install python python-apt
Проверка подключения
По умолчанию Ansible выполняет подключение к удаленному хосту от имени пользователя root, если вы используете другого пользователя, то необходимо выполнить дополнительные настройки. Создайте каталог в структуре конфигурации, в котором будут находиться файлы в формате YAML для каждой группы:
sudo mkdir /etc/ansible/group_vars
Создайте подкаталог с названием вашей группы:
sudo nano /etc/ansible/group_vars/group_name
Например:
sudo nano /etc/ansible/group_vars/servers
Вставьте следующую строку, вместо user_name указав имя вашего пользователя:
---
ansible_user: user_name
Сохраните изменения.
Примечание: отдельные хосты можно настроить, создав алиасы и файлы с именами в соответствии с их псевдонимом в каталоге /etc/ansible/host_vars
Для проверки подключения выполните команду ping:
ansible -m ping all
Результат:
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}