首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ansible无法获取inventory_hostname

ansible无法获取inventory_hostname
EN

Stack Overflow用户
提问于 2015-02-24 09:05:21
回答 1查看 14.1K关注 0票数 5

我正在尝试获取正在运行的服务器的短名称。

我在jinja2中有这样的代码:

代码语言:javascript
复制
ServerAlias graphite.{{ hostvars[inventory_hostname] }}
ServerAlias graphite.{{ hostvars[inventory_hostname] }}.{{dc}}.{{subnet}}

以上只是泄漏了所有的事实,而不仅仅是简短的名称。

这是hosts.yaml的外观:

代码语言:javascript
复制
graphite.experimental.com dc=lv1 subnet=coupons.lan
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-24 09:16:05

您要使用的只是{{ inventory_hostname }} (或者简称为{{ inventory_hostname_short }} )。

hostvars对象是一种访问Ansible所知道的每个主机的变量的方法。因此,hostvars[inventory_hostname]将给出包含当前主机所有已知事实的对象,hostvars['foo']将给出包含主机'foo‘的所有已知事实的对象,依此类推。

假设您有一组名为“db_servers”的主机,并且您希望在模板中生成所有这些主机的IP地址列表。下面是你该怎么做的:

代码语言:javascript
复制
{% for host in groups['db_servers'] %}
   {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28686571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档