[SCCM/DPM] SCCM 2012 のアプリケーション管理を使って、DPM 2012 エージェントを展開する

こんにちは、System Center サポート部の石井です。

今回は、SCCM 2012 のアプリケーション管理の機能を使って、DPM 2012 SP1 のエージェントを展開する方法をご紹介します。

本ポストでは、以下のようなポイントをゴールとします。

- アプリケーション管理の概念の理解をする
- アプリケーション管理にて、MSI インストーラー以外のファイルの展開方法のサンプルを提案する

作り込み次第で、もっと厳密かつスマートな方法であったり、様々なサードパーティ製ソフトウェアの展開をしたりといった事にも応用が可能です。
アプリケーション配布を使ったことが無い方や、DPM エージェントの配布について検討中の方には、全体的なプロセスをお試しいただくことで概要が掴めるのではないでしょうか。
アプリケーション配布の概念について

SCCM 2012 で新しく、アプリケーション配布という機能が追加されました。
SCCM 2007 時代からも存在するような、既存の、パッケージをつくってソフトウェアを配布するという方法との差異としては、アプリケーションごとのインストール条件を定義出来る点があります。

例えば、

- 特定のファイル・レジストリがあればインストール済みと見なし、インストールさせない。
- クライアントに既に存在する XXX.exe のファイル バージョンが古い場合、インストールが必要と見なす。
- スクリプトにて判定をし、判定結果に依存してインストールすべきかどうかを判断する。

といった形で、様々な条件に基づいて、アプリケーションを配布・展開出来ます。

もちろん、ほかにも、Windows ストア アプリを配布するといった事も目玉です。詳しい手順・情報については、以下についても目を通していただくことをお奨めします。

System Center 2012 Configuration Manager 評価ガイド-アプリケーション管理編
https://www.microsoft.com/ja-jp/download/details.aspx?id=36444
DPM 2012 エージェントの展開について

アプリケーション管理機能を使って DPM 2012 エージェントをインストールする場合には、以下のような課題をクリアする必要があります。

- 様々な条件が事前定義されている MSI 形式のインストーラーをアプリケーション管理で展開するのは容易です。しかしながら、DPM 2012 エージェントのインストーラーは DPMAgentInstaller.exe という EXE ファイルです。これをどのように展開するのかが課題です。
- DPM 2012 エージェントのインストーラーは、最初の DPMAgentInstaller.exe から、さらに異なる MSI を呼び、プロセスが分岐していきます。SCCM では、直接呼び出したインストール プロセスの完了と、戻り値だけをインストール結果として信じるため、一件すると早期にインストールが終わったように見えますが、実際は裏で DPM エージェントのインストーラーの MSI 版が走っており、その後インストールが成功したのか、この時点では全く分かりません。
このような点について、アプリケーション管理の機能を使った解決策は 1 つではありませんが、今回は、サンプルとなるアプローチとして、以下のような方法をとります。

DPM 2012 エージェントのインストーラーを呼び、ある程度の期間、DPMRA (DPM エージェント サービス) の登録の有無をループ処理でチェックするバッチを作成する。
このバッチをアプリケーション配布で登録し、配布する。

事前準備

1. DPM サーバーにて、以下のフォルダーを共有しておきます。

<DPM インストール パス>\DPM\ProtectionAgents\RA\4.1.3313.0\amd64\

上記は、DPM 2012 SP1 リリース初期バージョンのエージェント インストーラーです。
(※ Everyone に読み取り権限を与えます。)

2. SCCM サーバーにて、DPM エージェント展開用のファイル共有を作成します。
ファイル共有の中には、以下のバッチをテキスト エディターにコピーし、.bat 形式で保存します。
赤字部分は、任意のフォルダー名、DPM の FQDN に変更が必要です。

DPM 2012 エージェントのインストール・インストール監視のバッチ ファイル:
-------------------------
@ECHO OFF

ECHO "DPM エージェントのインストールを実行します。" >> C:\installdpm.log
"\\<事前準備 1 で作成したファイル共有>\DPMAgentInstaller_x64.exe" /q <DPMサーバー FQDN> /IAcceptEula
ECHO "DPM エージェント インストーラーが実行中です。しばらく DPMRA サービスの登録を確認します。" >> C:\installdpm.log

set a=0

:LOOP
   sc query dpmra
   IF not %errorlevel%==0 GOTO RETRY
   GOTO FINISH

:RETRY

   ECHO "DPMRA サービスがまだ存在しません。しばらく待機し、再チェックします。" >> C:\installdpm.log
   ECHO %%i >> C:\installdpm.log
   ECHO "retry" >> C:\installdpm.log
   ping /n 20 127.0.0.1
   set /A a+=1
   IF %a%==20 GOTO FAIL
   GOTO LOOP

:FAIL

   ECHO "DPM Agent は、期間内にインストールできませんでした。インストールを再度実行し、改善しない場合には、DPM エージェントのインストール ログをご参考ください。 C:\Windows\Temp\MSDPMAgentInstall.log" >> C:\installdpm.log
   exit /b 1

:FINISH

   ECHO "DPMRA サービスの登録が完了しています。DPM エージェントのインストールは完了しました。" >> C:\installdpm.log
   exit /b 0
-------------------------

※ 補足 1 <スクリプトの簡単な動作説明>
本スクリプトでは、DPMAgentInstaller を DPM サーバーを指定して起動後、ループ処理にて一定期間、DPMRA サービスが登録されるか "sc query dpmra" でチェックしています。登録されていれば、%errorlevel% が 0 になり、失敗すればそれ以外 (1060) が返ります。
VB スクリプトではなく、バッチ処理ですので、Sleep コマンドが呼べないため、自身への Ping を繰り返すことで擬似的に Sleep を行っています。
Ping の繰り返し回数や、サービス登録チェックのループ回数については、適宜調整して下さい。(調整箇所は緑にハイライトしました。)
また、C:\installdpm.log に、バッチのどこまでが実行されたのか後から確認出来るよう、簡単なログ出力も行っています。ログが不要な場合、ECHO の行は全て削除して下さい。
DPM エージェントに限らず、インストーラーがほかの前提条件プログラムのインストーラーをコールするような作りとなっているサードパーティ製アプリケーション等にも応用が可能です。
※ 補足 2 <DPM エージェントのインストーラー ファイルの配布の有無について>
本手順では、DPM エージェントの手動導入の公式手順となる、DPM サーバーのエージェント インストーラーのファイル共有にアクセスをさせる方法をとっています。
事前準備 1 のファイルを全て、事前準備 2 のファイルにコピーすることで、SCCM から DPM エージェント インストーラーのファイルを含めて展開することも可能です。
その場合には、バッチの以下の行を、ファイル共有指定ではなく、DPMAgentInstaller_x64.exe というファイル名のみで記載します。

変更前
"\\<手順 1 で作成したファイル共有>\DPMAgentInstaller_x64.exe" /q <DPMサーバー FQDN> /IAcceptEula

変更後
DPMAgentInstaller_x64.exe /q <DPMサーバー FQDN> /IAcceptEula

ご参考: Installing Protection Agents Manually
https://technet.microsoft.com/en-us/library/hh757789.aspx

展開の設定

事前準備が整いましたら、SCCM 2012 管理コンソール上より、アプリケーション登録作業を行います。

1. [ソフトウェア ライブラリ] ワークスペースを開き、"アプリケーション管理 - アプリケーション" を開きます。

2. リボンより [アプリケーションの作成] をクリックし、[アプリケーションの作成ウィザード] を開始します。

[アプリケーションの作成ウィザード] - [全般] ページ
"アプリケーションの情報を手動で指定する" にチェックします。

[アプリケーションの作成ウィザード] - [一般情報] ページ
アプリケーションの名前など、メタ情報を登録します。

[アプリケーションの作成ウィザード] - [アプリケーション カタログ] ページ
アプリケーション カタログ Web サイトからの表示名・説明などを記載します。

[アプリケーションの作成ウィザード] - [展開の種類] ページ
"追加" ボタンを押し、後続の [展開の種類の作成ウィザード] を完了します。

[展開の種類の作成ウィザード] - [全般] ページ
"種類" に "スクリプト インストーラーを選択"します。

[展開の種類の作成ウィザード] - [一般情報] ページ
展開の名前を設定します。

[展開の種類の作成ウィザード] - [コンテンツ] ページ
"コンテンツの場所" には、事前準備 2 で準備したバッチを含むファイル共有を設定します。
"インストール プログラム" には、バッチファイル名を登録します。(例: "installdpm.bat")
"アンインストール プログラム" は、今回は使用しませんが、もしアンインストールを行いたい場合、アンインストール用のコマンドを記載したバッチ ファイル等を指定します。
"64 ビット クライアント上で 32 ビット プロセスとしてインストールおよびアンインストール プログラムを実行する" チェックは外しておきます。今回の DPM のエージェント インストーラーは 64 ビット ネイティブ アプリケーションであるためです。

[展開の種類の作成ウィザード] - [検出方法] ページ
このアプリケーションが存在するかどうかを判定するために使うファイル バージョン等の条件を定義する箇所です。
"句の追加" ボタンを押して、[検出規則] ウィザードを表示します。

[検出規則] ウィザード
今回は、単純に DPMRA.exe ファイルの有無を条件として追加します。
"設定の種類" = "ファイル システム"
"種類" = "ファイル"
"パス" = "%ProgramFiles%\Microsoft Data Protection Manager\DPM\bin\DPMRA.exe"
"ファイル名またはフォルダー名" = "DPMRA.exe"
"このファイル/フォルダーは 64 ビット システムの 32 ビット アプリケーションに関連している" のチェックをはずします。
"このアプリケーションのプレゼンスを示すには、ターゲット システムにファイル システム設定が存在する必要がある" にチェックします。
※ ほかにも、ファイル バージョンなどの属性を元に、条件を明確に指定することも出来ます。
今回のサンプルでは、DPM エージェントが存在しない対象を前提とするため、ファイルの有無のみをチェックします。

[展開の種類の作成ウィザード] - [ユーザー側の表示と操作] ページ
"インストールの動作" = "システム用にインストールする"
"必要なログオン状態" = "ユーザーがログオンしているときのみ"
"インストール プログラムの表示" = "非表示"
"プログラムのインストールの表示および対話をユーザーに許可する" チェックはオフ。
"許容最長実行時間" は 60 分、"インストールの推定時間" は "10 分" に設定。(任意)

[展開の種類の作成ウィザード] - [要件] ページ
こちらは任意です。ハードウェアなど、要件を設定することが可能です。

[展開の種類の作成ウィザード] - [依存関係] ページ
今回は設定不要です。そのままウィザードを完了します。

[アプリケーションの作成ウィザード] - [展開の種類] ページ
展開がひとつ作成されたことを確認し、次へ進みます。ウィザードも、そのまま次へ進んでいき、完了します。

3. 作成されたアプリケーションを選択し、リボンから [展開] を選択して展開します。

[ソフトウェアの展開ウィザード] - [全般] ページ
配布対象のコレクションを選択します。

[ソフトウェアの展開ウィザード] - [コンテンツ] ページ
配布ポイントを追加します。

[ソフトウェアの展開ウィザード] - [展開設定] ページ
今回は、アプリケーション カタログ Web サイトや、ソフトウェア センターからの任意インストール形式とするため、"操作: インストール" "目的: 利用可能" とします。
"ユーザーがこのアプリケーションを要求した場合に管理者の承認を必要とする" は、アプリケーション カタログからの承認ステップを挟みたい場合にチェックしておきます。

[ソフトウェアの展開ウィザード] - [スケジュール] ページ
今すぐ展開を行うので、特に設定変更せず、次へすすみます。

[ソフトウェアの展開ウィザード] - [ユーザー] ページ
"ユーザーへの通知" はいずれでも問題ありません。運用に合わせて選択下さい。
残りのウィザードは、そのままの設定で完了します。
※ 補足ポイント - バッチ ファイルの変更を行う場合
動作検証中、バッチ ファイルの更新を行って動作テストを行う場合には、以下手順を行います。

1. SCCM 2012 管理コンソールの [ソフトウェア ライブラリ] ワークスペースの、[アプリケーション管理] - [アプリケーション] から、アプリケーションを選択し、画面下の "展開の種類" タブを選択します。
2. "展開の種類" タブからリストされるものを右クリックし、[コンテンツの更新] を行います。
3. 続いて、アプリケーションをクリックし、アプリケーションのプロパティを開きます。
4. [コンテンツの場所] タブから、配布ポイントをクリックし、[再配布] を選択します。

上記で、更新されたバッチ ファイルを配布ポイントに反映させます。
アプリケーション登録と、展開設定の完了後、SCCM クライアントが導入されたサーバーやクライアントからソフトウェア センターやアプリケーション カタログ Web サイト経由で、DPM エージェントの導入を実施下さい。

なお、DPM エージェントの導入後は、DPM サーバー側で接続をする必要があります。
この作業のため、どのユーザーが DPM エージェントをインストールしたのかの把握のため、"[ソフトウェアの展開ウィザード] - [展開設定] ページ" にて承認プロセスが必要、としておくのも有効です。