task ansible ansible-playbook idempotent

task - ansible ignora la configuración run_once en la tarea



ansible-playbook idempotent (1)

Estoy usando Ansible y quiero ejecutar una tarea solo una vez. Sigo la documentación sobre cómo configurar y ejecutar una tarea solo una vez

- name: apt update shell: apt-get update run_once: true

Pero cuando ejecuto Ansible, siempre ejecuta esta tarea. ¿Cómo puedo ejecutar mi tarea una sola vez?


La opción run_once se ejecutará cada vez que se ejecute su Playbook / tareas, pero solo se ejecutará una vez durante la ejecución específica. Por lo tanto, cada vez que ejecute el juego, se ejecutará, pero solo en el primer host de la lista. Si está buscando una manera de ejecutar ese comando solo una vez, punto, deberá usar el argumento de creación. Usando su ejemplo, esto se puede lograr usando lo siguiente:

- name: apt update shell: apt-get update && touch /root/.aptupdated args: creates: /root/.aptupdated

En este caso se crea el archivo /root/.aptupdated. La tarea ahora verificará si existe, y si lo hace, no se ejecutará.

En una nota relacionada, si la tarea que está intentando ejecutar es la actualización apt-get, es posible que desee utilizar el módulo apt nativo. Entonces puedes hacer algo como esto ...

- name: apt update apt: update_cache=yes cache_valid_time=86400

Ahora esto solo se ejecutará si el caché es más antiguo que un día.