&引用;apt";Ansible playbook中的模块每次在不同主机上执行时都会随机失败,并显示消息“0”;未能为独占操作锁定apt“;

&引用;apt";Ansible playbook中的模块每次在不同主机上执行时都会随机失败,并显示消息“0”;未能为独占操作锁定apt“;,ansible,Ansible,当我尝试在一组主机(app01和app02)上安装软件包列表(“apache2”、“libapache2 mod wsgi”、“python pip”、“python virtualenv”)时, 它在app01或app02上随机失败。 在最初几次重试后,主机上已经安装了所需的软件包。后续执行在app01或app02上继续随机失败,而不是返回简单的成功 ansible控制器和主机都运行ubuntu 16.04 控制器具有ansible 2.8.4 我已经在剧本中设定了“成为:是的”。 我已经尝试

当我尝试在一组主机(app01和app02)上安装软件包列表(“apache2”、“libapache2 mod wsgi”、“python pip”、“python virtualenv”)时, 它在app01或app02上随机失败。 在最初几次重试后,主机上已经安装了所需的软件包。后续执行在app01或app02上继续随机失败,而不是返回简单的成功

ansible控制器和主机都运行ubuntu 16.04

控制器具有ansible 2.8.4

我已经在剧本中设定了“成为:是的”。 我已经尝试运行apt get clean和apt get update。关于主持人

库存文件

[webserver]
app01 ansible_python_interpreter=python3
app02 ansible_python_interpreter=python3

剧本

---
- hosts: webserver
  tasks:
    - name: install web components
      become: yes
      apt: 
        name: ['apache2', 'libapache2-mod-wsgi', 'python-pip', 'python-virtualenv'] 
        state: present 
        update_cache: yes

在第一次运行中,在主机app01上执行失败

在第二次运行中,在主机app02上执行失败

第一轮

shekhar@control:~/ansible$ ansible-playbook -v playbooks/webservers.yml
Using /home/shekhar/ansible/ansible.cfg as config file

PLAY [webserver] ******************************************************************************

TASK [Gathering Facts] ******************************************************************************
ok: [app01]
ok: [app02]

TASK [install web components] ******************************************************************************
fatal: [app01]: FAILED! => {"changed": false, "msg": "Failed to lock apt for exclusive operation"}
ok: [app02] => {"cache_update_time": 1568203558, "cache_updated": false, "changed": false}

PLAY RECAP ******************************************************************************
app01                      : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
app02                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
第二轮

shekhar@control:~/ansible$ ansible-playbook -v playbooks/webservers.yml
Using /home/shekhar/ansible/ansible.cfg as config file

PLAY [webserver] ******************************************************************************

TASK [Gathering Facts] ******************************************************************************
ok: [app01]
ok: [app02]

TASK [install web components] ******************************************************************************
fatal: [app02]: FAILED! => {"changed": false, "msg": "Failed to lock apt for exclusive operation"}
ok: [app01] => {"cache_update_time": 1568203558, "cache_updated": false, "changed": false}

PLAY RECAP ******************************************************************************
app01                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
app02                      : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0  

这种行为有点奇怪……每次一个成功,另一个失败


我猜您的app01和app02实际上是同一个主机!如果是这样的话,这两份工作互相争斗听起来很正常。

可能与之非常相似。确保已禁用主机上的自动更新。更一般地说(如果自动更新不是问题),请检查是什么导致apt启动并在运行playbook的外部主机上获得锁定。是否确定app01和app02是两个不同的主机!否则这两份工作互相争斗听起来很正常…@xenlo:你说得对。我的错。My/etc/hosts文件错误地填充了指向同一台机器的app01和app02,尽管实际上它们是不同的机器。一旦我解决了这个问题,问题就消失了。在这种情况下,我不懂礼节。我应该删除这个问题吗?或者你将你的评论作为答案发布,这样我就可以投票并接受答案。@nitin3685,不知道我们该怎么做。但你的建议听起来不错,我把我的评论作为答案抄下来,我觉得不错。你是对的。My/etc/hosts文件错误地填充了指向同一台机器的app01和app02,尽管实际上它们是不同的机器。一旦我解决了这个问题,问题就消失了。