• [^] # Re: Idempotence

    Posté par (site web personnel) . En réponse au lien Automatisation méthode KISS et sans YAML. Évalué à 8.

    Le module "shell" de Ansible n'est pas idempotent non plus.
    En fait, beaucoup de modules de Ansible ne sont pas idempotent.

    Ce qui permet d'implémenter l'idempotence dans Ansible c'est la possibilité d'interoger le remote sur son état et d'exécuter conditionnellement la tâche.

    Par exemple, avec tricorder ça donnerait quelque chose comme :

    # idempotent car si le service est déjà démarré, ça ne fait rien
    tricorder -i inventory -- systemctl start nginx.service
    res=$(tricorder -i inventory -- test -f $FILE)
    host_ids=$(echo $res | jq "some request to get all hosts with non zero exit code")
    for host_id in $host_ids
    do
     tricorder -i inventory -H $host_id -- sh -c "echo $host_id > $FILE"
    done

    Alors oui, c'est verbeux pour le moment, parce qu'il faut le faire à la main, mais on pourrait très bien imaginer un plugin dans le futur qui fait ce genre de choses.

    Donc pour te répondre, non pas d'idempotence dans cette brique élémentaire.

    https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg