¿Cuál es el significado de una tarea Ansible que informa que algo ha cambiado?

20

Tengo una tarea que comprueba si mi proceso está escuchando en el puerto 8080 y solo cuando el código de salida no es cero, ejecutaría failun mensaje.

Cuando el servicio se está ejecutando, informa que el estado ha cambiado. Lo quiero decir ok. ¿Qué significa changedrealmente un estado en Ansible?

hacker de socgen
fuente

Respuestas:

11

Cualquier cosa que dependa de algo en el objetivo obtendrá el estado "cambiado" cuando se ejecute, incluso si es solo un comando de shell para hacer eco de algo.

Para suprimir el estado "modificado", puede agregar la siguiente línea a la tarea:

changed_when: false

Esta y otras cosas relevantes se enumeran en esta página de documentos ansible .

wurtel
fuente
27

Las tareas que responden deben ser idempotentes . P.ej. Si la tarea no modifica nada, debería volver en oklugar de changed. La mayoría de los módulos y tareas integradas ya están disponibles, pero para tareas como commandy shellnecesita ayudar un poco.

Para una tarea que simplemente verifica y no modifica nada, debe agregar:

changed_when: False
always_run: yes

Este último permite que la tarea se ejecute incluso en modo de verificación .

En aras de la exhaustividad, tales tareas generalmente se combinan con otra que realiza la modificación real, por ejemplo:

- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0
usuario1338062
fuente
2
esto debería verificar la respuesta
mastier