如何指定每个主机组使用哪个 ping?

如何指定每个主机组使用哪个 ping?

我在虚拟环境中设置了三台主机,以便在部署之前进行测试。我想知道在使用时是否有办法指定:

‘’’ ansible all -m ping ‘’’

使用 win_ping ping windows 主机,使用 ping ping linux 主机。目前,当我运行上述命令时,我在 linux 主机上收到一次成功,在 windows 主机上收到两次异常错误。但是当我运行:

''' ansible all -m win_ping ''' 它执行相反的操作,两个 Windows 主机将回复,而 Linux 机器将回复错误。Windows 主机配置为使用 winrm,而 Linux 主机使用 ssh。有什么见解吗?或者我需要在 Windows 和 Linux 之间拆分才能正常运行?

答案1

您无法使用 ansible 命令执行此操作。正如您所注意到的,模块 ping、win_ping 和 net_ping 都有不同的要求。

但是,使用 ansible 剧本可以轻松完成以下任务。

- hosts: all
  tasks:
  - win_ping:
    when: ansible_os_family == "Windows"
  - ping:
    when: ansible_os_family != "Windows"

您还应该能够使用 raw 命令进行 poor-mans ping,但是这样做的缺点是无法在 *nix 主机上测试 Python:

ansible -m raw -a 'echo yay!'

相关内容