file

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 [email protected]  
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== [email protected]  

Скопируйте сгенерированный ключ на каждый хост, который будет обслуживаться Ansible:

ssh-copy-id user_name@ip-address  

Например: ssh-copy-id [email protected]

С помощью текстового редактора откройте следующий файл конфигурации:

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"
}

file

Обновлено 20 апреля 2020 г.