Scripts d'automatisation : les règles qui tiennent en production
Mis à jour le
Un script d'automatisation fiable se reconnaît à quatre propriétés : on peut le relancer sans dégât, il signale son échec par son code de sortie, il journalise ce qu'il fait et il ne contient aucun secret. Tout le reste — langage, planificateur, hébergement — est secondaire.
Idempotence : pouvoir relancer sans réfléchir
Un traitement planifié finit toujours par être relancé : après une coupure réseau, un délai dépassé ou une intervention manuelle. S'il crée un doublon ou applique deux fois la même modification à chaque relance, personne n'osera plus y toucher.
Un script idempotent vérifie l'état avant d'agir : il crée la ressource si elle n'existe pas, il la met à jour sinon, et il ne fait rien quand l'état voulu est déjà atteint. La deuxième exécution doit laisser le système exactement dans l'état où la première l'a mis.
Échouer clairement : code de sortie et journal
Planificateurs et pipelines ne lisent pas les messages, ils lisent le code de sortie : 0 pour un succès, toute autre valeur pour un échec. Un script qui affiche une erreur puis se termine en 0 est considéré comme réussi, et la panne passe inaperçue.
Faites échouer le script à la première erreur — set -euo pipefail en Bash, $ErrorActionPreference = 'Stop' en PowerShell — et écrivez un journal horodaté : ce qui a été lu, ce qui a été modifié, ce qui a été ignoré. Une option de simulation, qui affiche les actions sans les exécuter, rend chaque évolution vérifiable avant de toucher à la production.
Secrets et données : rien en dur
Jetons d'API, mots de passe et clés n'ont pas leur place dans le code, même dans un dépôt privé : ils se lisent depuis des variables d'environnement ou le coffre de secrets de la plateforme d'exécution. Un secret committé doit être considéré comme compromis et révoqué, pas seulement effacé de l'historique.
Côté données, la plupart des scripts dialoguent avec des API en JSON. Valider la structure reçue avant de s'en servir, et traiter explicitement les codes de réponse HTTP — une limitation de débit ne se gère pas comme une erreur d'authentification — évite les échecs silencieux.
En bref
Qu'est-ce qu'un script idempotent ?
C'est un script que l'on peut exécuter plusieurs fois de suite sans changer le résultat : la deuxième exécution constate que l'état voulu est déjà atteint et ne fait rien. C'est la propriété qui rend une relance sans risque.
Quel code de sortie un script doit-il renvoyer ?
0 en cas de succès, une valeur non nulle en cas d'échec. Planificateurs et pipelines CI/CD se fondent uniquement sur ce code pour décider si l'étape a réussi.
Où stocker les secrets d'un script ?
Dans des variables d'environnement ou le coffre de secrets de la plateforme d'exécution, jamais dans le code ni dans le dépôt. Un secret committé par erreur doit être révoqué.
Poursuivre dans le Lab
Automatisation — les autres notes
Outils associés
- Formateur et Validateur JSON en ligneIndentez, validez et minifiez votre JSON instantanément dans le navigateur. Détection des erreurs de syntaxe, aucune donnée envoyée.
- Codes de Réponse HTTP expliquésRecherchez n'importe quel code de statut HTTP (200, 301, 404, 410, 500, 503…) : signification, impact SEO et solution recommandée.