首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible -如何与非root用户一起运行yum升级?

Ansible -如何与非root用户一起运行yum升级?
EN

Stack Overflow用户
提问于 2016-05-12 05:42:33
回答 1查看 3.2K关注 0票数 0

我试图使用非根用户运行yum upgrade,方法是通过sudo授予它特权,但我无法使它工作。

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

代码语言:javascript
复制
## Allow root to run any commands anywhere
root      ALL=(ALL)       ALL
a_user    ALL=(ALL)       ALL

我的游戏手册如下,

代码语言:javascript
复制
---
- hosts: web-servers
  remote_user: mc
  become: yes
  become_method: sudo
  become_user: a_user
  tasks:
  - name: upgrade all packages
    yum: name=* state=latest

当我尝试上面的剧本时,没有错误,但是升级没有发生。

代码语言:javascript
复制
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
代码语言:javascript
复制
---
- hosts: web-servers
  remote_user: a_user
  tasks:
  - name: upgrade all packages
    yum: name=* state=latest
    become: yes
    become_method: sudo

当我尝试运行上面的剧本时,没有错误,而且这个过程永远不会完成。

代码语言:javascript
复制
TASK [setup] *******************************************************************
ok: [192.168.0.53]


TASK [upgrade all packages] ****************************************************N
EN

回答 1

Stack Overflow用户

发布于 2022-02-05 12:49:01

..。没有错误,而且这个过程永远不会完成。

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

由于您的ALL文件中只有条目而不是 NOPASSWD: ALL,所以您也需要通过--ask-become-pass提供sudo密码。有关更多背景信息,请参见理解权限提升:成为

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

文件/etc/sudoers包含

代码语言:javascript
复制
root                                  ALL=(ALL)       ALL
%wheel                                ALL=(ALL)       NOPASSWD: ALL
%admin_group                          ALL=(ALL)       NOPASSWD: ALL

和一个UPDATE_ROLE/main.yml

代码语言:javascript
复制
---
- 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"也是

代码语言:javascript
复制
sshpass -p ${PASSWORD} ansible-playbook --user ${ADMIN_USER} --ask-pass UPDATE_ROLE/main.yml 

或者是临时命令

代码语言:javascript
复制
sshpass -p ${PASSWORD} ansible test --user ${ADMIN_USER} --ask-pass --become --module-name shell --args 'yum --assumeyes update'

会起作用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37178180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档