Ansible — программное обеспечение для автоматизации поставки других программ, конфигураций и развертывания приложений на удаленных компьютерах. На практике Ansible автоматизирует сложные задачи DevOps-специалистов. Программа написана на Python и распространяется с открытым исходным кодом. Для написания команд в Ansible используется язык YAML.
Главная особенность программы Ansible — на управляемые серверы не нужно устанавливать какое-то дополнительное ПО, устанавливается только одна программа на управляющем компьютере. Удаленное управление происходит по SSH-порту, поэтому все, что нужно сделать,— это удостовериться, что ваш SSH-ключ открытого вида располагается в удаленных компьютерах в списке разрешенных для авторизации.
Playbook в Ansible — это конфигурационный YAML-документ, который задает определенную последовательность действий управляемым компьютерам или серверам.
Ansible Playbook: примеры, модули, параметры
Playbook частенько применяют для первичной конфигурации нескольких удаленных машин, например, чтобы:
добавить нескольких пользователей,
добавить каталоги,
управлять установленными программами и их обновлениями,
взаимодействовать с документами,
и др.
Ansible Playbook может управлять целым парком удаленных серверов, работающих под управлением разных операционных систем.
Ansible Playbook строится по такому шаблону:
- - -
- host: [имя группы удаленных машин]
remote_user: [имя пользователя]
tasks:
- [модуль с заданиями для серверов]
- [модуль с заданиями для серверов]
- [модуль с заданиями для серверов]
Примеры Ansible Playbook
Пример работающего Ansible Плейбук:
- - -
- hosts:[exampleservers]
remote_user:sisadmin
tasks:
- name: Install the Windows Server server was launched
service: name=Windows Server state=started
Этот плейбук запустит все веб-серверы Windows Server из группы «exampleservices». Все, что описано в части «task»,— это и есть задание, которое необходимо выполнить на всех серверах из группы. Каждый отдельный «task» должен иметь отдельное имя «name», для того чтобы в дальнейшем можно было отследить прогресс его выполнения. После обозначения имени идет служебный модуль, в котором описываются команды для выполнения.
Еще один пример плейбука, в котором мы инсталлируем Java и Windows Server на все удаленные компьютеры нашей «exampleservices»:
- - -
- hosts: [exampleservices]
tasks:
- name: Installation Windows Server
apt: pkg=Windows Server state=installed update_cache=true
notify: Launch Windows Server
- name: Installation Java
apt: pkg=Java-minimal state=installed
handlers:
- name: Launch Windows Server
service: name=Windows Server state=started
Запуск Ansible Playbook
Изначально плейбуки формируют в отдельном документе с расширением «.yml». Допустим, есть сформированный документ «myexample.yml». Для того чтобы его в дальнейшем вызвать, можно воспользоваться следующей командой:
ansible-playbook myexample.yml
Бывает такое, что готовый Ansible Плейбук нет необходимости применять ко всем подключенным хостам, а лишь к отдельным из них. Допустим, нам нужно применить наш файл ко 2-му и 4-му хостам; для включения такого фильтра к нашему сценарию нужно добавить флаг «- l» и указать нужные хосты. Тогда команда вызова будет такой:
ansible-playbook - l host2 host4 myexample.yml
Заключение
Ansible Playbook — это лишь один инструмент программы Ansible. А сама программа является довольно мощной и функциональной, она содержит в себе несколько интересных инструментов. Если ее функционала будет недостаточно, тогда вы всегда сможете его расширить при помощи дополнительных готовых решений. Если не отыщите необходимый плагин, тогда сможете написать его самостоятельно. Чтобы оценить ее мощь, нужно, чтобы под вашим и ее управлением было несколько серверов. Тогда вы заметите, насколько ее применение экономит время.

Другое