ExternalCommandRunner - Exécution de tâches externes

AFFICHER TOUT LE CONTENU

Table des matières

Articles reliés

Introduction

Le programme ExternalCommandRunner (ESI.Octopus.ExternalCommandRunnerApp.exe) permet d'exécuter des tâches de type commande externe dans le cadre de demande de services ou de changement. Le programme doit être automatisé à partir du planificateur de tâche dans Windows pour s'assurer de l'exécution prompte des tâches.

Cet article explique comment utiliser ExternalCommandRunner pour permettre la création de workflow pouvant être entièrement automatisé par des demandes de service publiées sur le portai Web.

Description du fonctionnement

Lorsque le programme ExternalCommandRunner est exécuté, les étapes suivantes sont effectuées :

  1. Connexion au serveur Octopus.
  2. Validation de la présence de tâches de commande externe, prêtes à être exécutées.
  3. Exécution d'une tâche.
  4. Consignation du résultat.
  5. Changement du statut de la tâche.
  6. Retour à l'étape de validation de la présence de tâches de commande externe, prêtes à être exécutées.
  7. Fin de la commande lorsqu'aucune tâche n'est prête.
     

Prérequis

  • Création d'un compte système Octopus pour l'associer à la tâche. Voir l'article sur les Comptes systèmes Octopus.
  • Contexte Windows ayant assez de droits pour accéder aux différents logiciels utilisés par les commandes externes.

Exemples d'usage

Des exemples de workflow entièrement automatisés :

  • L'ajout automatique d'un utilisateur à un groupe AD. L'appartenance à ce groupe pourrait conduire à :
    • L'ajout de paramètres au PC via une GPO préétablie.
    • L'installation d'un logiciel à distance via SCCM ou autre plateforme de déploiement.
  • Le déclenchement d'un workflow technique. Le déclenchement pourrait conduire à :
    • Préparation d'une nouvelle machine virtuelle en vue de tests.
    • Migration automatisée d'une application sur les postes de travail au moment où le client le désire.
  • Le déclenchement de modification au sein d'Octopus. Le déclenchement pourrait conduire à :
    • L'injection de données dans Octopus via un DataImporter pour effectuer des corrections ou des ajouts.


Utilisation du programme ExternalCommandRunner

ExternalCommandRunner est un programme de type ligne de commande (DOS). Il est conçu ainsi pour être facile à automatiser. 

  • Le nom complet du programme ExternalCommandRunner est : ESI.Octopus.ExternalCommandRunnerApp.exe.
  • Il est situé dans le répertoire local d'Octopus (C:\Program Files\Octopus) ou dans (\%LocalAppData\Octopus).
  • Exemple du répertoire où peut se situer Octopus :
    • Pour Windows 7 : C:\Users\SLevesque\AppData\Local\Octopus
    • Pour Windows XP : C:\Documents and Settings\SLevesque\Local Settings\Application Data\Octopus

Exécution des commandes externes à partir d'une ligne de commande

Pour lancer l'exécutable ExternalCommandRunner, vous devez ouvrir une fenêtre d'invite de commandes (DOS) et vous positionner dans le répertoire d'Octopus. Par la suite, vous devez entrer la ligne de commande suivante :

ESI.Octopus.ExternalCommandRunnerApp.exe /login:system /password:octo /team:1
Important : Le répertoire courant doit être le répertoire où est situé le programme ESI.Octopus.ExternalCommandRunnerApp.exe.


Exemple de la ligne de commande dans DOS

 

Avant de lancer la commande, il est recommandé de valider les paramètres voulus.

Ce qu'il faut savoir :

À chaque exécution du programme un fichier .LOG est créé avec le format NomDeL'Outil_AAAAMMJJ_HHMMSS.log,

  • Par exemple ExternalCommandRunner_20190618_105242.log.

Utiliser ce fichier pour voir les résultats d'exécution de la commande et les erreurs s'il y en a. 

Voir aussi l'article Outils Octopus | Entretien des fichiers logs sur l'importance de faire la gestion de ses fichiers. 

 

Paramètres

Il y a 7 paramètres disponibles dont 3 obligatoires pour exécuter ExternalCommandRunner :

Paramètres obligatoires

  • /Login
    • Nom d’utilisateur du compte Octopus.
  • /Password
    • Mot de passe du compte Octopus.
  • /Team

Paramètres facultatifs

  • /Timeout:DuréeEnMinutes
    • Permets de spécifier en minutes la durée maximale pendant laquelle ExternalCommandRunner exécute chaque commande.
    • ​​Par défaut, le système utilise 5 minutes.
    • Si la tâche est terminée avant, l'exécution du programme se poursuit normalement.
    • Si la tâche n'est pas terminée lorsque le délai est écoulé, la tâche est mise à l'état Erreur et l'exécution du programme se poursuit normalement.
  • /LogFilePath:NomFichier.log
    • Remplace l'emplacement du fichier de journalisation.
    • Par défaut, le fichier se nomme ExternalCommandRunnerApp_AAAAMMJJ_HHMMSS.log  et sera situé dans le répertoire où se trouve l'exécutable de ExternalCommandRunner.
    • Si vous déplacez le fichier dans un autre répertoire que celui d'Octopus, assurez-vous que ce répertoire existe (le système ne peut créer le répertoire).
    • Ex. : /LogFilePath:C:\LogFiles\Journal-CommandeExterne.log.
  • /Help

    • Affiche à l'invite de commande la liste des paramètres.

  • /WaitForKeyPress

    • L'application va attendre qu'une touche soit enfoncée avant de terminer l'exécution.

  • /PurgeLogs
    • Permet d'effacer automatiquement les vieux fichiers de logs. 
    • Le paramètre permet de déterminer le nombre de jours de fichiers logs qu'on désire conserver.
    • Pour plus d'information, voir l'article Outils Octopus | Entretien des fichiers logs.

Automatisation de workflow avec Octopus

Bénéfices de l'automatisation

L'automatisation des workflows avec Octopus permet d'obtenir plusieurs gains dans une organisation :

  • Accélérer le délai et la qualité de la livraison des services aux utilisateurs.
  • Réduire la quantité d'interventions manuelle effectuée par les différents intervenants, les libérant pour des tâches à plus grande valeur ajoutée.
  • Contribuer à l'augmentation du niveau de maturité de l'organisation TI.

Mise en place

Pour automatiser un workflow dans Octopus, utiliser la procédure générale suivante :

  1. Créer un script ou une application de la ligne de commande réalisant l'objectif désiré de la commande externe.
    • Le script doit pouvoir recevoir des variables en paramètres (nom d'usager Windows, adresse courriel, nom d'une machine, etc.).
    • Le script doit gérer les niveaux d'erreurs (errorlevel) et s'assurer de retourner la valeur 0 à la fin de la commande si l'exécution est complétée avec succès.
  2. Créer une Commande externe dans les données de références.
    • La commande externe doit s'appliquer aux Incidents/SR.
    • Il faut spécifier les paramètres qui seront transférés de la requête au script. Vous pouvez utiliser la touche F3 pour récupérer les paramètres associés à la requête, ou copier/coller des variables qui proviendraient du formulaire de la requête.
    • Il n'est pas nécessaire que la commande soit visible à partir du menu Outils ou des Actions.
  3. Créer ou modifier une tâche de demande de service pour exécuter la commande externe au moment opportun.
    • Dans la tâche de la demande de service, changer le type de tâche pour Commande externe.
    • Dans le menu Commande, sélectionner la commande externe à utiliser.
    • Compléter la configuration de la tâche, telle que le mode d'activation, conditions, etc.
  4. Utiliser le type de SR configurer au point précédent pour créer une requête. 
  5. Lancer le programme ExternalCommandRunner.
    • Le programme va déterminer le nombre de tâche de commandes externes à exécuter (actives, non débutés).
    • Le programme va exécuter chaque tâche séquentiellement.
    • Durant l'exécution de la commande externe, l'état de la tâche de la SR sera En traitement.

    • Lorsque la commande externe est complétée avec succès, ExternalCommandRunner va compléter la tâche et inscrire le résultat de la commande externe dans l'activité de complétion. 
    • Si la tâche est en erreur ou que son temps d'exécution est dépassé, ExternalCommandRunner va créer un événement avec le détail de l'échec. Il va aussi ajouter le détail de l'échec directement dans une activité de la tâche et mettre l'état de la tâche à Erreur.
    • Le système va poursuivre l'exécution de toutes les tâches candidates, incluant celles nouvellement activées.
  6. Réviser le résultat des tâches à l'état Erreur.
    • Consulter la section dépannage du présent guide pour vous aider à dépanner vos tâches de commande externe en erreur.
    • Une fois le script corrigé, vous pouvez utiliser le bouton Relancer dans la tâche pour la soumettre à nouveau.
  7. Une fois que les divers éléments fonctionnent correctement, ajouter à une tâche planifiée Windows pour qu'ExternalCommandRunner démarre de manière automatique.

Dépannage

Pour assurer un dépannage simplifié, nous vous suggérons les pratiques suivantes :

  • Utiliser un niveau de verbosité assez élevé dans vos commandes externes.
  • Débuter vos commandes externes par l'écriture de l'ensemble des paramètres reçus par Octopus.
  • Ajuster l'exécution de la tâche planifiée dans Windows pour être légèrement plus longue que le délai d'attente configuré (5 minutes par défaut).
  • Empêcher l'exécution de la tâche planifiée Windows si une instance est déjà en cours pour empêcher d'avoir deux exécutions en concurrence.
  • Configurer une liste de vérification pour réviser les tâches en erreur et utiliser une notification personnalisée pour acheminer une notification au centre de services lors d'erreur.
  • Configurer une liste de vérification des tâches en attente d'exécution plus vieille qu'un certain délai pour trouver rapidement un problème avec l'exécution des tâches.
  • Surveiller le module Gestion des événements pour permettre de trouver les problèmes d'exécution.

 

Exécution de script interprété PowerShell / VisualBasic

  • Si vous utilisez des scripts ayant recours à un interpréteur, il est préférable de spécifier l'interpréteur (cscript.exe, powershell.exe) comme programme à invoquer, et de spécifier le nom du script dans les paramètres à utiliser.
  • Si vous utilisez PowerShell, vous aurez probablement à ajuster les politiques d'exécutions sur le serveur exécutant ExternalCommandRunner

 

 

 

X
Aidez-nous à améliorer l’article








Aidez-nous à améliorer l’article