Ansible sudo 根跳跃
Ansible sudo root hop
我的问题是:
由于使用 root 用户通过 ssh 连接到远程计算机通常被视为不好的做法,因此我使用特定的非特权帐户连接到服务器。
但对我来说,以 root 用户身份执行所有操作也是一种不好的做法。我更喜欢尽可能使用应用程序用户。
有了 ansible,我可以成为 root 并使用 become 指令执行特权命令。但是有没有办法成为任何具有 root 'hop' 特权升级的用户?
即
使用 ssh-user 进行 ssh => 成为 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权限,直接成为所有applicative用户
我是否缺少一些更巧妙地执行此操作的方法?
您可以使用 --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
我的问题是:
由于使用 root 用户通过 ssh 连接到远程计算机通常被视为不好的做法,因此我使用特定的非特权帐户连接到服务器。
但对我来说,以 root 用户身份执行所有操作也是一种不好的做法。我更喜欢尽可能使用应用程序用户。
有了 ansible,我可以成为 root 并使用 become 指令执行特权命令。但是有没有办法成为任何具有 root 'hop' 特权升级的用户?
即 使用 ssh-user 进行 ssh => 成为 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权限,直接成为所有applicative用户
我是否缺少一些更巧妙地执行此操作的方法?
您可以使用 --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