2011/05/16

Server App-V で Apache を展開後、仮想マシンを再起動したら?

前回、System Center Virtual Machine Manager(SCVMM) 2012 Beta に含まれる Server App-V のコンポーネントを使用して、 SCVMM 2012 Beta の機能は一切しようせず、Apache を仮想アプリケーション化し、仮想マシンのクリーンなゲスト OS に展開してみました。

App-V for Desktop Client の場合、仮想アプリケーションを利用するには、ユーザーのログオンが必要でしたが、Server App-V の場合はそれが不要なので、Apache のようなサービスも簡単に仮想化できます。ところで、Server App-V で展開した Apache は、仮想マシンを再起動するとどうなるのでしょうか? やってみました。


結論から言うと、仮想マシンを再起動しても、スタートアップ自動の Apache のサービスは自動的に起動しました。

Server App-V の仮想アプリケーションは、Add-AppvPackage コマンドレットでシステムに登録し、Start-AppvPackage コマンドレットで開始するので、スタートアップ スクリプトなどでコンピューター起動時に Start-AppvPackage コマンドレットを実行しなければならないと想像していましたが、そうではないようです。

イベントログを見てみると、Server App-V のエージェントが起動し、その後、仮想アプリケーション Apache のサービスが開始しているのがわかります。ちなみに、イベントログにエラーがあるのは、Apache の構成をちゃんとしていないからです。Server App-V エージェントの警告は、Web 配置ツール (Web Deploy) がインストールされていないよという警告です (今回は Apache なので IIS は使用せず、Web Deploy もインストールしていません)。

Server App-V の仮想アプリケーションは、コピーするだけでよいので、仮想マシンとアプリケーションのプロビジョニングを高速化できるということが想像できます。Sysprep 済みの OS イメージを自動構成する Unattend.xml に、以下のような処理を記述したバッチ ファイルを FirstLogonCommands にでも書いておけば、ゲスト OS の展開と構成、(Sysprepに対応していない) アプリケーションの組み込みをすばやく行えます。
  • InstallSav.cmd を実行して Server App-V エージェントをインストール。
  • XCOPY で仮想アプリケーションパッケージをローカルにコピー。
  • REG ADD HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /f /v ExecutionPolicy /d RemoteSigned を実行して、PowerShell の実行ポリシーを RemoteSigned に変更。
  • PowerShell.exe Deploypkg.ps1でパッケージの登録と開始。Deploypkg.ps1には、Import-Module Microsoft.ApplicationVirtualization, Add-AppvPackage, Start-AppvPacke のコマンドラインを書いておく。
  • NETSH ADVFIREWALL FIREWALL ADD ... で仮想アプリケーションのポートを許可。 
Server App-V が利用できない今の環境でも、アプリケーションのインストールと構成をスクリプト化できれば実現可能ですが、Server App-V の場合はほとんどファイル コピーだけでよいので早くて簡単になるというわけです。

Windows Server 2008 R2 から、DISM コマンドでオフライン パッチ (オフライン パッチについては、こちらを参考に) もできるようになったので、仮想マシンのパッチ管理の方法も変わってくるかもしれません。Sysprep 済みのベース イメージをオフライン パッチで更新して、仮想マシンごと再展開して更新するという方法ができるようになりますね。Windows Azure みたいに。

SCVMM 2012 は、あまりの変わりように、どこから手を付けてよいかさえ分からない状態ですが (やろうとしましたが、さっぱりわかりましぇん)、SCVMM 2012 のプライベート クラウドの世界はなんとなく見えてきました。

0 件のコメント: