- Исходные данные
# cat /etc/os-release Ubuntu 18.04 LTS # ansible --version ansible 2.7.9
- Сервер управления.
# apt-get update # apt-get install software-properties-common # apt-add-repository ppa:ansible/ansible # apt-get install ansible
Диктовать свою непреклонную волю другим серверам будем из-под локального непривилегированного пользователя ansible. Генерируем пару ключей для ssh, если их нет. Во время генерации программа попросит задать пароль - оставляем его пустым.$ ssh-keygen -b 4028
В итоге в /home/ansible/.ssh у нас появятся два файла с приватным (id_rsa) и публичным (id_rsa.pub) ключами. Публичный ключ надо добавить на все сервера, которыми планируется управлять.
- Подчиненный сервер
Хотя Ansible не использует агентов на подчиненных серверах, первоначальная настройка все же нужна:
- добавляем содержимое /home/ansible/.ssh/id_rsa.pub с сервера управления в файл ~/.ssh/authorized_keys на подчиненном сервере тому пользователю, под которым будем управлять подчиненным сервером;
- если пользователь не root, то делаем настройки, чтобы пользователь мог работать с sudo без пароля;
- Устанавливаем python (пример для Ubuntu):# apt-get install python
- Inventory
Подчиненные сервера хранятся в /etc/ansible/hosts
Формат файла довольно прост, например:[servers] server1 ansible_ssh_host=192.168.3.10 server2 ansible_ssh_host=192.168.3.11 server3 ansible_ssh_host=192.168.3.12
[servers] - название группы серверов
server1..server3 - alias-ы серверов
Для каждого хоста можно указать индивидуальные имя пользователя и порт:server1 ansible_ssh_host=192.168.3.10 ansible_ssh_port=1122 server2 ansible_ssh_host=192.168.3.11 ansible_ssh_user=root
Можно указать индивидуальные настройки подключения для всей группы:[servers:vars] ansible_ssh_user: root ansible_ssh_port: 1122
Или для всех серверов, что есть в hosts, записав настройки в системную группу all:[all:vars] ansible_ssh_user: root ansible_ssh_port: 1122
Есть ещё одна системная группа, ungrouped, в ней содержатся все хосты, которые не числятся в других группах, кроме all.
- Проверяем
$ ansible -m ping servers server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }
или$ ansible -m ping server1:server2 server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" }
Статья опубликована: 2019-03-19 16:11:39
Последние правки: 2019-03-25 17:35:32
Установка и первоначальная настройка ansible на ubuntu 18.04.