Amazon Linux 2
Экземпляры обрабатываются с помощью Ansible Playbook, который выполняет несколько yum
задач одну за другой.
Какие конкретные изменения необходимо внести в синтаксис ниже, чтобы последовательные
yum
задачи выполнялись без остановки из-за конфликтов процессов?
В настоящее время вторая yum
задача ниже не выполняется, поскольку Ansible не знает, как обработать сообщение о том, что предыдущая yum
задача еще не отпустила yum
lockfile
.
Вот текущее сообщение об ошибке, которое выводится при yum
вызове второй задачи ниже:
TASK [remove any previous versions of specific stuff] ************************************************************************************************************************************
fatal: [10.1.0.232]: FAILED! => {"changed": false, "msg": "yum lockfile is held by another process"}
Две последовательные yum
задачи в настоящее время записываются следующим образом:
- name: Perform yum update of all packages
yum:
name: '*'
state: latest
- name: remove any previous versions of specific stuff
yum:
name: thing1, thing2, thing3, thing4, thing5, thing6
state: absent
Я полагаю, что решение заключается в том, чтобы просто добавить что-то, сообщающее Ansible ждать, пока не yum
будет снята блокировка первой задачи. Но какой синтаксис следует использовать для этого?
решение1
Я почти уверен, что вы столкнулись с этой проблемой, используя Ansible 2.8, теперь она хочет взорваться при запуске установки пакетов YUM. Простой способ обойти это — установить var lock_timeout
на 100 +, так как по умолчанию установлено значение 0.
- name: Install yum utils
yum:
name:
- yum-utils
- "@Development tools"
lock_timeout: 180
К сожалению, проблема в том, что когда у вас много задач Ansible, которые устанавливают пакеты YUM, вам нужно добавить эту переменную в каждую отдельную задачу. Я искал способ установить это глобально, но безрезультатно. Надеюсь, это поможет!
Ссылки: https://github.com/ansible/ansible/issues/57189 https://docs.ansible.com/ansible/latest/modules/yum_module.html