nitin3685
nitin3685

Reputation: 855

"apt" module in Ansible playbook execution randomly fails on different hosts each time with message "Failed to lock apt for exclusive operation"

When i try to install a list of packages('apache2', 'libapache2-mod-wsgi', 'python-pip', 'python-virtualenv') on on a group of hosts (app01 and app02), it fails randomly either on app01 or app02. After a first few retries the required packages are already installed on the host. Subsequent execution continue to fail randomly on app01 or app02 instead of returning a simple success.

The ansible controller and hosts are all running ubuntu 16.04

The controller has ansible 2.8.4

I have already set "become: yes" in playbook. I have already tried running apt-get clean and apt-get update. on the hosts

Inventory file

[webserver]
app01 ansible_python_interpreter=python3
app02 ansible_python_interpreter=python3

Playbook

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

In the first run , the execution fails on host app01

In the second run, the execution fails on host app02

1 st Run

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   

2nd Run

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  

Upvotes: 1

Views: 3774

Answers (1)

xenlo
xenlo

Reputation: 859

The behavior is a bit strange… one succeed, and other failing each time.

My guess is that your app01 and app02 are actually the same host! If so, it sounds normal that the 2 jobs fight against each other.

Upvotes: 2

Related Questions