Ansible 无法让非 root 用户使用 APT 安装

Ansible 无法让非 root 用户使用 APT 安装

我使用 ansible 创建了一个名为 的新用户nginxnginx它是 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 分钟左右。

相关内容