错误:无法在 Ubuntu 上使用 Ansible 包模块获取 dpkg 前端锁

问题描述 投票:0回答:1

作为 Ansible 新手,我正在使用循环在多台 Ubuntu 机器上安装一些软件包,这是我的剧本:

---
- name: Install Software 
  hosts: all             
  become: true    
  tasks:                 
    - name: Update package cache 
      package:                    # Use the package module
        name: "{{ item }}"        
        state: present            
      with_items:                 # Loop over the package list
        - vim                      
        - tree                     
        - figlet                   
      ignore_errors: yes         # Ignore errors if packages fail to install
      retries: 3                 # Number of retries if task fails
      delay: 10                  # Delay between retries in seconds

第一次运行 playbook 在其中一台主机上失败,错误消息如下:

失败:[serv01](项目=树)=> {“ansible_loop_var”:“项目”, “cache_update_time”:1716373387,“cache_updated”:假,“更改”: false, "item": "tree", "msg": "'/usr/bin/apt-get -y -o “Dpkg::选项::=--force-confdef”-o “Dpkg::Options::=--force-confold”安装“tree=2.0.2-1” 失败:E:无法获取锁/var/lib/dpkg/lock-frontend。举行 通过进程 1567 (apt-get) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有另一个进程正在使用它? ”,“rc”: 100, "stderr": "E: 无法获取锁 /var/lib/dpkg/lock-frontend。它 由进程 1567 (apt-get) 持有 E: 无法获取 dpkg 前端锁(/var/lib/dpkg/lock-frontend)是另一个使用的进程 它? ", "stderr_lines": ["E: 无法获取锁 /var/lib/dpkg/lock-frontend.它由进程 1567 (apt-get) 持有”, “E:无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有另一个进程在使用它?"], “stdout”:“”,“stdout_lines”:[]}失败:[serv01](item=figlet)=> {“ansible_loop_var”:“项目”,“cache_update_time”:1716373387, “cache_updated”:假,“更改”:假,“项目”:“figlet”,“msg”: "'/usr/bin/apt-get -y -o "Dpkg::Options::=--force-confdef" -o “Dpkg::Options::=--force-confold”安装“figlet=2.2.5-3” 失败:E:无法获取锁/var/lib/dpkg/lock-frontend。举行 通过进程 1567 (apt-get) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有另一个进程正在使用它? ”,“rc”: 100, "stderr": "E: 无法获取锁 /var/lib/dpkg/lock-frontend。它 由进程 1567 (apt-get) 持有 E: 无法获取 dpkg 前端锁(/var/lib/dpkg/lock-frontend)是另一个使用的进程 它? ", "stderr_lines": ["E: 无法获取锁 /var/lib/dpkg/lock-frontend.它由进程 1567 (apt-get) 持有”, “E:无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有另一个进程在使用它?"], “stdout”:“”,“stdout_lines”:[]} ...忽略

当我再次运行剧本时,它在所有主机上都成功了。

如何告诉 Ansible 等待直到锁被释放?或者可以同时安装软件包吗?

linux ubuntu ansible locking
1个回答
0
投票

错误信息非常清楚;这不是一个可靠的问题。

E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1567 (apt-get)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

连接到服务器并找出该进程正在做什么。提供了数据并且无法访问服务器,这是唯一可能的建议。

如果它被卡住了(使用

strace
检查)杀死它。手动运行例如之后有能力找出可能破坏了之前(非ansible控制运行)的原因。一旦你解决了问题,ansible 就会做它的事情。

© www.soinside.com 2019 - 2024. All rights reserved.