ansible - 在安全环境中使用 become/ansible 进行权限提升
问题描述
我想在安全的环境中使用 ansible 执行管理任务:
在服务器上:
- root 未激活
- 我们通过 ssh 连接到一个非 sudoer 帐户(公钥/私钥,我通常使用 ssh-agent 不要每次都输入密码)
- 更改为属于 sudo 组的用户
- 然后我们执行管理任务
这是我执行的命令:
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执行它,但我发现它并不令人满意......还有其他想法吗?