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
模块任务是远程执行类型?
ping包被传输到目标服务器(192.168.33.20(并编译成二进制文件。
Ansible 不会将任何东西编译为二进制文件。它将模块转移并运行它,而不会发生转换。
但是,ping 命令应该从 192.168.33.20以外的机器运行,以测试来自 192.168.33.20 的响应。
您将 Ansible 的ping
模块与ping
命令混淆了。ping
模块基本上是一个无所事事的模块,用于确认 Ansible 能够与远程主机通信。 这有点相当于跑步:
ssh remotehost true
它不执行任何操作,只是成功返回。