You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible VMware模块收集VM facts时持续遭遇权限拒绝错误

Ansible VMware模块收集VM facts时持续遭遇权限拒绝错误

我仔细看了你的问题描述、playbook代码和错误日志,发现真正的问题不是VMware vCenter的认证权限,而是Ansible执行模块时调用的Python解释器路径/home/neil/venv/Ansible/bin/python3.11没有执行权限,这才导致了Permission denied错误。

先给你展示一下你提供的相关代码和错误信息,方便对照排查:

你的VM facts收集任务代码

- name: Find VM's facts
  community.vmware.vmware_guest_info:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ vmware_datacentres[vcenter_hostname] }}"
    name: "{{ ansible_fqdn }}"
    validate_certs: false
  delegate_to: localhost
  register: vm_facts

- name: Debug vm_facts
  debug:
    var=vm_facts

错误日志片段

TASK [vmware-test : Find VM's facts] **************************************************************************************************
fatal: [testhost1 -> localhost]: FAILED! => {"changed": false, "module_stderr": "\n/bin/sh: /home/neil/venv/Ansible/bin/python3.11: Permission denied\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 126}

接下来给你几个针对性的解决步骤:

  • 第一步:检查Python解释器的权限
    登录到localhost(也就是你执行Ansible的机器),运行以下命令查看目标Python文件的权限:

    ls -l /home/neil/venv/Ansible/bin/python3.11
    

    正常情况下,权限位应该包含x(执行权限),比如-rwxr-xr-x,如果没有x,说明确实缺少执行权限。

  • 第二步:修复Python解释器的执行权限
    如果检查后发现缺少执行权限,运行下面的命令添加权限:

    chmod +x /home/neil/venv/Ansible/bin/python3.11
    
  • 第三步:明确指定Ansible使用的Python解释器
    有时候Ansible会自动选择不合适的Python路径,你可以在playbook的开头明确指定一个有执行权限的Python解释器,比如系统默认的Python3:

    - name: VMware VM Facts Collection
      hosts: testhost1
      vars:
        ansible_python_interpreter: /usr/bin/python3  # 根据你机器的实际路径调整
      tasks:
        # 这里放你原来的VMware任务代码
    

    或者你也可以修改ansible.cfg配置文件中的interpreter_python参数,全局指定正确的Python路径。

  • 第四步:验证虚拟环境完整性(可选)
    如果上面的步骤都没解决问题,可能是你的Ansible虚拟环境损坏了,可以尝试重新创建虚拟环境:

    # 如果当前在虚拟环境中,先退出
    deactivate
    # 删除旧的虚拟环境
    rm -rf /home/neil/venv/Ansible
    # 重新创建虚拟环境
    python3 -m venv /home/neil/venv/Ansible
    # 激活虚拟环境
    source /home/neil/venv/Ansible/bin/activate
    # 重新安装所需依赖
    pip install ansible community.vmware
    

按照这些步骤排查后,应该就能解决权限拒绝的问题,成功收集VM的facts了。

备注:内容来源于stack exchange,提问作者NeilWang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:18:10