Установка и настройки 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’

      Ответить