,automation,ansible"/>

首页 > 解决方案 > Ansible:我如何使用“sudo su -c " 以另一个用户的身份执行命令?

问题描述

我正在帮助一位同事在服务器场上自动执行一些手动任务。他必须对应用程序执行管理任务,但在操作系统本身(Red Hat Enterprise Linux 7)内的权限有限。

一个大问题是他不能使用 sudo 来以另一个用户的身份执行命令。实际管理员要求他通过使用以另一个用户身份执行命令

    sudo su -c "<COMMAND>" <USERNAME>

似乎没有内置插件可以支持这一点。使用 shell 模块进行简单的远程命令调用没有问题,我可以将“sudo su -c”编码到将被远程调用的命令中。但是对于所有其他 Ansible 模块,我想做类似的事情

    become: yes
    become_user: ...
    become_method: sudo_and_su

最好的方法是什么?我必须编写自定义成为插件吗?

标签: automationansible

解决方案


在你的剧本中设置becomebecome_method如下:

become: yes
become_method: su

并且您需要更改参数become_exe

您可以在主机服务器上的 env 变量下运行 playbook export 之前更改它:

ANSIBLE_BECOME_EXE=’sudo su -‘

或在ansible.cfg文件中更改

[privilege_escalation]
become_exe = ’sudo su -‘

推荐阅读