MyTetra Share
Делитесь знаниями!
Ansible: установка и первоначальная настройка
27.11.2019
08:59
Автор: setevoy
Текстовые метки: linux, ansible, оркестрация, настройка
Раздел: Компьютер - Linux - Оркестрация - Ansible

Ansible — система управления конфигурациями, написанная на Python, которая позволяет выполнять управление и настройку удалённых серверов с одного хоста.

Ближайшая аналогия — Puppet.

Для установки Ansible из репозитория — потребуется добавить репозиторий Epel.

Находим пакет Ansible:


# yum search ansible

...

ansible-lint.noarch : Best practices checker for Ansible

ansible-inventory-grapher.noarch : Creates graphs representing ansible inventory

ansible.noarch : SSH-based configuration management, deployment, and task execution system



Устанавливаем:



# yum install ansible

...

Installed:

  ansible.noarch 0:1.8.4-1.el6

Complete!



Можно установить используя PIP:



# pip install ansible



Настройки удалённых хостов хранятся в файле /etc/ansible/hosts.

Бекапим его:



# mv /etc/ansible/hosts /etc/ansible/hosts.default



Создаём заново, и добавляем сервер cent1, который будет находится в группе test box, и группу local — для машины, на которой работает сам Ansible, с именем cent1:



[test box]

cent2


[local]

cent1



Оба хоста добавлены в /etc/hosts:



# grep -E "cent1|cent2" /etc/hosts

10.***.***.250 cent2

127.0.0.1 cent1



Работа Ansible с удалёнными серверами по умолчанию предполагает, что у вас имеется настроенное SSH-подключение с авторизацией по RSA-ключам.

На сервере с Ansible переключаемся на пользователя, под которым будем выполнять подключение:



# su -l setevoy



Создаём RSA-ключ:



$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/setevoy/.ssh/id_rsa):

Created directory '/home/setevoy/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/setevoy/.ssh/id_rsa.

Your public key has been saved in /home/setevoy/.ssh/id_rsa.pub.



На удалённом сервере — включаем авторизацию по ключам. В файле /etc/ssh/sshd_config убираем комментарии перед строками RSAAuthentication yesPubkeyAuthentication yes и AuthorizedKeysFile .ssh/authorized_keys.


Перезапускаем SSH-сервер:



# service sshd restart

Stopping sshd:                                             [  OK  ]

Starting sshd:                                             [  OK  ]



На сервере c Ansible — копируем id_pub.pub на сервер cent2 с помощью ssh-copy-id:



$ ssh-copy-id -i ~/.ssh/id_rsa.pub setevoy@cent2

setevoy@cent2's password:

Now try logging into the machine, with "ssh 'setevoy@cent2'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.



Пробуем подключиться:



$ ssh cent2

The authenticity of host 'cent2 (10.***.***.250)' can't be established.

RSA key fingerprint is d1:25:28:1f:5c:17:26:eb:0d:9a:72:ae:7c:44:ce:91.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'cent2' (RSA) to the list of known hosts.

Last login: Thu Mar  5 13:56:55 2015 from 10.249.140.93



Повторяем добавление ключа в файл authorized_keys для локального пользователя:



$ ssh-copy-id -i ~/.ssh/id_rsa.pub setevoy@cent1



Теперь мы можем использовать Ansible.

Для проверки — обычный ping всех серверов, описанных в /etc/ansible/hosts:



$ ansible all -m ping

cent2 | success >> {

    "changed": false,

    "ping": "pong"

}


cent1 | success >> {

    "changed": false,

    "ping": "pong"

}



Можно обойтись и без создания ключей, но для этого потребуется установить sshpass:



# yum install sshpass

$ ansible cent2 -m ping -k -u root

SSH password:

cent2 | success >> {

    "changed": false,

    "ping": "pong"

}



Тут мы указываем:


  • cent2 вместо all — обратиться к конкретной машине из списка в /etc/ansible/hosts;
  • -m — модуль Ansible ping;
  • -k — запросить пароль, вместо использования RSA-ключей;
  • -u — использовать заданное имя пользователя;


Полный список опций доступен по команде:



$ ansible --help




 
MyTetra Share v.0.52
Яндекс индекс цитирования