Forum général.cherche-logiciel Exécution infaillible

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
30
mai
2019

Bonjour,

j'utilise depuis longtemps des scripts que j'ai fait pour répondre à mon besoin, mais je voulais savoir si quelque chose existe déjà et donc peut-être plus standard ou fiable ou autre.

Ce dont j'ai besoin : sur tout un tas d'ordinateurs Linux et Windows j'ai des événements qui engendrent des actions. Ces actions doivent être exécutées tout de suite ou plus tard, mais il est impératif qu'elles soient exécutées. Ca veut dire que si l'ordi tombe en panne avant d'avoir exécuté l'action, lorsqu'il sera redémarré il fera cette action.

Si l'action est d'envoyer un email alors c'est facile car il suffit d'installer un MTA en local. Même si la connexion internet est HS ou que l'ordinateur plante l'email partira plus tard mais il partira quoi qu'il arrive.
Ce que je veux c'est la même chose, mais pour d'autres types d'actions.

Si l'action est de lancer un script et d'attendre qu'il se termine, pour le moment j'ai une petite tuyauterie qui s'en occupe. Ca gère les cas où le script met trop de temps, les cas où n'importe quoi est HS. Ca relance l'opération s'il le faut.

Voilà, je cherche si ça existe déjà mais je ne trouve que des trucs super compliqués, peut-être que je n'utilise pas les bonnes recherches.

J'ai tout un tas de cas différents, généralement couvert par des scripts Bash.
Dans beaucoup de cas j'ai juste besoin de lancer un wget. Certains peuvent être relancés autant qu'on veut (par exemple la mise à jour d'un DNS dynamique) donc pas besoin d'atomicité. D'autres ne peuvent être lancés qu'une fois donc j'ai un système qui écrit dans un fichier à quelle étape on se trouve.
Dans d'autres cas c'est un email donc c'est réglé avec un MTA en local (facile avec Linux et Windows).

  • # anacron

    Posté par  . Évalué à 3.

    Pour les cas de machine en panne ou éteinte, anacron fait le job.

    • [^] # Re: anacron

      Posté par  . Évalué à 2.

      anacron ne vas pas :
      1. lancer l'action
      2. vérifier la bonne exécution de l'action
      3. effacer la ligne pour ne plus relancer l'action

      • [^] # Re: anacron

        Posté par  . Évalué à 0.

        et l'options @reboot ? c'est fait pour les canard ? ca fait correctement le 1 et 3, pour le 2 cela doit etre pris en charge par ton logiciel

        mais je suis sur avec systemd ya moyen d'avoir une usine a gaz

  • # Ansible

    Posté par  . Évalué à 1.

    Je crois qu'Ansible propose une notion d'administration avec des états, de façon assez légère.

  • # Moteur local

    Posté par  . Évalué à 2.

    De ce que je comprends, je partirais sur un simple cron chaque minute qui lance un script (toujours le même).

    Ce script analyse "qu'est-ce que j'ai à faire ?", basé sur les différents événements reçus, sur la bonne marche des actions précédentes etc.

    En gros on peut imaginer que :

    • un événement pose un tag "à faire" (par exemple un fichier à un endroit précis, peut-être dans /var)
    • le script va lire les tags "à faire" et au lancement de l'action, il taggue "en cours"
    • le script monitore les actions "en cours" (est-ce que le job a été tué ? faut-il le relancer ? y a-t-il un timeout ?)
    • le script résout les actions correctes (effacement des tags "à faire" et "en cours")

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Moteur local

      Posté par  . Évalué à 2.

      De ce que je comprends, je partirais sur un simple cron chaque minute qui lance un script (toujours le même).

      C'est ce que je fais déjà. Je pose la question pour savoir si quelque chose existe déjà.

  • # Une queue

    Posté par  . Évalué à 4. Dernière modification le 01/06/19 à 21:54.

    Si je devais programmer un truc fiable, j'utiliserai une queue, genre rabbitmq.

    Une action envoie un message sur la queue, attend confirmation que le message est reçu, puis la queue, elle, n'effacera le message seulement après qu'il aie été lu et qu'elle aie reçu une confirmation du bon traitement.

    C'est peu être un peu usine à gaz pour ce que tu demandes mais je crois que c'est la fonction que tu cherches.

    J'ai vu qu'il y a 'task spooler' qui gère une queue en utilitaire en ligne de commande. Ça doit être plus simple et c'est peut-être suffisant?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.