Skip to content

Instantly share code, notes, and snippets.

@alanbchristie
Created May 30, 2019 15:52
Show Gist options
  • Save alanbchristie/4e21079f1711992cb92df9ee898ebd6f to your computer and use it in GitHub Desktop.
Save alanbchristie/4e21079f1711992cb92df9ee898ebd6f to your computer and use it in GitHub Desktop.
Task for the yum lockfile error in Ansible 2.8.0
---
# A work-around for the Ansible 2.8.0 error: -
#
# yum lockfile is held by another process
#
# This is seen during yum/package operations. An error not seen
# in Ansible 2.7 and the problem appears to be caused by one of these
# lingering processes...
#
# root 3191 33.0 0.7 331812 30828 ? D 14:46 0:00 /usr/bin/python -tt /sbin/yum-complete-transaction -c /etc/yum.conf -y
#
# root 3766 88.0 4.3 387268 168832 ? R 15:38 0:03 /usr/bin/python -tt /bin/repoquery -c /etc/yum.conf [...]
#
# Here we grep for processes containing 'yum'.
# If we only get two responses then the lock is free.
# If all's good the result of the shell-command on the host is: -
#
# root 5901 0.0 0.0 113176 1216 ? S 15:16 0:00 /bin/sh -c ps -aux | grep yum
# root 5903 0.0 0.0 112708 956 ? S 15:16 0:00 grep yum
#
# So, if we don't count more than 2 lines we're "good to go".
#
# just 'import' this task before any yum/package operation
# in your playbook/role...
- name: Wait for yum lock release (Ansible 2.8.0 workaround)
shell: ps -aux | grep yum
register: yum_lock
retries: 20
delay: 6
until: yum_lock.stdout_lines|length <= 2
changed_when: false
when: ansible_version.string == '2.8.0'
@alanbchristie
Copy link
Author

There is now a lock_timeout in the yum module for v2.8.0 so this should work: -

- name: Install yum utils
  package:
    name:
    - yum-utils
    - "@Development tools"
    lock_timeout: 180

@ElijahLynn
Copy link

There is now a lock_timeout in the yum module for v2.8.0 so this should work: -

- name: Install yum utils
  package:
    name:
    - yum-utils
    - "@Development tools"
    lock_timeout: 180

I tried this in 2.8 to try to fix a yum lockfile is held by another process error and got 'lock_timeout' is not a valid attribute for a Task both for lock_timeout. Was worth a try! The only way to do this is to use the actual yum module, and not the package module as it doesn't support the lock_timeout option.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment