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