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

无vCenter独立ESXi环境下用Ansible add_host调用vim-cmd报错求助

报错根因

当前任务的命令执行位置配置完全错误:

  • 针对/bin/vim-cmd的执行任务你配置了delegate_to: localhost,该参数会强制把本该在远程ESXi节点上运行的命令,拉回执行Ansible的本地控制机运行
  • 通用操作系统(你的本地控制机)不存在ESXi专属内置程序/bin/vim-cmd,直接触发系统层的「文件或目录不存在」报错,对应返回信息[Errno 2] No such file or directory
对应解决操作
  • 移除错误的委派配置:直接删掉command: /bin/vim-cmd vmsvc/getallvms任务下的delegate_to: localhost行。删除后Ansible会按照add_host配置的连接参数,SSH登录到对应ESXi节点执行命令,/bin/vim-cmd是ESXi系统原生预装的程序,路径本身有效。
  • 移除不兼容的提权配置:playbook中配置的become: yes不适用于ESXi的通用SSH连接——ESXi的SSH会话使用root账号登录时本身就是最高权限,不需要通过Ansible的sudo提权机制,直接删除这行即可。
  • 前置加连通性校验:为避免其他路径异常,可先加一个简易校验任务确认ESXi端可正常访问目标程序,修正后的角色tasks/main.yml参考:
    ---
    - block:
      - name: 校验vim-cmd程序存在
        command: ls -l /bin/vim-cmd
      - name: 获取ESXi上所有虚拟机列表
        command: /bin/vim-cmd vmsvc/getallvms
    
      rescue:
      - name: 失败兜底提示
        debug:
          msg: "当前ESXi节点执行vim-cmd失败,请检查SSH连接、账号权限配置"
    

补充注意:ESXi主机需要提前开启SSH服务,且root账号的Shell访问权限未被禁用,否则会触发连接类报错,和当前的文件不存在报错逻辑无关。

内容的提问来源于stack exchange,提问作者이상규

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 07:15:03