Проблема:
В логах Ansible появляются ошибки, вида:
STDERR: E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 4692 (unattended-upgr) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? MSG: '/usr/bin/apt-get -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" install 'keepalived=1:2.2.4-0.2build1'' failed: E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 4692 (unattended-upgr) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Решение:
Ошибка говорит о том, что в момент запуска Ansible утилита apt не смогла получить lock-файл /var/lib/dpkg/lock-frontend, потому что пакетный менеджер уже используется другим процессом — в данном случае unattended-upgr (служба автоматических обновлений).
Пока unattended-upgrades обновляет пакеты, любой параллельный вызов apt (в том числе из Ansible) получит E: Could not get lock.
Варианты решения:
- Дождаться завершения процесса unattended-upgr
Проверить можно, используя команду:
sudo apt update
Если появляются ошибки аналогичного формата - процесс ещё не завершён
- Принудительно остановить процесс (не рекомендуется)
Ищем в ошибке Ansible следующую строку:
E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 4692 (unattended-upgr)
Откуда берём код процесса и останавливаем его (в нашем случае код процесса 4692)
sudo kill 4692