inventory_hostname和ansible_hostname之间的区别是什么

时间:2017-08-27 18:28:57

标签: ansible

所有我能找到的都来自the docs

  

此外,inventory_hostname是Ansible的库存主机文件中配置的主机名的名称。当您不想依赖于发现的主机名ansible_hostname或其他神秘原因时,这可能很有用。如果您有一个很长的FQDN,inventory_hostname_short也包含截至第一个句点的部分,而不包含其余的域。

Ansible中的inventory_hostnameansible_hostname变量之间是否存在实际差异?如果是这样,那么我应该使用哪一个?何时使用?

1 个答案:

答案 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