我正在运行Ansible Playbook,虚拟环境ansible_venv
激活。
我的剧本在这里被击中了
collect data from DB
localhost failed | msg: Failed to import the required Python library (psycopg2) on YYY's Python XXX/ansible-venv/bin/python3.7. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter
其中XXX是隐藏路径。
任务collect data from DB
是:
- name: collect data from DB
community.postgresql.postgresql_query:
login_host: '{{ db_host }}'
login_user: '{{ db_username }}'
login_password: '{{ db_password }}'
db: '{{ db_database }}'
port: '{{ db_database_port }}'
query: "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = '{{ my_table }}')"
register: qres
运行此playbook的机器无法访问互联网,因此我在机器上手动安装了这些软件包:
/home/myuser/XXX/ansible-venv/lib/python3.7/site-packages/psycopg2
/home/myuser/XXX/ansible-venv/lib/python3.7/site-packages/psycopg2_binary-2.9.6.dist-info
/home/myuser/XXX/ansible-venv/lib/python3.7/site-packages/psycopg2_binary.libs
为了做到这一点,我已经下载了这些软件包到另一台可以直接访问互联网的机器上,通过使用终端命令pip install psycopg2-binary
,然后将文件复制到“ansible机器”。
他们的权限和用户与安装在那里的其他模块相同。
在路径/home/myuser/XXX/ansible-venv/lib/
中,除了python3.7
之外,我没有任何其他解释器。
但是,我仍然犯了同样的错误。
更新
该错误仅在localhost上引发(在我的示例中为YYY)。
在其他机器上使用community.postgresql.postgresql_query
的任务工作。
1条答案
按热度按时间gtlvzcf81#
我通过在一台可以直接访问互联网的机器(machine 2)上重新构建ansible虚拟环境,然后将其移动到不能直接访问互联网的机器(machine 1)上来解决这个问题。
在机器1上:
机器上1
已重新安装模块
已安装psycopg 2-binary
通过
rsync
压缩并将ansible_venv
文件夹移动到machine 1