ansible не может получить имя хоста инвентаризации
Я пытаюсь получить краткое имя сервера, над которым ведется работа.
У меня есть это в jinja2:
ServerAlias graphite.{{ hostvars[inventory_hostname] }}
ServerAlias graphite.{{ hostvars[inventory_hostname] }}.{{dc}}.{{subnet}}
Вышесказанное просто выплескивает всю совокупность фактов вместо короткого названия.
Вот что такое хозяева.ямл выглядит так:
graphite.experimental.com dc=lv1 subnet=coupons.lan
1 ответ:
То, что вы хотите использовать, - это просто
{{ inventory_hostname }}
(или{{ inventory_hostname_short }}
для короткого имени).Объект
hostvars
- это способ доступа к переменным каждого хоста, о котором знает Ansible. Итак,hostvars[inventory_hostname]
даст вам объект, содержащий все известные факты о текущем хосте,hostvars['foo']
даст вам объект, содержащий все известные факты о хосте 'foo' и т. д.Предположим, что у вас есть группа хостов под названием "db_servers" , и вы хотите создать список IP-адресов всех этих хостов в шаблон. Вот как вы это сделаете:
{% for host in groups['db_servers'] %} {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }} {% endfor %}