Вместе с установкой Ansible устанавливается также большое количество модулей (библиотека модулей). В текущей библиотеке модулей находится порядка 200 модулей.
Модули отвечают за действия, которые выполняет Ansible. При этом каждый модуль, как правило, отвечает за свою конкретную и небольшую задачу.
Модули можно выполнять отдельно, в ad-hoc командах или собирать в определенный сценарий (play), а затем в playbook.
Как правило, при вызове модуля ему нужно передать аргументы. Какие-то аргументы будут управлять поведением и параметрами модуля, а какие-то передавать, например, команду, которую надо выполнить.
Например, мы уже выполняли ad-hoc команды, используя модуль raw, и передавали ему аргументы:
$ ansible cisco-routers -i myhosts -m raw -a "sh ip int br" -u cisco --ask-pass
Выполнение такой же задачи в playbook будет выглядеть так (playbook рассматривается в следующем разделе):
- name: run sh ip int br raw: sh ip int br | ex unass
После выполнения модуль возвращает результаты в формате JSON.
Модули Ansible, как правило, идемпотентны. Это означает, что модуль можно выполнять сколько угодно раз, но при этом модуль будет выполнять изменения, только если система не находится в желаемом состоянии.
В Ansible модули разделены на две категории:
Также в Ansible модули разделены по функциональности. Список всех категорий находится в .