Как определять задачи в плейбуках Ansible

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: ,

Добавить комментарий