![Ansible 无法让非 root 用户使用 APT 安装](https://linux22.com/image/751161/Ansible%20%E6%97%A0%E6%B3%95%E8%AE%A9%E9%9D%9E%20root%20%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%20APT%20%E5%AE%89%E8%A3%85.png)
我使用 ansible 创建了一个名为 的新用户nginx
,nginx
它是 sudo 组 a 的一部分,但是当我尝试使用该用户执行 apt install 时出现以下错误
: FAILED! => {"changed": false, "msg": "Failed to lock apt for exclusive operation"}
错误的原因是什么?如何修复?
下面是我的剧本,剧本会一直运行,直到它尝试运行任务Install aptitude using apt
- name: Install Nginx Ubuntu
hosts: web
remote_user: "{{ NGINX_USER }}"
become: yes
become_method: sudo
become_user: "{{ NGINX_USER }}"
connection: ssh
gather_facts: no
vars:
NGINX_VERSION: nginx-1.17.10
NGINX_SBIN_PATH: /usr/sbin/
NGINX_ERROR_LOG_PATH: /var/log/nginx/error.log
NGINX_HTTP_LOG_PATH: /var/log/nginx/access.log
NGINX_PID_PATH: /var/run/nginx.pid
vars_files:
- ../vars/global.yaml
tasks:
- name: Check if Nginx Exists
stat: path=/etc/init.d/nginx
register: nginx_status
become: yes
- name: Stop nginx Service
service: name=nginx state=stopped
when: nginx_status.stat.exists
register: service_stopped
- name: Make sure a systemd is not running
systemd:
state: stopped
name: nginx
- name: Install aptitude using apt
apt:
name: aptitude
state: latest
update_cache: yes
force_apt_get: yes
- name: Update apt repo
apt:
update_cache: yes
cache_valid_time: 3600
- name: Install required system packages
apt: name={{ item }} state=latest update_cache=yes
loop:
[
"build-essential",
"libpcre3",
"libpcre3-dev",
"zlib1g",
"zlib1g-dev",
"libssl-dev",
]
答案1
不确定,但我认为您正在切换到同一个用户。
- 尝试使用
become_user: root
(如果可以的话) - 检查组
a
是否具有足够的权限来安装软件包 - 并希望您多次运行它;但请确保没有其他用户/程序同时使用 apt。
试一下。
答案2
如果您的机器刚刚安装完毕,并启用了无人值守升级,它可能会在后台进行升级,并在过程中锁定 apt 包。
在对机器运行 Ansible 之前,请尝试让机器等待 30 分钟左右。