我正在尝试获取正在运行的服务器的短名称。
我在jinja2中有这样的代码:
ServerAlias graphite.{{ hostvars[inventory_hostname] }}
ServerAlias graphite.{{ hostvars[inventory_hostname] }}.{{dc}}.{{subnet}}以上只是泄漏了所有的事实,而不仅仅是简短的名称。
这是hosts.yaml的外观:
graphite.experimental.com dc=lv1 subnet=coupons.lan发布于 2015-02-24 09:16:05
您要使用的只是{{ 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 %}https://stackoverflow.com/questions/28686571
复制相似问题