Как определять задачи в плейбуках Ansible
Development, VPS | Комментировать запись
Ansible – это современный инструмент управления конфигурацией. Для связи и выполнения команд на управляемых серверах (нодах) он использует только SSH и Python – то есть вам не нужно устанавливать агентское программное обеспечение на удаленные ноды. В этой серии мануалов вы познакомитесь с основными функциями Ansible, которые можно использовать для написания сценариев автоматизации серверов. В конце серии вы найдете практический пример плейбука для автоматизации настройки удаленного веб-сервера Nginx и развертывания на нем статического HTML-сайта.
Примечание: Это вторая часть серии по работе с Ansible. Другие мануалы из этой серии вы найдете по тегу ansible-practice. Весь код можно найти в этом репозитории.
Задача – это наименьшая единица действия, которую можно автоматизировать в плейбуке Ansible. Обычно плейбуки содержат ряд задач, которые служат определенной цели: например, настраивают веб-сервер или развертывают приложения в удаленных средах.
Ansible выполняет задачи четко в том же порядке, в котором они определены в плейбуке. Потому перед автоматизацией пошаговых процедур (например, настройки сервера LEMP) вам необходимо заранее оценить, какие этапы включает ручная настройка и в каком порядке эти этапы должны быть выполнены, чтобы все работало. Затем можно определить, какие задачи вам понадобятся и какие модули помогут вам достичь своей цели за меньшее количество шагов.
Модули – это, по сути, ярлыки для выполнения операций, которые в противном случае вам пришлось бы запускать как простые команды bash. Также модули часто используются для абстрагирования команд в разных операционных системах.
В предыдущей части этой серии руководств вы создали свой первый плейбук. Тогда же мы определили одну задачу, которая выводит отладочное сообщение с помощью debug. Давайте еще раз взглянем на эту задачу. Запустите команду cat, чтобы вывести содержимое этого файла на экран и изучить его:
cat ~/ansible-practice/playbook-01.yml
Этот плейбук сейчас содержит единственную задачу, которая выводит сообщение в выходных данных плея:
--- - hosts: all tasks: - name: Print message debug: msg: Hello Ansible World
Задачи определяются как список под названием tasks внутри плея. Этот список находится на том же уровне, что и директива hosts, которая определяет цели этого плея. Свойство name определяет вывод, который будет отображен перед выполнением этой задачи.
В нашем примере задача вызывает модуль debug, который позволяет отображать сообщения, определенные в данном плее. Эти сообщения могут использоваться для вывода отладочной информации, например, содержимого переменной или выходного сообщения, возвращаемого определенной командой.
У каждого модуля есть свой набор опций и свойств. Модуль debug предполагает, что на экран будет выведено свойство msg, содержащее сообщение. Обратите особое внимание на отступ (2 пробела): свойство msg должно находиться внутри debug.
Tags: Ansible, ansible-practice