首页 > 解决方案 > 在安全环境中使用 become/ansible 进行权限提升

问题描述

我想在安全的环境中使用 ansible 执行管理任务:

在服务器上:

这是我执行的命令:

ansible-playbook install_update.yaml -K

剧本:

    ---
- hosts: server
  tasks:
    - name: install
      apt:
        name: python-apt
        state: latest
    - name: update
      become: yes
      become_user: admin_account
      become_method: su
      apt:
        name: "*"
        state: latest

主机文件:

    [server]
192.168.1.50 ansible_user=ssh_account

但这不允许我完成任务:对于这个特定的剧本,它会引发这个错误:

fatal: [192.168.1.50]: FAILED! => {"changed": false, "msg": "'/usr/bin/apt-get upgrade --with-new-pkgs ' failed: E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?\n", "rc": 100, "stdout": "", "stdout_lines": []}

这给出了存在特权问题的想法......

如果有人有想法,我会很高兴!

此致

PS:我已将此管理员帐户的 nopasswd 添加到 sudoers 文件中,如果我运行此剧本,它可以工作:

---
- hosts: pi
  tasks:
    - name: install
      apt:
        name: python-apt
        state: latest
    - name: update
      become: yes
      become_method: su
      become_user: rasp_admin
      shell: bash -c "sudo apt update"

我想当我通过 ssh_account 的 su 命令更改用户时,我想用 admin_accound 指定,我的命令必须使用 sudo 运行,但我找不到正确的方法......有什么想法吗?

PS:一个workarround是下载一个shell文件并用ansible执行它,但我发现它并不令人满意......还有其他想法吗?

标签: ansible

解决方案


推荐阅读