Python 在多台主机上通过Ansible运行yum update不工作

Python 在多台主机上通过Ansible运行yum update不工作,python,ansible,centos,yum,Python,Ansible,Centos,Yum,我在不同的资源中遵循了建议的内容。。这里提到的大多数建议 我得到以下错误 fatal:[hostname]:失败!=>{“changed”:false,“msg”:“此模块需要rpm的Python 2绑定。如果需要Python 3支持,请改用`dnf`Ansible模块。.此模块需要Python 2 yum模块。如果需要Python 3支持,请改用`dnf`Ansible模块。} 分别运行命令ansible hosts-m raw-b-a“yum-y更新包” 我遗漏了什么吗?运行直接调用yum的

我在不同的资源中遵循了建议的内容。。这里提到的大多数建议

我得到以下错误

fatal:[hostname]:失败!=>{“changed”:false,“msg”:“此模块需要rpm的Python 2绑定。如果需要Python 3支持,请改用`dnf`Ansible模块。.此模块需要Python 2 yum模块。如果需要Python 3支持,请改用`dnf`Ansible模块。}

分别运行命令ansible hosts-m raw-b-a“yum-y更新包”


我遗漏了什么吗?

运行直接调用
yum
的原始命令与ansible中的
yum
模块不同。前者只是使用标准的命令调用机制来执行
yum
,尤其是在没有深入了解预期结果的情况下,因此缺乏幂等性(ansible不知道是否更改了操作/ok)。但后者则完全不同。它以ansible作为python实现,并作为可执行blob组装和发送到远程客户端

python版本=2.7.5(默认值,2019年8月7日00:51:29)[GCC 4.8.5 20150623(Red Hat 4.8.5-39)]

请记住,即使控制主机上的python编写了它发送给目标主机的python,但这并不一定意味着解释器是相同的。在您的情况下,控制器很可能有Anisble+py2.7,但这并不意味着故障主机的端部默认有py2.7。 Ansible在过去并不罕见地发现错误的口译员会因为任何原因被抓的问题;在这种情况下,您可以在每个主机/组/其他作用域的基础上将
ansible\u python\u解释器设置为正确的python


好消息是,看起来您可以切换到
dnf
模块:。试一试,因为Python3正是我们现在必须解决的问题

运行直接调用
yum
的原始命令与ansible中的
yum
模块不同。前者只是使用标准的命令调用机制来执行
yum
,尤其是在没有深入了解预期结果的情况下,因此缺乏幂等性(ansible不知道是否更改了操作/ok)。但后者则完全不同。它以ansible作为python实现,并作为可执行blob组装和发送到远程客户端

python版本=2.7.5(默认值,2019年8月7日00:51:29)[GCC 4.8.5 20150623(Red Hat 4.8.5-39)]

请记住,即使控制主机上的python编写了它发送给目标主机的python,但这并不一定意味着解释器是相同的。在您的情况下,控制器很可能有Anisble+py2.7,但这并不意味着故障主机的端部默认有py2.7。 Ansible在过去并不罕见地发现错误的口译员会因为任何原因被抓的问题;在这种情况下,您可以在每个主机/组/其他作用域的基础上将
ansible\u python\u解释器设置为正确的python


好消息是,看起来您可以切换到
dnf
模块:。试一试,因为Python3正是我们现在必须解决的问题

如果手动将python解释器设置为python2会发生什么?例如

ansible-playbook your-play-book.yml -e 'ansible_python_interpreter=/path/to/your/python2'
可能是,尽管配置了
python版本=2.7.5(默认值,2019年8月7日00:51:29)[GCC 4.8.5 20150623(Red Hat 4.8.5-39)]

python3正在使用中

如果手动将python解释器设置为python2会发生什么?例如

ansible-playbook your-play-book.yml -e 'ansible_python_interpreter=/path/to/your/python2'
可能是,尽管配置了
python版本=2.7.5(默认值,2019年8月7日00:51:29)[GCC 4.8.5 20150623(Red Hat 4.8.5-39)]
python3正在使用中

ansible-playbook your-play-book.yml -e 'ansible_python_interpreter=/path/to/your/python2'