Ansible获取库存中定义的主机名

Nev*_*eue 7 hostname ansible ansible-inventory

在我的库存中,我定义了这样的主机:

 [server1]
 141.151.176.223
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个保留server1名称的变量,因为我用它来定义服务器主机名.

inventory_hostname设置141.151.176.223 ansible_hostname为以及inventory_hostname_short设置为148.

要解决此问题,我正在设置我自己的变量,如下所示:

 [server1]
 141.151.176.223 hostname=server1
Run Code Online (Sandbox Code Playgroud)

但我不满意这种方法.

有任何想法吗?

tec*_*raf 14

说明

如果库存文件以这种方式定义:

[server1_group]
server1 ansible_host=141.151.176.223
Run Code Online (Sandbox Code Playgroud)

然后你可以访问:

  • server1inventory_hostname事实;

  • 141.151.176.223ansible_host事实;

  • server1_groupwith group_names|first(group_names事实包含服务器所属的所有组的列表,first从该列表中选择第一个元素).

无论上述情况如何,ansible_hostname事实都包含主机本身定义的主机名(该值在事实收集期间设置).


您应该使用标准ansible_host声明指向目标的IP地址并将库存主机名设置为您要在Ansible playbooks中引用服务器.

特别是你可以完全跳过组定义并定义:

server1 ansible_host=141.151.176.223
Run Code Online (Sandbox Code Playgroud)