Amazon Linux 2
yum
인스턴스는 여러 작업을 순차적으로 수행하는 Ansible 플레이북에 의해 운영됩니다 .
프로세스 충돌로 인해 중단되지 않고 후속 작업을 실행하려면
yum
아래 구문에서 구체적으로 어떤 변경이 필요합니까 ?
현재 아래의 두 번째 작업은 Ansible이 아직 릴리스되지 않은 yum
이전 작업을 어떻게 처리할지 모르기 때문에 실패합니다 . 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 패키지 설치를 실행할 때 충돌이 발생합니다. 이 문제를 해결하는 쉬운 방법은 lock_timeout
기본값이 0이므로 var를 100+로 설정하는 것입니다.
- name: Install yum utils
yum:
name:
- yum-utils
- "@Development tools"
lock_timeout: 180
불행하게도 이것의 문제는 YUM 패키지를 설치하는 Ansible 작업이 많을 때 각 작업에 이 var를 추가해야 한다는 것입니다. 나는 이것을 전역적으로 설정하는 방법을 찾고 있었지만 재미는 없었습니다. 도움이 되었기를 바랍니다!
링크: https://github.com/ansible/ansible/issues/57189 https://docs.ansible.com/ansible/latest/modules/yum_module.html