Amazon Linux 2
as instâncias são operadas por um Ansible Playbook que executa várias yum
tarefas, uma após a outra.
Que alterações específicas precisam ser feitas na sintaxe abaixo para que as
yum
tarefas sucessivas sejam executadas sem parar devido a conflitos de processo?
Atualmente, a segunda yum
tarefa abaixo está falhando porque o Ansible não sabe como lidar com a notícia de que a yum
tarefa anterior ainda não abandonou o yum
lockfile
.
Aqui está a mensagem de erro atual que é arquivada quando a segunda yum
tarefa abaixo é chamada:
TASK [remove any previous versions of specific stuff] ************************************************************************************************************************************
fatal: [10.1.0.232]: FAILED! => {"changed": false, "msg": "yum lockfile is held by another process"}
As duas yum
tarefas sucessivas são atualmente escritas da seguinte forma:
- 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
Imagino que a solução seja apenas adicionar algo dizendo ao Ansible para esperar até que o yum
bloqueio da primeira tarefa seja liberado. Mas qual sintaxe deve ser usada para isso?
Responder1
Tenho certeza de que você está enfrentando esse problema usando o Ansible 2.8, ele quer explodir agora ao executar as instalações do pacote YUM. Uma solução fácil para isso é definir lock_timeout
var como 100 +, pois o padrão é definido como 0.
- name: Install yum utils
yum:
name:
- yum-utils
- "@Development tools"
lock_timeout: 180
Infelizmente, o problema com isso é que quando você tem muitas tarefas Ansible que instalam pacotes YUM, você precisa adicionar esta var a cada tarefa. Tenho procurado uma maneira de definir isso globalmente de alguma forma, mas sem alegria. Espero que ajude!
Links: https://github.com/ansible/ansible/issues/57189 https://docs.ansible.com/ansible/latest/modules/yum_module.html