Ansible sudo 根跳跃

Ansible sudo root hop

我的问题是:

由于使用 root 用户通过 ssh 连接到远程计算机通常被视为不好的做法,因此我使用特定的非特权帐户连接到服务器。

但对我来说,以 root 用户身份执行所有操作也是一种不好的做法。我更喜欢尽可能使用应用程序用户。

有了 ansible,我可以成为 root 并使用 become 指令执行特权命令。但是有没有办法成为任何具有 root 'hop' 特权升级的用户?

即 使用 ssh-user 进行 ssh => 成为 root => 成为任何其他用户

我看到的其他方式并不完全令我满意:

我是否缺少一些更巧妙地执行此操作的方法?

您可以使用 --ask-become-pass 选项 运行 您的剧本,例如:

ansible-playbook -i ../inventories/production.ini service_install.yml --ask-become-pass

并且在你的清单中,这里被称为 production.ini,为 ansible 组添加你的信息用户:

[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

然后您可以加密您的库存文件以保密您的密码,并将解密密码提供给您的OPs/Sysadmins团队

ansible-vault encrypt ../inventories/production.in

保留的最终命令将是:

ansible-playbook -i ../inventories/production.ini service_install.yml --ask-become-pass --ask-vault-pass

然后在你的游戏中,你只需要用户“成为:是”选项来调用你的任务:

cmd: "my_command" app_user
become: yes

我刚刚编辑了我的答案,任务已更正。通常它应该在没有 "su" 命令的情况下工作。

cmd: "my_command" app_user become: yes