我的问题是:
由于使用root用户通过ssh连接到远程计算机通常被视为一种不好的做法,我使用特定的非特权帐户连接到服务器。
但对我而言,以root用户身份执行所有操作也是一种不好的做法。我喜欢随时使用适用的用户。
使用ansible我可以成为root并使用become指令执行特权命令。但是有没有意义成为任何具有root'hump'权限升级的用户?
即 ssh与ssh-user =>成为root =>成为任何其他用户
我看到的其他方法并不完全让我满意:
成为root用户,使用cmd模块并使用su(显示以下不推荐使用的消息 [警告]:考虑使用'become','become_method'和'become_user'而不是运行su ):
cmd: su -c "my_command" app_user
become: True
become_user: root
向我的ssh-user添加sudoers权限,直接成为所有申请用户
我错过了一些更简洁的方法吗?
答案 0 :(得分:0)
您可以使用 - ask-become-pass 选项运行您的剧本,例如:
ansible-playbook -i ../inventories/production.ini service_install.yml --ask-成为通
在您的广告资源中,这里称为production.ini,为ansible group添加您的信息用户:
[group1]
182.26.5.159
182.26.5.160
182.26.5.161
...
[group1:vars]
ansible_connection=ssh
ansible_user=appuser # insert your app user here
ansible_ssh_pass=passuser # insert your pass here
然后,您可以加密您的广告资源文件,以保护您的密码机密,并将解密密码提供给您的OP /系统管理员小组
ansible-vault encrypt ../ inventoryories / production.in
保留的最终命令是:
ansible-playbook -i ../inventories/production.ini service_install.yml --ask-become-pass --ask-vault-pass
然后在您的游戏中,您只需要使用“成为:是”选项来调用您的任务:
cmd: "my_command" app_user
become: yes
答案 1 :(得分:0)
我刚刚编辑了我的答案,任务已经纠正。通常它应该在命令没有“su”的情况下工作。
cmd:“my_command”app_user变为:是