2011/07/19

VMM2012BETA > Web Deploy > VMM2012 で Web Deploy

System Center Virtual Machine Manager (SCVMM) 2012 Beta のサービス展開の、Web 階層の自動展開の仕組みを理解するため、その要素技術である Web Deploy (Web Deployment Tool/Web 配置ツール) についてのお勉強です。IIS と Web DeployWindows Azure と Web Deploy に続いて、最後は SCVMM 2012 Beta と Web Deploy の話です。



用意したものは、SCVMM 2012 Beta の環境と次のもの。これらを SCVMM 2012 Beta のライブラリ共有に格納しておきます。
  • Windows Server 2008 R2 Enterprise SP1 の仮想マシン テンプレート (OS のみ、IIS なし、Sysprep 済み)
  • 前々回、IIS 向けに作成した ASP.NET Web アプリケーションの配置パッケージ (.zip のみ)

この 2 つを組み合わせて、IIS の Web サーバーを構成し、ASP.NET Web アプリケーションをデプロイするまでを自動化してみたいと思います。手順は、「VMM2012BETA > Server App-V > Apache HTTP Server をサービスとして自動展開してみた」とだいたい同じなので繰り返しません。サービス テンプレートを作成し、Windows Server 2008 R2 Enterprise SP1 の仮想マシンテンプレートから、サービス用の仮想マシン テンプレートを作成します。ハードウェア プロファイルのところまでは、Server App-V のときと同じです。

Web アプリケーションをデプロイする場合は、ゲスト OS プロファイルとアプリケーション プロファイルのところが違ってきます。ゲスト OS プロファイル (Configure Operating System) では、「Roles and Features」のところで、Web Server (IIS)、ASP.NET、ISAPI Filter、ISAPI Extentions、.NET Framework 3.51、BITS などなど、ASP.NET が有効な IIS のために必要なコンポーネントを追加します (何を選択するべきか、分かり難いのがアレですが)。


アプリケーション プロファイル (Configure Applications) のところでは、「+Add」をポイントして「Script」をクリックし、次のように構成します。「WebDeploy_x64_en-US_1.1.0600.scr」は SCVMM 2012 Beta のライブラリに最初からあるスクリプト パッケージで、64 ビット版の Web Deploy 「WebDeploy.msi」と、これをサイレント インストールする「InstallWebDeploy.cmd」が含まれます。

Script command type: Pre-Install
Executable: cmd.exe
Parameters: /q /c InstallWebDeploy.cmd
Script package: WebDeploy_x64_en-US_1.1.0600.cr


続いて、「+Add」をポイントして「Web Application」をクリックし、ライブラリに格納しておいた配置パッケージ (.zip) を選択します。アプリケーションの設定が読み込まれましたが、SQL Server への接続情報が含まれてしまいました。これは、Web アプリケーションの配置パッケージの作成時に除外するように構成する必要がありそうです (ここでは無視します)。


後は、ウィザードをずんずん進み、[Create] ボタンをクリックして、仮想マシンテンプレートを作成します。

  [Service Template Desginer] に戻るので、[VM Templates] のリストに追加された、いま作成したテンプレートを、中央の [↓ Drop VM Templates Here] にドラッグ アンド ドロップします。


「Configure Deployment」をクリックして、このサービス テンプレートからサービスのデプロイを開始します。配置先の提案が星の数で示されるので、(複数ある場合は) 配置先を選択し、「Deploy Service」をクリックします。「Create Service Instance」ジョブが開始するので、あとは気長に待ちます。


無事、サービスのデプロイ成功かと思いきや、最後の最後で失敗してしまいました。エラーを見ると「このアプリの managedRuntimeVersion が v4.0 なのに、v2.0 だっぺ」だそうです。実はこれ、前々回の IIS で WebDeploy を試したときに見たエラー。IIS の既定のアプリケーション プール (このアプリケーションが使用する Default Web Site の DefaultAppPool) が v2.0 だから発生するエラーです。そういえば、Windows Server 2008 R2 の標準は .NET Framework 3.5.1 だし、.NET Framework 4.0 はインストールしていないので、アプリケーション プールを v4.0 にもできない。


回避策はいろいろ思いつきますが、簡単な方法として、ASP.NET Web アプリケーションの配置パッケージの設定にある「コンパイル」オプションで、ターゲットのフレームワークを「.NET Framework 3.5」に変更し、再パッケージして、ライブラリを更新しました。


デプロイに失敗したサービスを削除 (サービスを「Delete」すると仮想マシンをすっかりきれいにしてくれます。簡単でうれしい)して、再度、デプロイを実行したところ、今度はめでたく成功。IIS の URL を開くと、ちゃんとお馴染みの ASP.NET Web アプリケーションが開きました。


ちょっとだけ課題が残りましたが、同じ Web アプリケーションを、Web Deploy という同じ方法で、稼働中の IIS、Windows Azure の Web ロール、SCVMM 2012 Beta のサービスに展開できました。

+ VMM2012BETA > Web Deploy > VMM2012 で Web Deploy
← VMM2012BETA > Web Deploy > Azure で Web Deploy
← VMM2012BETA > Web Deploy > IIS に Web Deploy


いつかにつづく...

0 件のコメント: