首页 > 解决方案 > 为什么ansible ping模块任务是远程执行类型的?

问题描述

Ansible 有两种执行类型:远程、本地

本地执行类型就像从 ansible 服务器调用 REST api 调用并接收 http 响应


从 ansible 服务器运行以下命令后:

ansible 192.168.33.20 -i inventory -u vagrant -m ping -k -vvv

-vvv选项表明:

ping包被传输到目标服务器(192.168.33.20)并编译成二进制文件。

ping然后在远程机器(192.168.33.20)上执行为

/usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-111111.44.555555/ping

然后运行

rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-111111.44.555555/ >/dev/null 2>&1

192.168.33.20


但是,ping命令应该从机器上运行,而不是192.168.33.20测试来自192.168.33.20.

为什么ansibleping模块任务是远程执行类型?

标签: ansibleping

解决方案


ping 包被传输到目标服务器(192.168.33.20)并编译成二进制文件。

Ansible 不会将任何内容编译为二进制文件。它传输模块并运行它,没有发生任何转换。

但是,ping 命令应该从 192.168.33.20 以外的机器运行以测试来自 192.168.33.20 的响应。

您将 Ansible 的ping模块与ping命令混淆了。该ping模块基本上是一个无所事事的模块,它确认 Ansible 能够与远程主机通信。这相当于运行:

ssh remotehost true

不做任何事情,它只是成功返回。


推荐阅读