Ansible:如何使用 "sudo su -c <COMMAND> <USER>" 作为另一个用户执行命令?

Ansible: how can I use "sudo su -c <COMMAND> <USER>" to execute a command as another user?

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

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

作为另一个用户执行命令
    sudo su -c "<COMMAND>" <USERNAME>

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

的事情
    become: yes
    become_user: ...
    become_method: sudo_and_su

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

在您的剧本中设置 becomebecome_method,如下所示:

become: yes
become_method: su

并且您需要更改参数 become_exe

您可以在 运行 将剧本导出到主机服务器上的环境变量下方之前更改它:

ANSIBLE_BECOME_EXE=’sudo su -‘

或在ansible.cfg文件中更改

[privilege_escalation]
become_exe = ’sudo su -‘