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
最好的方法是什么?我是否必须编写自定义成为插件?
在您的剧本中设置 become
和 become_method
,如下所示:
become: yes
become_method: su
并且您需要更改参数 become_exe
。
您可以在 运行 将剧本导出到主机服务器上的环境变量下方之前更改它:
ANSIBLE_BECOME_EXE=’sudo su -‘
或在ansible.cfg
文件中更改
[privilege_escalation]
become_exe = ’sudo su -‘
我正在帮助一位同事自动化服务器场中的一些手动任务。他必须对应用程序执行管理任务,但在 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
最好的方法是什么?我是否必须编写自定义成为插件?
在您的剧本中设置 become
和 become_method
,如下所示:
become: yes
become_method: su
并且您需要更改参数 become_exe
。
您可以在 运行 将剧本导出到主机服务器上的环境变量下方之前更改它:
ANSIBLE_BECOME_EXE=’sudo su -‘
或在ansible.cfg
文件中更改
[privilege_escalation]
become_exe = ’sudo su -‘