Ejecuto una tarea shell: docker ps ... en algunos de mis libros de jugadas. Esto normalmente funciona, pero a veces el demonio de la ventana acoplable se bloquea y el docker ps de la ventana acoplable no regresa durante aproximadamente 2 horas.
¿Cómo puedo configurar Ansible para que agote el tiempo de espera en un tiempo razonable si docker ps no regresa?
Se agrega un tiempo de timeout de task en la versión 2.10, que es útil en tal escenario.
https://github.com/ansible/ansible/issues/33180
https://github.com/ansible/ansible/pull/69284
Por ejemplo, el siguiente libro de jugadas falla en la versión 2.10 :
--- - hosts: localhost connection: local gather_facts: false tasks: - shell: | while true; do sleep 1 done timeout: 5 ...con un mensaje de error como:
TASK [shell] ************************************************************************************************************************** fatal: [localhost]: FAILED! => {"changed": false, "msg": "The shell action failed to execute in the expected time frame (5) and was terminated"}No hay una funcionalidad de tiempo de espera para una tarea implementada en Ansible.
Puede intentar una solución utilizando una llamada asíncrona , pero para este caso (claramente una especie de error), confiar en el sistema podría ser más fácil y más apropiado.
Consulte el comando de tiempo de timeout de GNU (si ejecuta Docker, es probable que el comando esté presente en su sistema operativo):
shell: timeout 5m docker ps ...Teniendo en cuenta esto en caso de que alguien lo encuentre, se agregó una opción de tiempo de espera en una versión posterior que le permite especificar las siguientes variables en su archivo de inventario en las instancias de WinRM:
ansible_winrm_operation_timeout_sec: 120 ansible_winrm_read_timeout_sec: 150 Mi caso de uso fue un inicio de docker swarm init que es bastante complicado en Windows pero funciona bien en Linux. No resolvió mi problema, pero puede resolver el tuyo dependiendo de tu transporte.
También noté https://github.com/ansible/ansible/pull/69284/files pero esto no se explica en ninguna parte que pueda encontrar.