Как использовать переменные шаблона в group_vars
В group_vars/
У меня есть три файла, соответствующие именам группы инвентаризации:
all.yml
windows.yml
linux.yml
В windows.yml
Я определяю bot-os-user: MYDOMAIN\domainuser
,
В linux.yml
Я определяю bot-os-user: somelinuxuser
,
В all.yml
Я определяю ansible_user: {{ bot-os-user }}
,
Проблема, указанная так, Ansible говорит мне {{ ... }}
должно быть в двойных кавычках. И с двойными кавычками {{ bot-os-user }}
никогда не расширяется, то есть буквально остается {{ bot-os-user }}
в то время как ожидаемый результат ansible_user
имеющий значение bot-os-user
переменная
Я что-то пропустил? Как мне заставить это работать?
PS Это действительно повторное использование переменных для определения значений других переменных, а не чего-то еще.
1 ответ
Есть много проблем. Смотрите примечания ниже. В дополнение к этому, проблема здесь заключается в определении переменных, поэтому я переименовал ansible_user из вопроса в my_ansible_user.
Расширение переменной должно быть заключено в кавычки, а переменная bot_os_user должна существовать.
my_ansible_user: "{{bot_os_user}}"
Переменная bot_os_user будет существовать, если в игру включены какие-либо или оба из файлов windows.yml, linux.yml
Файл windows.yml или linux.yml из каталога group_vars/ будет включен, если хост, на котором выполняется воспроизведение, является членом группы windows или linux.
Например:
> cat group_vars/linux.yml
bot_os_user: "linux-user"
> cat group_vars/all.yml
my_ansible_user: "{{ bot_os_user }}"
> cat hosts
---
linux:
hosts:
test_01:
test_02:
test_03:
Игра ниже
> cat test1.yml
---
- hosts: test_01
tasks:
- debug: var=bot_os_user
- debug: var=my_ansible_user
дает:
ok: [test_01] => {
"bot_os_user": "linux-user"
ok: [test_01] => {
"my_ansible_user": "linux-user"
}
Заметки:
- "-" не является допустимым символом в имени переменной
- Правильное имя каталога - group_vars
- Избегайте escape-символов "\" в тексте, если это возможно