Azure Guest OS 3.xでARRv3を使う

Windows Azure Advent Calrendar jp: 2012 の #24です。

みなさんご存知の通り、Windows Azureのクラウドサービスおよび仮想マシンでWindows Server 2012が利用できます。

※残念ながらAzure WebサイトはまだWindows Server 2008 R2ベース。

仮想マシンは自分でいろいろ設定して永続化しておけるのでどうってことは無いんですが、みんな大好きクラウドサービスはそういうわけにはいきません。

で、せっかくクラウドサービスのGuest OS 3.xで、Windows Server 2012つまりIIS8が使えるようになったので、ARR(Application Request Router)も対応したものを使いましょーというのが主旨です。

IIS8に対応したARRv3はExternal CacheやURL Rewriteもこれまで通り使えますし、なんといってもWebSocketに対応してるのが嬉しいですね。

とはいえ、IIS8に対応したARRv3はまだBetaなので利用には注意が必要ですが。

さてさて、インストールなんですけど、やり方はとっても簡単。ミンナダイスキStartupTask+WebPIでARRv3をインストールすればOK!

でも以下2点ほど面倒くさいところが。

  • ARRv3はBetaというのと、WebPlatform Installer v4が必要(単体インストールもできるけど依存関係が面倒)
  • WebPlatform Installer v4のコマンドライン版(Preview)があるけど、.NET 2.0/3.5が必要 → Guest OS 3.xには既定でインストールされていない

依存関係は以下の通りなので、個別にインストーラをダウンロードしてくればいいわけですが…

image

面倒ですねー。ということで、WebPICmdが動く環境を用意してしまいましょう。

準備

まずは準備です。WebPlatformInstallerのコマンドライン版をゲットします。

ロールのAssetsフォルダ等適当に放り込んで、「出力ディレクトリにコピー」プロパティを常にコピーとかにしておきましょう。

お次はStartupTaskの準備です。

BOMつかないようにANSIフォーマットの.batを作って以下のようにしましょう。

@echo off
IF exist c:\startup.txt goto skip

sc config wuauserv start= demand
net start wuauserv

PowerShell -Version 3.0 -ExecutionPolicy Unrestricted "%~dp0\startuptask.ps1" >> "C:\StartupLog.txt" 2>&1

IF %ERRORLEVEL% EQU -393216 (
   PowerShell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
   PowerShell "%~dp0\startuptask.ps1" >> "C:\StartupLog.txt" 2>&1
)

:skip
echo Done >> c:\startup.txt

md appdata
cd appdata
cd ..
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f

"%~dp0\WebpiCmd.exe" /install /products:ARRv3 /xml:http://www.microsoft.com/web/webpi/4.2/webproductlist.xml /accepteula /language:en /log:c:\webpi.log

reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /fnet stop wuauserv

net stop wuauserv
sc config wuauserv start= disabled
del c:\startup.txt

ポイントは.NET Framework 2.0をインストールするのにPowerShellのコマンドを使うので、バッチ内でPowerShellスクリプトを呼び出してるところです。

呼び出し先のPowershellスクリプトはこんな感じ。

Install-WindowsFeature -Name NET-Framework-Features -ComputerName localhost -restart

あと、.NET Frameworkを追加したときにOS再起動が必要なので、再起動時は一部処理をスキップするようにしてます。

実際にARRv3を入れるのはWebpiCmd.exe経由ですが、β機能なので通常のフィードだとインストールできません。なのでカスタムフィードを指定しています。

あ、.batも.ps1も出力ディレクトリにコピーされるようにして、*.csdefのStartupTaskに.batファイルを指定しておきましょう。

以上で完了です。では実際にデプロイして確認してみましょう。

確認

さて正常にデプロイできたら確認してみましょう。

image

こんな感じでWeb Farm、ARR Cache、URL Rewriteが使えるようになりました。( ゚Д゚ノノ”☆パチパチパチパチ

あ、ARRv3のコンフィグは適宜してくださいね。(今回はインストールだけ)

それと欠点としては.NET Framework 2.0いれてるので、デプロイに時間がかかる事でしょうか。20分弱ぐらい。(個別インストールを順番にすればもうちょっと早いですけどねたぶん。)

まとめ

最新のWindows Azure環境にARRv3使って、みんなでハッピーメリークリスマス~!

参考

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中