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

已配置免密sudo用户,Ansible仍提示需输入sudo密码

Ansible执行Playbook提示"Missing sudo password"问题排查

我刚开始学习Ansible,编写了一个简单的Playbook,使用免密远程用户ansible执行apt安装命令,并配置了become: true等参数,代码如下:

---

- name: managing the ubuntu servers
  hosts: ubuntu_servers
  remote_user: ansible
  become: true
  become_method: sudo
  become_user: root
  tasks:
    - name: Installing a package on ubuntu servers
      apt:
        name: traceroute
        state: present
        update_cache: true

我已在服务器上验证ansible用户为免密sudoer,但执行Playbook时始终报错:

fatal: [server2]: FAILED! => {"msg": "Missing sudo password"}
fatal: [server3]: FAILED! => {"msg": "Missing sudo password"}

以下是可能的解决办法:

  • 检查sudoers配置的正确性:确保ansible用户的免密sudo规则配置无误。用visudo命令编辑/etc/sudoers或/etc/sudoers.d/下的对应文件,规则格式必须为:

    ansible ALL=(ALL) NOPASSWD: ALL
    

    注意NOPASSWD为大写,末尾的ALL不能省略(否则仅允许特定命令免密)。编辑完成后用sudo -l -U ansible验证规则是否生效。

  • 手动验证远程sudo免密:登录到server2、server3服务器,切换到ansible用户,执行sudo apt install traceroute,确认是否需要输入密码。如果这里需要密码,说明sudo配置存在问题,优先修正该部分。

  • 调整Ansible执行参数:执行Playbook时添加--become(或简写-b)参数,确保强制启用提权逻辑。另外检查本地ansible.cfg文件,若存在become_ask_pass = True配置,改为False避免Ansible主动询问sudo密码。

  • 重置sudo会话:部分sudo配置会限制免密会话时长,可在远程服务器执行sudo -k重置sudo会话,再重新运行Playbook测试。

内容的提问来源于stack exchange,提问作者ESvi3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:15:00