PI Services

Le blog des collaborateurs de PI Services

Orchestrator : créer son propre Integration Pack (partie 1 : créer l’assembly)

 

Orchestrator est livré d’origine avec un bon nombre d’activités pré-installées, qui permettent de mettre en place nativement un large panel de scénarios. Il est également possible d’étendre ces capacités à l’aide d’Integration Packs (appelés OIP), qui peuvent être disponibles au téléchargement auprès de Microsoft ou d’éditeurs tiers ou bien développés directement par les administrateurs en fonction de leurs besoin spécifiques.
Nous allons nous intéresser ici à ce dernier cas.

Dans un premier temps, il est nécessaire de télécharger et d’installer Orchestrator Integration Toolkit, le package qui contient les outils nécessaires à la création de ces OIP. Il est disponible ici : http://www.microsoft.com/en-us/download/details.aspx?id=28725 (System_Center_2012_Orchestrator_Integration_ToolKit.exe)

L’installer et importer l’OIP « integration toolkit » fourni avec dans votre infrastructure Orchestrator (management server et runbook designer, se référer à la fin de la partie 2 pour de l’aide à ce sujet).

Une fois ces pré-requis complétés, nous pouvons démarrer la création de l’Integration Pack à proprement parler. La première étape consiste à créer une « Assembly », qui est un fichier dll contenant le « moteur» de l’OIP. La seconde étape consistera à packager cette dll pour en faire un fichier OIP à proprement parler.

Nous étudierons ici l’exemple d’un OIP contenant une unique activité permettant d’ajouter des évènements au journal d’évènements (Event Viewer). Cette activité existe déjà d’origine via l’activité « Send Event Log Message », mais elle est très limité : elle ne permet pas de sélectionner le journal d’évènement cible, ni l’ID de l’évènement, ni sa source, ni sa criticité. L’OIP que nous allons développer ici offrira toutes ces possibilités.

Lancer l’outil Orchestrator Command-Line Activity Wizard.

clip_image002

Cliquer sur Next à l’écran d’accueil (ou sur Load existing assembly  pour reprendre un projet en cours).

clip_image004

Nommer le projet et indiquer le chemin où enregistrer l’assembly (le fichier dll source) puis cliquer sur Next

clip_image006

Il est également possible d’ajouter des détails sur le projet (description, nom de la compagnie, version… ) en cliquant sur Assembly Information

clip_image008

Cliquer sur Add

clip_image010

Dans l’onglet General, nommer l’activité et indiquer son mode de fonctionnement (Run Command, Run Windows PowerShell, Run Program ou Run SSH Command).
Dans notre cas, la création d’événement dans le journal d’événements se reposera sur une commande PowerShell ; nous choisissons donc Run Windows Powershell.
Cliquer sur l’onglet Arguments.

clip_image012

L’onglet Arguments est celui dans lequel nous déterminons les paramètres d’entrée de l’activité ainsi que le code PowerShell qui la fera fonctionner.

clip_image014

Dans Parameters, cliquer sur Add. Indiquer le nom du paramètre d’entrée, son mode de fonctionnement (dans notre cas Command Argument), son type (champs texte, champs mot de passe, liste déroulante, browse button…) et éventuellement une valeur par défaut. Ci-dessous deux exemples , un en type Text et l’autre en type Text with Selection (liste déroulante).

clip_image016

clip_image018

Pour réaliser notre exemple d’ajout d’événement dans le journal d’événements, les paramètres suivants sont nécessaires :

Name

Usage mode

Display Style

Options

Log Name

Command Argument

Text

-

Source

Command Argument

Text

-

Content

Command Argument

Text

-

Event ID

Command Argument

Text

-

Event Severity

Command Argument

Text with Selection

Verbose|Information|Warning|Error|Critical

Computer Name

Command Argument

Text

-

Une fois tous les paramètres ajoutés, cliquer sur Insert afin d’entrer le code PowerShell qui sera le « moteur » de notre activité :
Write-eventlog -logname "$(Log Name)" -ComputerName "$(Computer Name)" -Source "$(Source)" -Message "$(Content)" -id "$(Event ID)" -EntryType "$(Event Severity)"

L’onglet Published Data permet d’indiquer quelles informations seront republiées dans le Bus Orchestrator, afin d’être ensuite réutilisées par d’autres activités. Nous n’en rajouterons pas dans cet exemple, mais il est tout à fait possible d’imaginer publier l’ID et le contenu de l’évenement, par exemple.

Cliquer sur OK.

clip_image020

Cliquer sur Next

clip_image022

L’assembly compile…

clip_image024

Voilà, c’est compilé. L’assistant propose de passer directement au packaging de l’Integration Pack, mais il est préférable de commencer par tester notre assembly afin de s’assurer qu’elle fonctionne comme souhaité.

Cliquer sur Finish.

clip_image026

Lancer le Runbook Designer, créer un nouveau runbook et y ajouter les activités Initialize Data et Invoke .NET. Cette dernière est disponible grâce à l’Integration Toolkit importé en début d’article et permet d’exécuter une assembly au format dll comme s’il s’agissait d’un OIP finalisé et packagé, ce qui permet donc de la tester rapidement.

clip_image028

Ouvrir les propriétés de l’activité Invoke .NET. Dans le champ Assembly, sélectionner la dll de l’assembly préalablement crée. Dans Class, sélectionner la class correspondante (dans notre exemple il n’y en a qu’une). Laisser Setup vide (ce champ ne sert que pour les classes développées à l’aide du SDK).

clip_image030

Dans l’onglet Properties, remplir les paramètres de l’activité puis cliquer sur Finish.

clip_image032

Attention ! Il est nécessaire que le journal d’événement ainsi que la source indiqués soient déjà enregistrés sur l’ordinateur cible ! Au besoin, il est possible de les créer à l’aide du PowerShell suivant :
New-EventLog -logname $JournalDevenement -Source $Source -ComputerName $ComputerName -ErrorVariable Err

Dans l’exemple ci-dessus, le journal utilisé est Application (présent par défaut) et la source est TestOIP (n’existe pas d’origine). Nous la créons donc ainsi :
New-EventLog -LogName "Application" -ComputerName "localhost" -source "TestOIP" -ErrorVariable Err

clip_image034

 

Lancer le Runbook Tester et cliquer sur Run.

clip_image036

Si tout s’est bien passé, voilà ce qui doit apparaitre dans l’Event Viewer :

clip_image038

Voilà, le « moteur » de notre Integration Pack fonctionne. Il ne reste plus qu’à le packager pour pouvoir le déployer sous forme d’OIP à notre infrastructure Orchestrator, ce que nous aborderons dans la seconde partie.

Ajouter un commentaire

Loading