SCVMMの補完ツールとして、Virtual Machine Servicing Toolがあります。
これは自動的にオフラインのマシンに対して更新プログラム等を適用させるツールになります。今までのバージョンではオフラインとは言っても、実際には仮想マシンを起動させて更新プログラムを適用させることを行っていました。
しかし、ある課題がありました。それは、Sysprep済みのイメージはこの仕組みではうまくいかないということです。
そこで、最新バージョンであるVirtual Machine Servicing Tool 3.0 ではDISMの機能を使用して実際に端末を起動しなくても更新プログラムなどを適用できる仕組みを提供しています。
ただし、この機能を使用できるのはWindows Server 2008 R2 or Windows7 になります。なぜなら、DISMをサポートしているのはこれらのOSからだからです。
ではこのVMST3.0を構築するにはどうすればいいのか?
上記環境を作成することになります。ここで、メンテナンスホストが登場しますが、実際に更新プログラムの適用作業を行うのがメンテナンスホストになります。さて、ここで注意点があります。VHDのジョブを行う際のメンテナンスホストは英語環境が必要だということです。この理由はメンテナンスホストで起動されるスクリプトに起因します。スクリプトの戻り値は英語環境に依存する値が使用されており、日本語環境ではエラーとなってしまいます。このような理由によって英語環境が必要となるのです。更に、メンテナンスホストはWindows Server 2008 R2 or Windows7 である必要があります。通常はWindows Server 2008 R2になるでしょう。
英語環境を用意できない場合は、日本語環境に”Windows Server 2008 R2 Multilingual User Interface Language Packs”をインストールして英語環境を作りましょう。そして、ローカルシステムを英語に変えれば問題ありません。
そして忘れがちなのは、メンテナンスホスト側のFW設定で
- ファイルとプリンタ共有
- Windows Management Instrumentation (WMI)
- リモート管理
の許可を与えておくこと。この設定を行っていないとVirtual Machine Servicing Toolからメンテナンスホストが見つかりません。
- このような環境を用意したら、SCVMM上のコンピューターにVirtual Machine Servicing Toolをインストールします。
Virtual Machine Servicing Tool 3.0
をダウンロードし、インストールします。
更に、PsExecをダウンロードします。展開して、pdh.dllとpsexec.exeファイルを
%ProgramFiles%Microsoft Offline Virtual Machine Servicing ToolBin
にコピーします。それらのファイルのプロパティより、ブロックの解除を行います。ブロックの解除が出ない場合は行わなくても大丈夫です。
更に、Powershellを起動して、set-executionpolicy remotesigned を実行しておきます。
これでインストールは終了です。
*メンテナンスホストは隔離されたLANが推奨ですが、通常のLANでも動きました。テスト環境で2枚のLANカードを用意するのは大変だったので1枚のLANカードで行いました。
*SCVMMにWSUSの管理ツールを入れないと、WSUSを指定できないので事前にインストールする必要があります。
さて、実際の構成になります。
画面をみればわかるとおり、メニューは3つに分かれています。
まずは[Administration]を選択し、Configure Toolを起動します。ウイザードに従って設定を行っていきます。今回はSCCMは使用しないのでWSUSサーバーのみ指定しています(WSUSサーバー名がSCCMですけど・・・)
ちなみにメンテナンスホストはmiamiというコンピューターにしました。
次に[Groups]を設定します。
ここでグループを作成します。ライブラリグループ、ホストグループ、テンプレートグループ、VHDグループが作成できます。VHDグループにはWindows Server 2008 R2 か Windows7 を指定することによって、ホストを起動せずに更新プログラムなどを適用できます。これにより、Sysprep済みでも更新プログラムの適用ができますね!
グループの指定が終了したら、ジョブの設定を行います。
[Servicing Jobs]を選択し、作成したグループに対するジョブ設定を行います。今回は[Virtual Hard Disks’ Groups]を設定します。
グループを指定すると、グループ内のマシンが表示されるので選択します。
VHDファイルのバックアップを取っておく場合はチェックします。バックアップファイルは~.old.vhdとしてライブラリに保管されます。
メンテナンスホストが表示されるので選択します。
ドメイン、ユーザー名、パスワードを入力します。
スケジュール設定を行います。
ジョブの登録が完了しました。
簡単にこの動作を解説すると、ライブラリよりメンテナンスホストのVHDの保存場所にコピーされ、メンテナンスホストにVHD接続されます。そして、WSUSから必要なUpdateファイルをダウンロードし適切な更新プログラムなどをDISMを使用して適用されます。その後、アンマウントされライブラリに戻されます。
VMの構成として、下記要件がありますので注意が必要です。
- ドメインのメンバとして構成
- DHCPを有効にする(または静的IPをあらかじめ設定しておく
- 仮想ゲストサービスをインストール
- WSUSを利用する場合は、WSUSサーバーの場所をGPOを通じて設定しておく
- SCCMを利用する場合は、クライアントエージェントのインストールとインベントリの収集、仮想マシンをグループ化したコレクションを作成する
- 他のジョブは基本的に、メンテナンスホストにVHDをコピーして、メンテナンスホスト上でVMを起動しアップデートを行います。終了後元の場所に戻されるという動作になります。この動作は以前のものと同じですね。
- トラブルシューティングを行うには・・・ログを確認する方法があります。デフォルトではログ出力は無効になっているのでトラブルシューティングを行う際にはログを有効にする必要があります。Config.xml ファイルがインストールフォルダ配下のConfigフォルダにありますので、
Trace Value=”True”
- に変更します。そうするとLOGフォルダにログが出力されます。
当たり前のことですが、メンテナンスホストはSCVMMのホストとして登録することを忘れずに行いましょう(私は忘れてちょっとはまりました)
あと構築して思ったことは、メンテナンスホストは2台用意するのが正解かも?VHDジョブ用の英語環境とそれ以外のジョブ用日本語環境を用意したほうがいいかもしれません。そうしないと、Hyper-Vのネットワーク名に日本語を使用しているとそれが原因でトラブルになるかもしれないな~なんて思いました。
この環境を構築するに当たり国井さんと山市さんのブログを参考にさせいていただきました。
山市良のえぬなんとかわーるど
http://yamanxworld.blogspot.com/2010/10/vsmt-30-vhd.html
Always on the clock
http://sophiakunii.wordpress.com/2010/09/06/virtual-machine-servicing-tool-3-0/