具有受限Sudo访问权限的特权Ansible命令

时间:2020-02-11 17:22:14

标签: ansible sudo

我正在尝试开发Ansible Playbook,该书执行一系列维护步骤,例如更新OS和清理临时文件。其中一些命令,例如 reboot systemd 需要root特权。 Ansible文档指出 become 属性是提升访问权限的适当方法:

- name: reboot the host
  become: true
  reboot:
    reboot_timeout: 120

不幸的是,执行剧本的用户没有完全的sudo访问权限。相反,某些命令在sudoers文件中列入了白名单。

我遇到的问题是Ansible似乎使用 / bin / sh 执行所有提升的命令。具体来说,我检查并记录了sudo become plugin的返回值,发现提升的命令似乎像这样包装在shell脚本中:

sudo    /bin/sh -c 'echo BECOME-SUCCESS-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访问权限更好的方法来解决此问题。

0 个答案:

没有答案