System Center Orchestrator(SCO)のSDKを使ってIntegration Pack(IPとか統合パックとも呼ばれます)を自作する方法について書きたいと思います。
自分の好きなRunbookを作ることができるようになると、SCOで作成される自動化プロセスに自分の好きな処理を組み込むことができるようになります。
例えばSCOMで検知したアラートに対して自作のRunbookを起動して自動対応したり、自作のRunbookで前処理してからSCDPMでバックアップを取得したり、System Center製品の他にもSystem Center Orchestratorで定義されている数多くのプロセスとの連携ができるようになります。
では、開発手順を書いていきます。
前提となるシステム条件
OS
- Windows Server 2012 (64-bit)
- Windows Server 2008 R2 (64-bit)
- Windows 8 (32-bit or 64-bit)
- Windows 7 (32-bit or 64-bit)
開発環境
- Visual Studio 2008
- Visual Studio 2010
- Visual Studio 2012
その他のソフトウェア
- Windows Installer version 3.1
- Microsoft .NET Framework 3.5, Service Pack 1
- Windows Installer XML Toolset (WiX) version 3.5. For System Center 2012 SP1, OIT supports only version 3.5
Windows Installer XML Toolset のインストール
前提となるソフトウェアのうちWindows Installer XML Toolset は通常インストールされてないと思うので、ここで簡単にポイントを纏めておきます。
まずはこちらから「Wix35.msi」というインストーラーをダウンロードします。
記事を書いている時点の最新バージョンは「3.7」ですが、必要なのは「3.5」なので注意して下さい。
Visual Studio 2012を使用する場合はインストーラーを起動した際に以下のポップアップが出ますが、無視してOKをクリックして下さい。
後は特に注意点は無いので、MSIを実行したらそのままインストールを進めてください。インストーラーは以下のような画面です。バージョン3.7の場合はインストーラーの画面も全く異なるので、この画面とインストーラーの画面が違うようならばバージョンを確認してみてください。
System Center 2012 Orchestrator Integration Toolkitのインストール
次はIPの開発に必要なToolkitをインストールしていきます。
Toolkitのダウンロードはこちらから以下のURLから行なって下さい。
※System Center 2012 Service Pack 1 になり.Net4.0にも対応しました
「System_Center_2012_Orchestrator_Integration_ToolKit.exe」というファイルがダウンロードされるのでEXEを解凍して、「OrchestratorToolkitSetup.msi」というファイルを取り出し、実行します。
インストールが完了すると以下の画面が表示されます。
通常はToolkitが以下のパスにインストールされます。
C:\Program Files\Microsoft System Center 2012\Orchestrator\Integration Toolkit
これでIP開発の事前準備は完了です。
IP用のC#クラスの開発
では遂にIPの開発に入っていきます。
今回はVisual Studio 2012を利用しますが、2010などのバージョンを利用していてもほとんど画面も一緒です。
新しいプロジェクトでC#でのクラスライブラリを作成します。この際に「.NET Framework 3.5」を選択するようにしてください。
次に先ほどインストールしたToolkitをプロジェクトに取り込みます。
参照設定から参照の追加を選択してください。
参照マネージャーが開くので、参照ボタンをクリックします。
C:\Program Files\Microsoft System Center 2012\Orchestrator\Integration Toolkit\Libにある、Microsoft.SystemCenter.Orchestrator.Integration.dllを選択します。
以下の画面のようにToolkitのDLLファイルがプロジェクトに取り込まれます。
ソリューションエクスプローラーからも確認できます。
後はコーディングです。簡単なRunbookを書いてみました。
書けたらビルドしてDLLを作成してください。
処理の流れ
簡単な処理の流れはこのようになります。
- ActivityInputでRunbookの入力値を受け取り入力用の変数に設定
- ActivityMethod設定された変数などを利用して処理を実行、結果等を出力用の変数に設定
- ActivityOutputで出力用の変数をRunbookの返り値として出力
属性
今回は属性を利用したコーディングをしてます。
それぞれの属性の説明は以下の通りです。
[Activity]
Runbookの名前と説明になります。一つのRunbookに対して一つのActivityを作成します。
[ActivityInput]
Runbookの入力項目、出力項目を設定します。
デフォルト値、パスワード用のマスキング設定、任意設定などの細かい設定も可能です。
ActivityOutput
Runbookの出力項目を設定します。
[ActivityMethod]
実際のRunbookでの処理を書きます。SCOのRunbookの画面には出て来ませんが、コーディングではメインとなる部分です。
インテリセンスが効くので、実際にコーディングすると色々説明見れますので是非一度書いてみて下さい。なお、今回は属性を利用した開発方法にしていますが、他にもIActivity Interfaceを使って開発する方法もあります。
OIPファイルの生成
最後にSCOにインポート可能なOIPファイルを生成します。
C:\Program Files\Microsoft System Center 2012\Orchestrator\Integration Toolkit\Bin
にある「IPWizard.exe」を実行してください。そのまま「Next」を選択します。
次にIPのパラメータを設定します。
特に Category NameとCategory IconはそのままRunbookの画面でも利用される項目となります。
次に先ほどC#で作成したDLLをIPに取り込みます。
Libraryで先ほど開発したDLLを取り込むとClassを選択できるようになります。
Display NameとDescriptionは先程のコードの中のActivity属性で設定したものとなります。
これで先ほど開発したDLLが取り込まれましたので、「Next」を選択します。
別のDLLなどをIPに一緒に取り込んでパッケージ化することができます。
OIPファイルの出力先を選択します。
これでOIPファイルが出力されるので、SCOに取り込めば使うことができます。
SCOへのOIPファイルの取り込み方法はこちらの記事に書いてあります。
【System Center】Azure Integration Pack for Orchestrator -Integratoin Pack導入-