Ansible apt任务:无法锁定apt以进行独占操作

时间:2017-09-07 14:13:52

标签: ubuntu ansible

我写了一本Ansible剧本,其中包括apt-get dist-upgrade。我确保在游戏手册的顶部放置become: truebecome_user: root,以便获得sudo访问权限以进行升级。这在我的Vagrant虚拟机本地工作正常,但在我们的生产系统(Ubuntu 16.04)上运行时,我们收到以下错误:

Failed to lock apt for exclusive operation

我们当前的解决方法是通过SSH连接到计算机,然后手动运行sudo apt-get dist-upgrade。然后退出SSH会话并再次运行ansible playbook并且它可以工作。

我们的剧本中的其他任务需要sudo访问并且正常工作。只是apt命令失败了。我们尝试重新启动计算机,并将become: truebecome_user: root替换为sudo: yes,但无济于事。

有关如何解决此问题的任何想法?我将在下面列出我们剧本的相关部分。

- become: true
  become_user: root
  name: Setup the mongo database servers
  hosts: sgmongo-{{ customer }}-ciadmin
  tasks:
    -
      name: Ensure OS is upgraded with all patches
      apt: upgrade=dist update_cache=yes

2 个答案:

答案 0 :(得分:0)

我通过使用Ansible调用shell脚本来做到这一点,就像这样:

https://github.com/zimmertr/Bootstrap-Kubernetes-with-QEMU/blob/371a16f08c56d3d47678b632665247778acd8980/playbooks/main/install_base_packages.yml#L9

Ansible调用的相关脚本在这里:https://github.com/zimmertr/Bootstrap-Kubernetes-with-QEMU/blob/master/files/bash_scripts/monitor_automatic_updates_status.sh

它只是连续检查apt是否在系统上运行。并且,当它最终完成运行时,允许Ansible继续。

答案 1 :(得分:-1)

好像你已经中断了apt命令。尝试通过运行:

删除/var/lib/apt下的apt锁定文件

sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock