Модуль#
Модуль – это исполняемый файл, который можно использовать из командной строки или в задаче сценария. 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