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には既定でインストールされていない
依存関係は以下の通りなので、個別にインストーラをダウンロードしてくればいいわけですが…
面倒ですねー。ということで、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ファイルを指定しておきましょう。
以上で完了です。では実際にデプロイして確認してみましょう。
確認
さて正常にデプロイできたら確認してみましょう。
こんな感じでWeb Farm、ARR Cache、URL Rewriteが使えるようになりました。( ゚Д゚ノノ”☆パチパチパチパチ
あ、ARRv3のコンフィグは適宜してくださいね。(今回はインストールだけ)
それと欠点としては.NET Framework 2.0いれてるので、デプロイに時間がかかる事でしょうか。20分弱ぐらい。(個別インストールを順番にすればもうちょっと早いですけどねたぶん。)
まとめ
最新のWindows Azure環境にARRv3使って、みんなでハッピーメリークリスマス~!