Система управления конфигурациями Ansible позволяет автоматизировать развертывание и управление множеством однотипных (а иногда и не очень) узлов сети. При всех плюсах Ansible, она даже не требует установки каких-либо агентов или дополнительного ПО на целевые хосты, достаточно просто доступа по SSH. А простота и удобство быстро сделали её одной из самых популярных.
Если вам интересна тематика UNIX/Linux, рекомендую обратиться к соответствующей категории на моем блоге.
Ansible
Начнем с установки.
Установка
Ansible вы можете поставить прямо из репов. Например на Debian:
1 |
apt-get install ansible |
Но в этом случае вы рискуете получить отстающие версии. Если же вам нужная самая последняя – используйте инструкцию 1 по установке с официального сайта, выбрав нужный вам дистрибутив ОС.
Получение репозитория
Собственно цель этой статьи не столько рассказать именно про Ansible, сколько поделиться с вами моим новым репозиторием на Github. В нем я планирую выкладывать плейбуки Ansible для самых различных ролей. Вы можете пользоваться им на свой страх и риск, копировать и изменять его. Но для начала вам надо выкачать его к себе (см. гайд 2 из официальной документации). Для этого первым делом установим Git:
1 |
apt-get install git |
Клонируем репозиторий:
1 |
got clone https://github.com/bissquit/ansible.git |
Проваливаемся в папку:
1 |
cd ansible |
Далее все действия будем выполнять именно отсюда.
Инвентарь
Файл инвентаря (inventory file) – самое важно. Именно в нем должна находиться информация об удаленных хостах, на которых вы собрались проигрывать плейбуки. Рассмотрим разные варианты.
- Самый простой случай: у root-аккаунта разрешено удаленное подключение по ssh. Тогда вы можете просто указать DNS-имя хоста или его адрес. Пример файла инвентаря:
1234567[testlab]# fqdnzbxsrv01.domain.local# aliaszabbix-server ansible_host=172.16.0.52# for local installationzabbix-server ansible_connection=local
Для проигрывания плейбука вам нужно явно указать пользователя и, после нажатия Enter, вы увидите приглашение для ввода пароля:
1ansible-playbook -l testlab -u root -k playbooks/zabbix_server.yml
Если все прошло как надо, вы сразу же должны увидеть этапы проигрывания; - Предположим подключение под рутом у вас запрещено, есть только непривилегированный аккаунт (что отлично, так и надо делать). Подключаемся под обычной учеткой, а дальше запрашиваем повышение прав.
12345[testlab]# fqdnzbxsrv01.domain.local ansible_ssh_user=username ansible_ssh_pass=password# aliaszabbix-server ansible_host=172.16.0.52 ansible_ssh_user=username ansible_ssh_pass=password
Запуск плейбука:
1ansible-playbook -l testlab -K playbooks/zabbix_server.yml
Обратите внимание на различия между -K и -k. - Также у вас может и не быть root-доступа, а только sudo. В этом случае подключаемся под обычной учеткой, а дальше запрашиваем повышение прав – но! – для этого вам надо будет поменять тип эскалации с su на sudo в самом плейбуке, например:
12345678910---- name: Zabbix server installationhosts: allbecome: yes# it was:# become_method: su# has become:become_method: sudoroles:- zabbix_server
Файл инвентаря:
12345[testlab]# fqdnzbxsrv01.domain.local ansible_ssh_user=username# aliaszabbix-server ansible_host=172.16.0.52 ansible_ssh_user=username
Запускаем плейбук:
1ansible-playbook -l testlab -k playbooks/zabbix_server.yml
Или вот так, если вы не указали пользователя в инвентаре:
1ansible-playbook -l testlab -u username -k playbooks/zabbix_server.yml
Вот и все.
Есть ещё и другие варианты, с которыми вы познакомитесь более подробно во время чтения официальной документации 3. Если вылезают ошибки, а разобраться не получается, спрашивайте в комментариях.