Quelle est l'importance d'une tâche Ansible signalant que quelque chose a changé?

20

J'ai une tâche qui vérifie si mon processus écoute sur le port 8080 et uniquement lorsque le code de sortie n'est pas nul, dois-je exécuter failavec un message.

Lorsque le service est en cours d'exécution, il signale que l'état a changé. Je veux que ça dise ok. Que changedsignifie réellement un statut dans Ansible?

pirate de socgen
la source

Réponses:

11

Tout ce qui dépend de quelque chose sur la cible obtiendra le statut "modifié" lors de son exécution, même s'il ne s'agit que d'une commande shell pour faire écho à quelque chose.

Pour supprimer le statut "modifié", vous pouvez ajouter la ligne suivante à la tâche:

changed_when: false

Ceci et d'autres choses pertinentes sont répertoriées sur cette page doc ansible .

gémir
la source
27

Les tâches possibles doivent être idempotentes . Par exemple. si la tâche ne modifie rien, elle doit retourner à la okplace de changed. La plupart des modules et tâches intégrés le sont déjà, mais pour des tâches telles que commandet shellvous devez aider un peu ansible.

Pour une tâche qui ne fait que vérifier et ne modifie rien, vous devez ajouter:

changed_when: False
always_run: yes

Ce dernier permet à la tâche de s'exécuter même en mode vérification .

Dans un souci d'exhaustivité, ces tâches sont généralement combinées avec une autre qui effectue la modification proprement dite, par exemple:

- 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
user1338062
la source
2
cette réponse devrait être vérifiée
mastier