Ansible: Переменные, определенные по умолчанию, не загружены в мой playbook

#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 )