Ansible 无法找到`zabbix-api`
Ansible unable to find `zabbix-api`
问题
在这种情况下,Ansible 无法找到 Zabbix API。当 运行 一个调用 zabbix-api
模块的剧本时,Ansible 吐出以下错误:
msg: 'Missing required zabbix-api module (check docs or install with: pip install zabbix-api)'
环境
控制节点,运行 Ubuntu 18.04,包含多个python解释器(2.7/3.6/3.7)。 Zabbix API 已使用 pip (pip install zabbix-api
) 在 /usr/local/lib/python2.7/dist-packages/
中为 python2.7 安装在控制节点上。这可以在 运行 之后观察到:
import imp
imp.find_module('zabbix_api')
输出:
(<open file '/usr/local/lib/python2.7/dist-packages/zabbix_api.py', mode 'U' at 0x7f102e990540>, '/usr/local/lib/python2.7/dist-packages/zabbix_api.py', ('.py', 'U', 1)
支票
我已经确定:
- Ansible 加载正确的 Python 解释器:
ansible_python_interpreter=/usr/bin/python
- PATH 包含解释器
site-packages
或 dist-packages
的路径
- 解释器可以加载
zabbix_api
库:python -c "import zabbix_api"
zabbix_api.py
权限正确
sys.path
包含 zabbix_api
目录的路径:
import sys
print '\n'.join(sys.path)
输出:
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/home/peter/.local/lib/python2.7/site-packages
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
我在这里错过了什么?还有其他因素需要考虑吗?
导致此问题的原因是主机文件配置错误:Ansible 定位到错误的服务器。确保剧本在本地主机上执行后,问题就解决了。
问题
在这种情况下,Ansible 无法找到 Zabbix API。当 运行 一个调用 zabbix-api
模块的剧本时,Ansible 吐出以下错误:
msg: 'Missing required zabbix-api module (check docs or install with: pip install zabbix-api)'
环境
控制节点,运行 Ubuntu 18.04,包含多个python解释器(2.7/3.6/3.7)。 Zabbix API 已使用 pip (pip install zabbix-api
) 在 /usr/local/lib/python2.7/dist-packages/
中为 python2.7 安装在控制节点上。这可以在 运行 之后观察到:
import imp
imp.find_module('zabbix_api')
输出:
(<open file '/usr/local/lib/python2.7/dist-packages/zabbix_api.py', mode 'U' at 0x7f102e990540>, '/usr/local/lib/python2.7/dist-packages/zabbix_api.py', ('.py', 'U', 1)
支票
我已经确定:
- Ansible 加载正确的 Python 解释器:
ansible_python_interpreter=/usr/bin/python
- PATH 包含解释器
site-packages
或dist-packages
的路径
- 解释器可以加载
zabbix_api
库:python -c "import zabbix_api"
zabbix_api.py
权限正确sys.path
包含zabbix_api
目录的路径:
import sys
print '\n'.join(sys.path)
输出:
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/home/peter/.local/lib/python2.7/site-packages
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
我在这里错过了什么?还有其他因素需要考虑吗?
导致此问题的原因是主机文件配置错误:Ansible 定位到错误的服务器。确保剧本在本地主机上执行后,问题就解决了。