我在虚拟环境中设置了三台主机,以便在部署之前进行测试。我想知道在使用时是否有办法指定:
‘’’ 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!'