Модули Ansible#

Вместе с установкой Ansible устанавливается также большое количество модулей (библиотека модулей).

Модули отвечают за действия, которые выполняет Ansible. При этом каждый модуль, как правило, отвечает за свою конкретную и небольшую задачу.

Модули можно выполнять отдельно, в ad-hoc командах или собирать в определенный сценарий (play), а затем в playbook.

Как правило, при вызове модуля ему нужно передать аргументы. Какие-то аргументы будут управлять поведением и параметрами модуля, а какие-то передавать, например, команду, которую надо выполнить.

Например, мы уже выполняли ad-hoc команды, используя модуль ios_command, и передавали ему аргументы:

$ ansible 192.168.100.1 -m ios_command -a "commands='sh ip int br'"

Выполнение такой же задачи в playbook будет выглядеть так (playbook рассматривается в следующем разделе):

- name: run sh ip int br
  ios_command:
    commands: show ip int br

После выполнения модуль возвращает результаты в формате JSON.

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

В Ansible модули разделены на категории по тому кто их поддерживает:

  • core - модули, которые поддерживает основная команда разработчиков Ansible.

  • network - поддерживает Ansible Network Team.

  • certified - поддерживают партнеры Ansible

  • community - поддерживает сообщество Ansible

Также в Ansible модули разделены по функциональности. Список всех категорий находится в документации.