Модуль#

Модуль – это исполняемый файл, который можно использовать из командной строки или в задаче сценария. Ansible выполняет каждый модуль на целевых узлах сценария и собирает возвращаемые значения.

Основные особенности модулей#

Модули имеют следующие особенности:

  • возвращают данные в формате JSON;

  • могут быть написаны на любом языке программирования, но чаще всего используется Python;

  • подавляющее большинство модулей удовлетворяют принципу идемпотентности (idempotence), то есть выполняют изменения только при необходимости, чтобы избежать ненужных действий.

    Некоторые модули, например, ansible.builtin.shell и ansible.builtin.command, неидемпотентны.

Запуск модулей через командную строку#

Для запуска модулей используйте утилиту ansible со следующими аргументами:

  • -m – название модуля;

  • -a – параметры вызова модуля.

Например, для запуска службы httpd и проверки ее статуса на узлах из группы webservers выполните команду:

ansible webservers -m ansible.builtin.service -a "name=httpd state=started"

Использование модулей в сценариях#

В сценариях модули вызываются внутри блока tasks. Для этого можно использовать несколько способов:

  • Простой синтаксис:

    - name: Reboot the servers
      ansible.builtin.command: /sbin/reboot -t now
    
  • Синтаксис YAML (complex args):

    - name: Restart webserver
      ansible.builtin.service:
        name: httpd
        state: restarted
    

    Синтаксис YAML подходит для сложных задач, когда передается много аргументов.

Просмотр документации по модулям#

Для просмотра документации о модуле используйте утилиту ansible-doc.

Например, для просмотра информации о модуле ansible.builtin.ping используйте команду:

ansible-doc ansible.builtin.ping

Чтобы получить список всех доступных модулей, используйте команду:

ansible-doc -l

Исключение модулей#

Вы можете исключить определенные модули Ansible из использования, добавив их в список запрета (reject list). Для этого создайте файл конфигурации в формате YAML. По умолчанию он должен быть расположен по пути /etc/ansible/plugin_filters.yml.

Предупреждение

Не добавляйте в список запрета модуль ansible.builtin.stat! Он необходим для работы Ansible.

Пример файла со списком запретов:

filter_version: '1.0'
module_rejectlist:
  - docker
  - easy_install

Здесь:

  • filter_version – версия конфигурационного файла. Этот параметр позволяет обновлять формат конфигурации в будущем, сохраняя обратную совместимость.

  • module_rejectlist – список модулей для блокировки.

Если необходимо использовать другой путь к конфигурационному файлу со списком запретов, укажите его с одним из следующих способов:

  • Переменная окружения PLUGIN_FILTERS_CFG.

  • Конфигурационный файл ansible.cfg:

    [defaults]
    plugin_filters_cfg = /path/to/reject/list