Включают ли include_vars и vars в ansible одинаковое использование

Я запутался с использованием include_vars а также vars

Пример:

- name: "Testing include_vars"
  include_vars: "roles/testrole/vars/test.yml"

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

Ниже не работает:

- name: "Defining variables locally"
  vars: 
    testvar : "value1"

Выдает следующую ошибку:

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path

Я понимаю ошибку, что нет никаких действий. Но почему нет способа указать переменные локально без создания задачи. Почему переменная должна идти с действием - в чем логика или философия?

И в то время как это также возможно для set_facts без другого действия, как set_facts сам по себе является модулем, нет модуля для локальной установки переменных. Зачем?

И если бы вы также могли добавить, почему нельзя добавить несколько действий в одну задачу, например: set_facts и команда оболочки в одной задаче?

1 ответ

vars не является модулем Это объявление переменных. Для устранения ошибки добавьте модуль в задачу. Например отладка.

- name: "Defining variables locally"
  vars: 
    testvar: "value1"
  debug:
    var: testvar

Возможно, вы захотите просмотреть вступление к Playbooks.

Ответить на ваш вопрос

Почему нет модуля для определения переменных?

Из-за гибкости. Начните планировать свою архитектуру с вопроса "Откуда берутся данные конфигурации?". Возможно, вы захотите просмотреть приоритет переменных: где я должен поместить переменную?,

Другие вопросы по тегам