Automatisation

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