automation - 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
最好的方法是什么?我必须编写自定义成为插件吗?
解决方案
在你的剧本中设置become
和become_method
如下:
become: yes
become_method: su
并且您需要更改参数become_exe
。
您可以在主机服务器上的 env 变量下运行 playbook export 之前更改它:
ANSIBLE_BECOME_EXE=’sudo su -‘
或在ansible.cfg
文件中更改
[privilege_escalation]
become_exe = ’sudo su -‘