#variables #ansible #role
#переменные #ansible #Роль
Вопрос:
Я определил роль dcn-rq2, и у нее есть некоторые переменные, определенные в файле ~/dcn-rq2 /defaults / main.yml, и я написал сборник пьес, который включает эту роль вверху, как показано ниже. я понимаю, что все переменные, определенные в роли, должны автоматически предоставляться playbook, но он выдает ошибку.
// Мой YAML-файл верхнего уровня для playbook
- hosts: DCN-VSD
roles:
- dcn-rq2
tasks:
- debug: msg="{{test_var}}"
мой dcn-rq2 /defaults /main.yml
---
test_var: '12'
Комментарии:
1. В чем ошибка?
2. В чем вопрос?
Ответ №1:
Значения по умолчанию — это то, что вы используете для ролей. Книги воспроизведения используют host_vars
amp; groups_vars
каталоги для включения переменных.
Чтобы добавить глобальную «переменную», общую для всех ваших playbook, поместите файл ‘all.yml’ в каталог group_vars.
Дополнительную информацию можно найти здесь: http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Комментарии:
1. Переменные ролей по умолчанию также могут использоваться в основном playbook.
Ответ №2:
Я только что попробовал это, и это работает. Единственное отличие, которое я смог увидеть в вашем сборнике пьес, заключается в том, что раздел «задачи» имеет неверный отступ. Но я предполагаю, что это изменилось, когда вы скопировали / вставили это сюда.
---
- hosts: localhost
remote_user: root
roles:
- common
tasks:
- debug: msg="{{test_var}}"
Также вы сказали
я понимаю, что все переменные, определенные в роли, должны быть автоматически доступны для playbook
Все переменные, определенные в роли, будут доступны для игры, с которой вы связываете роль в своем playbook. В вашем случае единственная пьеса в вашем сборнике пьес. Так что это все равно должно работать.
Комментарии:
1. Я думаю, что небольшой нюанс, который меня сбил с толку, заключается в следующем: переменные, определенные в роли, доступны для задач в playbook, использующих роль. Однако переменные недоступны для * Play infrastructure * (например, если вы хотели использовать переменную для
remote_user
)