Я застрял, пытаясь использовать переменную в другом объявлении переменной. Вот код в моей пьесе:
- hosts: operate
roles:
- { role: dns, vargroup: 'test' }
- hosts: test
roles:
- common
- certbot
- ...
А теперь самые первые строки моей роли в DNS:
- debug: var=vargroup
- name: Extracting IP(s) {{vargroup}}
vars:
extractip: "{{ hostvars[groups['{{ vargroup }}'][0]]['ip'] }}"
set_fact:
newip: "{{ item.expose }}"
with_items:
- '{{ extractip }}'
Vargroup правильно напечатан в отладке и названии моей задачи. Но в части извлечения у меня есть эта ошибка:
{
"msg": "'dict object' has no attribute '{{ vargroup }}'",
"_ansible_no_log": false
}
Очевидно, я пробовал жестко закодировать строку как:
extractip: "{{ hostvars[groups['test'][0]]['ip'] }}"
И это сработало как шарм. Я действительно не знаю, как использовать эту переменную в моем объявлении var:)