所有我能找到的都来自the docs:
此外,
inventory_hostname
是Ansible的库存主机文件中配置的主机名的名称。当您不想依赖于发现的主机名ansible_hostname
或其他神秘原因时,这可能很有用。如果您有一个很长的FQDN,inventory_hostname_short
也包含截至第一个句点的部分,而不包含其余的域。
Ansible中的inventory_hostname
和ansible_hostname
变量之间是否存在实际差异?如果是这样,那么我应该使用哪一个?何时使用?
答案 0 :(得分:34)
inventory_hostname
- 在ansible清单文件中配置(例如:/etc/ansible/hosts
)。它可以是DNS可以解析的IP地址或名称ansible_hostname
- 由ansible
发现。 Ansible ssh
进入主持人并收集一些事实。作为事实的一部分,它还会发现其存储在ansible_hostname
。 hostvars
是一个字典,每个库存主机都有一个条目。如果要访问主机信息,则需要使用inventory_hostname
。如果要使用/打印主机上配置的主机名称,则应使用ansible_hostname
,因为很可能IP将在清单文件中使用。
重要:要使用ansible_hostname
,您需要收集事实:
gather_facts: true
否则,您将收到ansible_hostname
未定义的消息。
"ansible_hostname": "VARIABLE IS NOT DEFINED!"
尝试使用一个主机来理解差异
tasks:
- debug: var=inventory_hostname
- debug: var=ansible_hostname
- debug: var=hostvars