Ansible-inventory --list命令调用GCE插件失败求助
问题:Ansible GCP动态清单无法加载google-auth库
错误现象
执行ansible-inventory --list -i /path/to/gcp.yml时出现以下错误:
[WARNING]: * Failed to parse /home/user/CODE/ops/ansible/inventory/gcp-dynamic/demo3/gcp.yml with ansible_collections.google.cloud.plugins.inventory.gcp_compute plugin: gce inventory plugin cannot start: Failed to import the required Python library (google-auth) on server's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location
相关配置与环境信息
GCP清单文件gcp.yml内容
--- plugin: gcp_compute projects: - project9 auth_kind: serviceaccount service_account_file: /home/user/.config/credentials.json # setup group parasing prefix=inventory label keyed_groups: - key: labels prefix: demo3
ansible --version输出
ansible [core 2.13.2] config file = /home/user/.ansible.cfg configured module search path = ['/home/user/.local/lib/python3.9/site-packages/ansible/modules'] ansible python module location = /home/user/.local/lib/python3.9/site-packages/ansible ansible collection location = /home/user/.local/lib/python3.9/site-packages/ansible_collections executable location = /home/user/.local/bin/ansible python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] jinja version = 3.1.2 libyaml = True
依赖安装情况
pip3 show google-auth显示该库已安装在/home/user/.local/lib/python3.9/site-packages,且~/.ansible.cfg中已配置library路径包含该目录。
排查解决步骤
确认Python环境一致性
执行which python3和which ansible,检查Ansible调用的Python解释器是否与安装google-auth的pip3对应。错误提示显示使用的是/usr/bin/python3,而你的依赖安装在用户目录的Python3.9环境,可能存在环境不匹配:- 测试当前python3是否能导入库:
python3 -c "import google.auth; print(google.auth.__file__)" - 查看Ansible实际使用的Python:
ansible -m debug -a 'var=ansible_python_interpreter' localhost
对比两个命令输出的Python路径,确认是否为同一环境。
- 测试当前python3是否能导入库:
在系统Python环境安装依赖
如果Ansible确实调用的是系统/usr/bin/python3,则用系统pip安装完整依赖:sudo pip3 install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client指定Ansible使用的Python解释器
在~/.ansible.cfg中添加或修改配置,强制Ansible使用已安装依赖的Python环境:[defaults] interpreter_python = /home/user/.local/bin/python3.9安装Google Cloud集合的完整依赖
Google Cloud集合需要的依赖不止google-auth,执行以下命令确保所有依赖安装到位:ansible-galaxy collection install google.cloud --force pip3 install -r ~/.local/lib/python3.9/site-packages/ansible_collections/google/cloud/requirements.txt验证库的可导入性并清理缓存
用Ansible报错中提到的Python解释器直接测试导入:/usr/bin/python3 -c "import google.auth; print('Success')"如果测试成功但Ansible仍报错,清理Ansible缓存后重试:
rm -rf ~/.ansible/cache ansible-inventory --list -i /path/to/gcp.yml
内容的提问来源于stack exchange,提问作者GripV
相关产品推荐
相关产品推荐

