0

我正在尝试yum upgrade通过授予它特权来使用非root用户运行,sudo但我无法使其工作。

对于非 root 用户,我通过更改sudoers文件授予了 root 权限

## Allow root to run any commands anywhere
root      ALL=(ALL)       ALL
a_user    ALL=(ALL)       ALL

我的 Ansible 剧本如下,

---
- 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
4

1 回答 1

0

...没有错误,该过程永远不会完成。

该任务很可能在后台等待密码。

由于该条目ALL仅在您的文件中而不是 NOPASSWD: ALL在您的sudoers文件中,因此您也有必要sudo通过--ask-become-pass. 有关更多背景信息,请参阅了解权限提升:成为

由于我在我的环境中有相同的要求,我喜欢在这里分享我的方法。

该文件/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_userwhich 是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'

将工作。

于 2022-02-05T12:49:01.380 回答