Ansible:ipaddr过滤器要求在ansible控制器上安装python的netaddr

eni9jsuy  于 2023-01-19  发布在  Python
关注(0)|答案(2)|浏览(306)

Alpine码头集装箱3.13.1
apk add ansible成功,但执行需要ipaddr筛选器的剧本失败,并显示:

Ansible: The ipaddr filter requires python's netaddr be installed on the ansible controller

Ansible版本:2.10.5(如果需要,可以执行其他版本)
ipaddr筛选器:Ansible docs
尝试通过ansible-galaxy collection install ansible.netcommonpip install netaddr安装。仍然收到相同的错误。

6rqinv9w

6rqinv9w1#

你需要先安装它:

apk add py-netaddr
gudnpqoy

gudnpqoy2#

对于任何安装了netaddr包但仍然面临这个问题的人来说,当您在Ansible控制器设置的生命周期中更改默认python示例时,就会出现一个问题。
你必须检查你的Ansible安装使用的是哪个python安装。至少在一些安装中,它会将python二进制代码硬编码到/home/user/.local/bin/<ansible script>中,因此如果你改变了它,它不会保持与默认的python安装同步
解决方案,在最后使用脚本自动执行所有操作:
(from(x月1日至1x日)
我不得不改变...

#!/home/user/miniconda3/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
<snip>

致:

#!/home/user/anaconda3/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
<snip>

然后它开始工作。
下面是一个sed命令(请注意,您必须自己添加python3路径-您可以使用which python3找到默认路径),它可以为所有ansible脚本自动执行上述所有操作,或者更准确地预览更改:
sed -s '1 s|^#!.*$|#!<new path to python3>|' ~/.local/bin/ansible*
运行完上面的代码后,如果看起来没问题,只需将-i作为标志添加到sed中(如sed -i -s),它就会将它们全部替换,您应该可以开始了。

相关问题