В чем разница между ролями и задачами (и тегами) в Ansible?

Я постоянно путаюсь между ролями и задачами.

Я понимаю, что теги — это способ пометить отдельные элементы, но я не понимаю, как их использовать.

Допустим, мне пришлось сделать следующее

Users
  Create a user named "deploy"
  Add ssh key for "deploy" user

Git
  Install git
  Clone some git repo

Будут ли «Пользователи» и «Git» моими двумя основными ролями в файле YML верхнего уровня? Будет ли каждый подпункт (например, «Установить Git») задачей? Буду ли я помечать каждую подзадачу тегом? Или я помечаю роли тегом?

Просто ищу обзор иерархии Ansible.


person user2490003    schedule 12.03.2017    source источник
comment
leucos.github.io/ansible-files-layout прочитал это   -  person Kyslik    schedule 13.03.2017


Ответы (1)


tl;dr Задача — это одно объявление (операция); роль — это один из многих способов группировки задач.

  • Задача в Ansible — это базовая единица работы, своего рода аналог строки кода в других языках.

    Задача выполняется и имеет результат (хорошо, изменено, не удалось).

    В большинстве случаев задача вызывает модуль действия, который обеспечивает идемпотентность, превращая задачу в декларативную единицу программирования.

    Однако есть задачи, которые выполняют метадействия, включения и оболочки для других команд.

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

    Роли скрывают детали реализации (аналогично функциям, процедурам, методам в других языках) и позволяют легко повторно использовать код.

Будут ли «Пользователи» и «Git» моими двумя основными ролями в файле YML верхнего уровня?

В Ansible нет единого способа организации вещей. Одного и того же результата можно добиться, используя разные конструкции: роли, включения, условные операторы и т. д.

То, как вы используете Ansible, зависит от ваших целей (и целей вашей организации): вы можете создавать Ansible playbooks, чтобы они читались как полные, содержательные, линейные документы, описывающие конфигурацию; или вы можете создавать сложные конфигурации с зависимостями, уровнями абстракции и модульной архитектурой.

person techraf    schedule 13.03.2017