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

Ansible临时命令与剧本中become-user的差异及权限问题排查

问题描述

我通过LDAP用户登录Ansible,随后sudo切换为db2inst1用户执行命令。临时命令模式运行正常,但使用剧本执行时提示需将用户添加至sudoers文件,执行失败。

正常运行的临时命令

ansible all -i ftest.lst -e ansible_user=user@a.com -e "ansible_ssh_pass={{pass}}" -e "ansible_become_pass={{test_user}}" -e "@pass.yml" --vpas vault -a ". /home/db2inst1/sqllib/db2profile;db2pd -hadr -alldbs;whoami" -m raw -b --become-user=db2inst1

剧本执行情况

执行命令:

ansible-playbook -i ftest.lst -e target=test -e ansible_user=user@a.com -e "ansible_ssh_pass={{pass}}" -e "ansible_become_pass={{test_user}}" -e "@pass.yml" --vpas vault test.yml

test.yml关键配置:

become: true
become_user: "{{ instance }}"

已传入参数instance=db2inst1

报错信息

fatal: [hostname123.a]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "module_stderr": "Shared connection to hostname123.a closed.\r\n", "module_stdout": "\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
排查与解决方法
  • Raw模块与常规模块的差异
    临时命令使用-m raw模块,直接通过SSH发送命令,无Ansible模块封装逻辑;而剧本默认使用常规模块(如command/shell),会先在目标主机执行Python模块,该过程的sudo规则与直接执行命令不同,可能触发权限限制。

  • 检查sudoers配置细节
    确保LDAP用户user@a.com的sudo规则允许切换到db2inst1时执行Python解释器及Ansible临时文件相关操作,而非仅限制db2命令。示例规则:

user@a.com ALL=(db2inst1) NOPASSWD: ALL

若需要输入密码,移除规则中的NOPASSWD并确保become_pass参数正确传递。

  • 在剧本中使用raw/shell模块
    保持与临时命令一致的执行逻辑,在剧本中改用raw或shell模块编写命令串:
- name: 执行db2相关操作
  hosts: "{{ target }}"
  tasks:
    - name: 切换至db2inst1用户执行命令
      raw: ". /home/db2inst1/sqllib/db2profile;db2pd -hadr -alldbs;whoami"
      become: true
      become_user: "{{ instance }}"
  • 开启调试日志定位问题
    执行剧本时添加-vvv参数,查看详细stderr输出,明确sudo被拒绝的具体原因:
ansible-playbook -i ftest.lst -e target=test -e ansible_user=user@a.com -e "ansible_ssh_pass={{pass}}" -e "ansible_become_pass={{test_user}}" -e "@pass.yml" --vpas vault test.yml -vvv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:06:10