Ansible-无法获取远程主机名

Ansible-无法获取远程主机名,ansible,Ansible,这是我的剧本。yml: - hosts: oph-server roles: - role: 'myrole' server_hostname: "{{ansible_hostname}}" io_hostnames: "{{ groups['oph-io']|map('extract', hostvars, 'ansible_hostname')|list }}" io_ips: "{{ grou

这是我的剧本。yml:

- hosts: oph-server
  roles:
    - role: 'myrole'
      server_hostname: "{{ansible_hostname}}"
      io_hostnames: "{{ groups['oph-io']|map('extract', hostvars, 'ansible_hostname')|list }}"
      io_ips: "{{ groups['oph-io']|map('extract', hostvars, 'ansible_default_ipv4')|list if 'oph-io' in groups else []}}"

- hosts: oph-io
  roles:
    - role: 'myrole'
      server_hostname: "{{ hostvars['oph-server']['ansible_hostname'] }}"
      io_hostnames: "{{ groups['oph-io']|map('extract', hostvars, 'ansible_hostname')|list if 'oph-io' in groups else []}}"
      io_ips: "{{ groups['oph-io']|map('extract', hostvars, ['ansible_default_ipv4', 'address'])|list if 'oph-io' in groups else []}}"
这是库存

[oph-io]
oph-io1 ansible_default_ipv4=A.B.C.D
[oph-server]
oph-server ansible_default_ipv4=E.F.G:H
oph io
节点上没有问题,而在
oph服务器上
我能够正确获取
io\u ip
,但是io\u主机名是
未定义的

怎么了


谢谢

ansible\u主机名
ansible\u默认值
是一个使用或播放关键字
聚集\u事实的计算事实:是

一部剧只收集目标主机的事实,因此尚未收集来自
oph io
的事实。 要收集其他主机的事实(或之前未被另一个重头戏收集),您可以使用带有委托和事实委托的
设置
模块,如文档所示:

-主机:oph服务器
学前任务:
-姓名:从oph io收集事实
设置:
委托给:“{{item}}”
事实:正确
循环:“{groups['oph-io']}”
角色:
-角色:“我的角色”
[...]

要定义要连接到的计算机IP或主机,参数为
ansible\u host
,如中所述。

ansible\u主机名
ansible\u默认值\u ipv4
是一个带有或play关键字
聚集\u事实:yes
的计算事实

一部剧只收集目标主机的事实,因此尚未收集来自
oph io
的事实。 要收集其他主机的事实(或之前未被另一个重头戏收集),您可以使用带有委托和事实委托的
设置
模块,如文档所示:

-主机:oph服务器
学前任务:
-姓名:从oph io收集事实
设置:
委托给:“{{item}}”
事实:正确
循环:“{groups['oph-io']}”
角色:
-角色:“我的角色”
[...]

要定义要连接的机器IP或主机,参数为
ansible\u host
,如中所述。

收集事实:是应为默认值。我还试图显式地设置它,但它不起作用。无论如何,
ansible\u主机名
似乎对
oph io
正常工作。您正在尝试访问另一组(
oph io
)而不是该剧组(
oph server
)的收集事实。如果以前没有被某个剧收集,他们还没有事实!您可以在所有内容之前添加一个针对主机的空播放
oph io:oph server
,以收集每个人的事实。或者明确调用
setup
模块,并授权给
oph io
的主机,以在访问它们之前检索它们的事实。
collect\u facts:yes
应为默认值。我还试图显式地设置它,但它不起作用。无论如何,
ansible\u主机名
似乎对
oph io
正常工作。您正在尝试访问另一组(
oph io
)而不是该剧组(
oph server
)的收集事实。如果以前没有被某个剧收集,他们还没有事实!您可以在所有内容之前添加一个针对主机的空播放
oph io:oph server
,以收集每个人的事实。或者明确调用
setup
模块,并授权给
oph io
的主机,以在访问它们之前检索它们的事实。