Пост

Установка и настройки Ansible на CentOS 7

Ansible — система управления конфигурациями, написанная на Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению.

Установка Ansible

Добавляем в систему репозиторий EPEL и устанавливаем программу

1
2
$ sudo yum install epel-release
$ sudo yum install ansible

Настройки удалённых хостов хранятся в файле /etc/ansible/hosts
Сделаем резервную копию этого файла

1
$ sudo mv /etc/ansible/hosts /etc/ansible/hosts.default

Настройка подключения

На сервере с Ansible сгенерируем RSA-ключ

1
$ sudo ssh-keygen -t rsa

На удаленном сервере (который будем администрировать с помощью Ansible) включаем в SSH авторизацию  по ключам.
Для этого редактируем конфигурационный файл sshd_config и перезапускаем службу

1
2
3
4
5
$ sudo nano /etc/ssh/sshd_config
PubkeyAuthentication yes 
AuthorizedKeysFile .ssh/authorized_keys

$ sudo service sshd restart

На сервере c Ansible копируем id_pub.pub на удаленный сервер с помощью утилиты ssh-copy-id

1
$ sudo ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Тестируем подключение, при этом пароль не должен запрашиваться

1
$ sudo ssh 192.168.1.84

Добавим наш тестовый сервер в файл hosts, для дальнейшего тестирования возможностей Ansible

1
2
3
$ sudo nano /etc/ansible/hosts
[test]
centos ansible_ssh_host=192.168.1.86

Проверяем работу Ansible

1
2
3
4
5
$ sudo ansible test -m ping
centos | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

где test - группа ПК (см. файл /etc/ansible/hosts)

Если нет желания включать авторизацию в SSH по файлу, можно установить утилиту sshpass, и посмотреть на ответ Ansible

1
2
3
4
5
6
7
$ sudo yum install sshpass
$ sudo ansible test -m ping -k -u root
SSH password:
centos | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Некоторые команды

1
2
3
4
5
6
7
8
9
10
11
$ ansible -m ping all    - пинг
$ ansible test -m shell -a 'cat /etc/redhat-release'     - Версия Centos
$ ansible test -m shell -a 'uname -a'     - Выполнить команду uname -a
$ ansible test  -m setup - узнать информацию о сервере
$ ansible -i hosts -m setup -a 'filter=ansible_memtotal_mb' all      - сколько памяти доступно на всех хостах
$ ansible -i hosts -m setup -a 'filter=ansible_all_ipv4_addresses' all      - узнать ip-адреса всех хостов
$ ansible -i hosts -m setup -a 'filter=ansible_default_ipv4' all
$ ansible -i hosts -m setup -a 'filter=ansible_distribution' all
$ ansible -i hosts -m setup -a 'filter=ansible_distribution_version' all
$ ansible -i hosts -m setup -a 'filter=ansible_memory_mb' all
$ ansible -i hosts -m setup -a 'filter=ansible_processor' all
Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.