我试图使用非根用户运行yum upgrade,方法是通过sudo授予它特权,但我无法使它工作。
对于非根用户,我通过更改sudoers文件授予根用户权限。
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
a_user ALL=(ALL) ALL我的游戏手册如下,
---
- hosts: web-servers
remote_user: mc
become: yes
become_method: sudo
become_user: a_user
tasks:
- name: upgrade all packages
yum: name=* state=latest当我尝试上面的剧本时,没有错误,但是升级没有发生。
TASK [setup] *******************************************************************
ok: [192.168.0.53]
TASK [upgrade all packages] ****************************************************
ok: [192.168.0.53]
PLAY RECAP *********************************************************************
192.168.0.53 : ok=2 changed=0 unreachable=0 failed=0---
- hosts: web-servers
remote_user: a_user
tasks:
- name: upgrade all packages
yum: name=* state=latest
become: yes
become_method: sudo当我尝试运行上面的剧本时,没有错误,而且这个过程永远不会完成。
TASK [setup] *******************************************************************
ok: [192.168.0.53]
TASK [upgrade all packages] ****************************************************N发布于 2022-02-05 12:49:01
..。没有错误,而且这个过程永远不会完成。
任务很可能在后台等待密码。
由于您的ALL文件中只有条目而不是 NOPASSWD: ALL,所以您也需要通过--ask-become-pass提供sudo密码。有关更多背景信息,请参见理解权限提升:成为。
由于我的环境中有相同的要求,所以我喜欢在这里分享我的方法。
文件/etc/sudoers包含
root ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL
%admin_group ALL=(ALL) NOPASSWD: ALL和一个UPDATE_ROLE/main.yml
---
- hosts: test
become: yes
become_method: sudo
gather_facts: false
tasks:
- name: Update all packages
yum:
name: '*'
state: latest在远程主机上有一个admin_user,它是admin_group的成员。
所以对于export ADMIN_USER="admin_user"也是
sshpass -p ${PASSWORD} ansible-playbook --user ${ADMIN_USER} --ask-pass UPDATE_ROLE/main.yml 或者是临时命令
sshpass -p ${PASSWORD} ansible test --user ${ADMIN_USER} --ask-pass --become --module-name shell --args 'yum --assumeyes update'会起作用的。
https://stackoverflow.com/questions/37178180
复制相似问题