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

Установка и настройки 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 и перезапускаем службу

[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

Максим Макаров
У блога появился хостинг, его любезно предоставила компания Облакотека.
Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс. Для этого достаточно кликнуть на контекстную рекламу, расположенную на сайте.
Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Аврил Лавин

    ansible -i asterisk -m setup -a ‘filter=ansible_all_ipv4_addresses’ all

    [WARNING]: Unable to parse /root/asterisk as an inventory source

    [WARNING]: No inventory was parsed, only implicit localhost is available

    [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match ‘all’

    Ответить
    1. Максим Макаров автор

      ansible asterisk -m setup -a ‘filter=ansible_all_ipv4_addresses’

      Ответить