在我的清单中,我定义了这样的主机:
[server1]
141.151.176.223
我正在寻找一个保存server1
名称的变量,因为我用它来定义服务器主机名。
inventory_hostname
设为141.151.176.223
ansible_hostname
以及inventory_hostname_short
设置为148
。
要解决此问题,我正在设置我自己的变量:
[server1]
141.151.176.223 hostname=server1
但我对这种方法不满意。
有什么想法吗?
答案 0 :(得分:12)
<强>解释强>
如果库存文件是这样定义的:
xdg-open <directory>
然后你可以访问:
[server1_group]
server1 ansible_host=141.151.176.223
server1
事实;
inventory_hostname
141.151.176.223
事实;
ansible_host
server1_group
(group_names|first
事实包含服务器所属的所有群组的列表,group_names
选择该列表中的第一个元素。)
无论如何,first
事实包含主机本身定义的主机名(在事实收集期间设置该值)。
<强>解决方案强>
您应该使用标准ansible_hostname
声明指向目标的IP地址,并将库存主机名设置为您想要在Ansible playbooks中引用服务器。
特别是你可以完全跳过组定义并定义:
ansible_host
答案 1 :(得分:0)
[server1]
声明是group的名称,而不是主机(即使您只将一个主机分配给该组)。
由于ansible允许将主机放在多个组中,因此您只能将名称作为数组获取:http://docs.ansible.com/ansible/latest/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts
所以我认为你找到的解决方法是要走的路,除非你可以使用真实的主机名而不是IP地址(使用DNS或只是静态主机文件)。