Установка и настройки Ansible на CentOS 7
Ansible — система управления конфигурациями, написанная на Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению.
Установка Ansible
Добавляем в систему репозиторий EPEL и устанавливаем программу
[root@localhost]# yum install epel-release
[root@localhost]# yum install ansible
Настройки удалённых хостов хранятся в файле /etc/ansible/hosts
Сделаем резервную копию этого файла
[root@localhost]# mv /etc/ansible/hosts /etc/ansible/hosts.default
Настройка подключения
На сервере с Ansible сгенерируем RSA-ключ
[root@localhost]# ssh-keygen -t rsa
На удаленном сервере (который будем администрировать с помощью Ansible) включаем в SSH авторизацию по ключам.
Для этого редактируем конфигурационный файл sshd_config и перезапускаем службу
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
[root@localhost]# nano /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
[root@localhost]# service sshd restart
На сервере c Ansible копируем id_pub.pub на удаленный сервер с помощью утилиты ssh-copy-id
[root@localhost]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.84
Тестируем подключение, при этом пароль не должен запрашиваться
[root@localhost]# ssh 192.168.1.84
Добавим наш тестовый сервер в файл hosts, для дальнейшего тестирования возможностей Ansible
[root@localhost]# nano /etc/ansible/hosts
[test]
centos ansible_ssh_host=192.168.1.86
Проверяем работу Ansible
[root@localhost]# ansible test -m ping
centos | SUCCESS => {
"changed": false,
"ping": "pong"
}
где test – группа ПК (см. файл /etc/ansible/hosts)
Если нет желания включать авторизацию в SSH по файлу, можно установить утилиту sshpass, и посмотреть на ответ Ansible
[root@localhost]# yum install sshpass
[root@localhost]# ansible test -m ping -k -u root
SSH password:
centos | SUCCESS => {
"changed": false,
"ping": "pong"
}
Некоторые команды
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