2011/07/12

VMM2012BETA > Server App-V > Apache HTTP Server をサービスとして自動展開してみた

System Center Virtual Machine Manager (SCVMM) 2012 Beta 評価中です。5 月に SCVMM 2012 Beta に含まれる Server App-V のコンポーネントを単体で、手動設定で試用してみました。ずいぶん間が経ちましたが、SCVMM 2012 Beta の機能を使ってサービスとして自動展開してみようと思います。今回も、5 月にシーケンスした Apache HTTP Server のパッケージ (.sft) を使用します。右の画面のように、Apache のインストール直後の既定のページ (It works!) が出てきたら大成功ということで。

SCVMM 2012 Beta で Server App-V も単体で試せます (2011/05/09)
http://yamanxworld.blogspot.com/2011/05/scvmm-2012-beta-server-app-v.html
Server App-V で Apache を展開後、仮想マシンを再起動したら? (2011/05/16)
http://yamanxworld.blogspot.com/2011/05/server-app-v-apache.html


SCVMM 2012 では、ミドルウェアやアプリケーションを含む、複数の仮想マシンで構成されたシステムをサービスとして自動展開する機能が実装される予定です。現行のSCVMM 2008 R2 が IaaS としたら、SCVMM 2012 は IaaS に加えて、PaaS もできるということです。この機能は、SCVMM 2012 Beta でも利用でき、Beta サイトにて Petshop というサンプル アプリケーションも提供されています。


Petshop は、3 階層 (Web、Middle、SQL Server) で動作するオンライン ペットショップのサンプル アプリケーションです。以下に説明されている手順に従って構成すれば、最小 3 台の仮想マシンを、Sysprep 済みのイメージから、アプリケーションのインストールと構成まで自動展開してくれます。

TechNet Blogs > Virtual Machine Management > How to deploy the Pet Shop Application as a Service in VMM
http://blogs.technet.com/b/m2/archive/2011/03/29/how-to-deploy-the-pet-shop-application-as-a-service-in-vmm.aspx


成功すると、やっほーって感じですが、何をしたのか、どうなっているのか、よくわかりません。何か、やらされている感いっぱいです。

ちなみに、Petshop のうち、Web Tier は OS に IIS を追加し、Web Deploy で.NET アプリケーションを展開、SQL Tier は SQL Server 2008 R2 のインストールとデータベースの構成 (SQL Server 2008 R2 は Sysprep 対応)、そして、Middle Tier は、Server App-V によるミドルウェア コンポーネントのインストールと構成を行っているようです。これらを Service Template として構成しておけば、ワンクリック(実際には数クリック必要ですが)で仮想化ホスト上にデプロイできるという感じです。

やらされている感を払しょくするには、自分で最初から試してみるのが一番。というわけで、Petshop の Middle Tier の設定を参考に、前回作成済みの Apache HTTP Server のパッケージ (こちらの手順の 1 ~ 5 ) と、同じく作成済みの Windows Server 2008 R2 Enterprise SP1 の仮想マシンテンプレート (OS をインストールしただけの、Sysprep 済みの VHD を含む) でサービスを自動展開してみます。

1. Windows エクスプローラー(Explorer.exe) を使用して、ライブラリ(\\コンピューター名\MSSCVMMLibrary\以下のパス)にフォルダーを作成し、フォルダーの中に Apache HTTP Server の Server App-V パッケージをコピーしておきます。

2. ライブラリに別のフォルダーを作成し、fwconf_apache.crというフォルダー名(.crが付けば名称は適当でよい)を付けます。この中に、ファイアウォールでTCPポート80を許可するためのコマンドラインを記述したバッチファイル(fwconfig.cmdなど)を保存しておきます。

3. [Virtual Machine Manager Console] の [Library] を開き、[Library Servers] でライブラリ サーバーを右クリックして [Refresh] を選択します。


4. [Library] の [Home] タブで [Create Service Template] をクリックして、新しい Service Template (サービス テンプレート) の作成を開始します。すると、[Service Template Desginer] が開きます。最初に、[New Service Template] ダイアログボックスにサービス テンプレート名を入力します。


3. [Create VM Template] をクリックして、[New VM Template Wizard] を開始します。[Select Source: Select a souce for the new VM template.] のページで、Windows Server 2008 R2 SP1の仮想マシンテンプレート (以前に作成済みのもの、OS のみ、Sysprep 済み)を選択します。


4. [VM Template Identity] のページで、適当なテンプレート名を入力します。

5. [Configure Hardware] のページで、仮想マシンのハードウェア構成をカスタマイズします。ネットワーク アダプターの構成は必須です。

6. [Configure Operating System] のページで、ゲスト OS プロファイルをカスタマイズします。

Identity Information: 仮想マシン名およびゲスト OS のコンピューター名になります。「仮想マシン名##」と入力すると、仮想マシン名01のように##の部分が連番になります。
Admin Password: 管理者パスワードを設定します。
Product Key: プロダクトキーを入力します。
Roles and Features: サービス テンプレート用の仮想マシンテンプレートでは、Windows の役割や機能のインストールを指定できます。ただし、今回は何も選択しません。

Domain/Workgroup: ドメインへの参加設定をします。
Answer File: 次のテキストを記述したテキストファイルをファイル名.xmlとしてライブラリに保存し、それを読み込ませてください。これは、タイムゾーンの指定に関係なく、展開した仮想マシンのキーボードとシステムロケールがen-usになってしまう問題を解消してくれます。このテクニックは、現行のSCVMM 2008 R2でも有効です。

-------------------------
<?xml version="1.0" encoding="utf-8"?>
  <unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
      <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <UserLocale>ja-JP</UserLocale>
        <SystemLocale>ja-JP</SystemLocale>
        <InputLocale>0411:00000411</InputLocale>
        <UILanguage>ja-JP</UILanguage>
      </component>
    </settings>
  <cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
-------------------------


7. [Configure Applications] のページに進みます。ここで、いよいよ Server App-V の構成をします。まず、[OS Compatibility] として [64-bit edition of Windows Server 2008 R2 Enterprise] をチェックします。次に、[+Add] をポイントして [Script] をクリックします。


8. スクリプトの編集画面が表示されるので、次のように指定します。このスクリプトにより、Server App-V のエージェントがゲスト OS にインストールされることになります(スクリプト パッケージ SAV_x64_en-US_4.7.11.1127.cr は、SCVMM 2012 Beta のライブラリに最初から用意されています)。「InstallSAV.cmd /c」は、Server App-V エージェントをインストールし、Web Depoy をインストールしない指定です。

Script command type: Pre-Install
Executable: cmd.exe
Parameters: /q /c InstallSAV.cmd /c
Script package: SAV_x64_en-US_4.7.11.1127.cr



9. [+Add] をポイントして [Virtual Application] をクリックします。Server App-V の仮想アプリケーションの編集画面が表示されるので、次のように指定します。

Name: Apache HTTP Server (適当な名前)
Virtual application package: ライブラリ内の仮想アプリケーション パッケージを選択



10. もう一度、[+Add] をポイントして [Script] をクリックし、今度は次のように指定します。このスクリプトは、ファイアウォールのTCPポート80を許可するバッチファイルを実行するものです。

Script command type: Post-Install
Executable: cmd.exe
Parameters: /q /c fwconfig.cmd (手順2でライブラリに登録したバッチファイル名)



11. Script package: fwconf_apache.cr (手順2でライブラリに用意したフォルダー名.cr)ウィザードを最後まで進み、[Create] ボタンをクリックして、仮想マシンテンプレートを作成します。

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


13. [Save] をクリックします。これで、ゲスト OS + Apache HTTP Server の仮想マシンをサービスとして自動展開するためのサービス テンプレートは完成です。

14. 続いて、作成したサービステンプレートを使用して、サービスをデプロイします。それには、[Service Template Desginer] の [Configure Deployment] をクリックします。[Service Template Desginer] を閉じてしまった場合は、[Library] の [Templates\Service Templates] からサービス テンプレートを右クリックし、[Deploy] を選択します。

15. [Select name and destination] ダイアログボックスが表示されるので、サービス名とホストグループを指定します。


16. サービスの配置の論理図が星の数とともに示されます。配置先を選択し、[Deploy Service] をクリックして、サービスのデプロイを開始します。

 17. [Create Service Instance] ジョブが開始されます。あとは、ジョブが完了するまで待つだけです。


18. [VMs and Services] の [Services] ビューに切り替えてみましょう。どことなく、Windows Azure Platform の Management Portal に似ています。


19. ジョブが完了したら、http://FQDN/ にアクセスしてみます。「It works!」と表示されました。めでたしめでたし。


以前の投稿で、Server App-V の仮想アプリケーションの手動展開を試みた際は、仮想アプリケーション パッケージを登録するために PowerShell のコマンドレットを使用しましたが、SCVMM 2012 Beta のサービス テンプレートで展開する場合、PowerShell を記述したり、PowerShell スクリプト (.ps1) を登録したりする必要はありませんでした。


Server App-V については、これでひとまず攻略っと。次は Web Deploy を勉強しなきゃです。

0 件のコメント: