具有有限Sudo访问权限的特权Ansible命令
我正在尝试开发一个Ansible Playbook,它执行一系列维护步骤,例如更新操作系统和清理临时文件。其中一些命令(如reboot或systemd)需要root权限。Ansible文档表明,“成为”属性是提升访问权限的适当方式:具有有限Sudo访问权限的特权Ansible命令,ansible,sudo,Ansible,Sudo,我正在尝试开发一个Ansible Playbook,它执行一系列维护步骤,例如更新操作系统和清理临时文件。其中一些命令(如reboot或systemd)需要root权限。Ansible文档表明,“成为”属性是提升访问权限的适当方式: - name: reboot the host become: true reboot: reboot_timeout: 120 不幸的是,执行playbook的用户没有完全的sudo访问权限。相反,某些命令在sudoers文件中以白色列出 我遇到
- name: reboot the host
become: true
reboot:
reboot_timeout: 120
不幸的是,执行playbook的用户没有完全的sudo访问权限。相反,某些命令在sudoers文件中以白色列出
我遇到的问题是Ansible似乎使用/bin/sh执行所有提升的命令。具体来说,我检查并记录了的返回值,发现提升的命令似乎被包装到shell脚本中,如下所示:
sudo/bin/sh-c'echo成功sddadrnobshlgupsldsqcunalofnshjx/usr/bin/python/tmp/.ansible/tmp/ansible-tmp-1581373432.4900978-226016980552294/AnsiballZ_command.py
由于未向该用户授予通用提升shell访问权限,因此该步骤自然会失败。这是令人沮丧的,因为直接调用命令似乎确实有效:
- name: reboot the host
command: sudo reboot
async: 1
poll: 0
- name: wait for connection
wait_for_connection:
connect_timeout: 20
sleep: 5
delay: 5
timeout: 120
我想知道是否有更好的方法来解决这个问题,而不是不使用bevome或向有问题的用户提供完整的root访问权限。这是一个已知且有文档记录的“使用Been的风险和限制”=>。谢谢,我在阅读文档时错过了这一部分。我想事情就是这样。