У меня есть шаблон jinja2, и я пытаюсь перебрать группу хостов и вставить адрес ipv4 всех хостов в мой шаблон.Но я получаю сообщение об ошибке, когда я делаю это, хотя способ, которым я делаю это, заключается в том, как каждый пост и статья предполагают, что это должно быть сделано.
Вот шаблон, который выдает ошибку:
{% if groups['linux-hosts'] %}
{% for item in groups['linux-hosts'] %}
define host {
use generic-host-normal
host_name {{ item }}
alias {{ item }}
address {{ hostvars[item].ansible_default_ipv4.address }}
}
{% endfor %}
{% endif %}
И ошибка, которую я получаю:
не удалось: [сервер] (item = servers.cfg) => {"updated": false, "item":"servers.cfg", "msg": "AnsibleUndefinedVariable: 'объект ansible.vars.hostvars.HostVarsVars' не имеет атрибута ansible_default_ipv4 '"}
Если я не использую переменную item'в квадратных скобках, но вместо того, чтобы указать конкретный хост из инвентаря, Ansible может получить адрес ipv4.Пример («сервер» - это имя хоста из моего инвентаря):
{{ hostvars['server'].ansible_default_ipv4.address }}