Windows Azure PowerShell で Webサイトをいろいろ

Windows Azure Webサイトも、Windows Azure PowerShellである程度は簡単に自動化できます。

Windows Azure Management Cmdlets
http://msdn.microsoft.com/en-us/library/jj152841.aspx

 

ということで、簡単にWebサイト関連のコマンドを紹介。まずは、ブラウザが起動するコマンド2つ。

ブラウザを起動して管理ポータルのトップを表示。

Show-AzurePorta

名前を指定すれば、指定したWebサイトのダッシュボードが表示されます。

Show-AzurePortal "blogdemomo01"

サイトが見たい時は、こちら。ブラウザが起動してサイトのURLが開きます。

Show-AzureWebsite "blogdemomo01"

 

Webサイトの情報取得

Webサイトの一覧を取得

Get-AzureWebsite

詳細を知りたい時は、名前を指定(-nameは省略)

Get-AzureWebsite "blogdemomo01"

 

Webサイトの操作

新規作成

New-AzureWebsite "blogdemomo01" -Location "East Asia"

新規作成時にほとんど設定できないので、必要に応じてSet-AzureWebsiteで設定してください。

開始

Start-AzureWebsite "blogdemomo01" 

停止

Stop-AzureWebsite "blogdemomo01" 

再起動

Restart-AzureWebsite "blogdemomo01"

削除

Remove-AzureWebsite "blogdemomo01"

こちらは、おなじみの [-Force] [-Confirm] [-WhatIf] オプションを指定することも可能です。

 

最後にWebサイトの設定コマンド「Set-AzureWebsite」。下記を見ても分かる通りパラメータ沢山あります。

Set-AzureWebsite
http://msdn.microsoft.com/en-us/library/dn408532.aspx

まあ、試してみましょう

ワーカープロセスの数を変更(って書いてある)。モードに関係なく最大10(ポータルに設定なし)

Set-AzureWebsite "blogdemomo01" -NumberOfWorkers 3

 

既定のドキュメント。配列の順番通りに優先順位が設定されます。また、既存の設定も忘れずに。

Set-AzureWebsite "blogdemomo01" -DefaultDocuments @("hoge.htm", "hoge2.htm", "index.htm")

 

.NET Framework バージョン

Set-AzureWebsite "blogdemomo01" -NetFrameworkVersion 2

※ポータルでv3.5の設定

Set-AzureWebsite "blogdemomo01" -NetFrameworkVersion 4

※ポータルでのv4.5の設定

“v2.0″や”v4.0″でも同じ値になります。ちなみに、1や3を指定してもエラーにはなりませんが、ASP.NETは動かなくなります。

 

PHP バージョン

Set-AzureWebsite "blogdemomo01" -PhpVersion "5.3"

その他、”5.4″と”5.5″も指定可能。オフにする場合は、上記以外を適当に指定。

Set-AzureWebsite "blogdemomo01" -PhpVersion "aaa"

 

失敗した要求トレース。1でオン、0でオフ

Set-AzureWebsite "blogdemomo01" -RequestTracingEnabled 1

 

Web サーバーのログ記録。0でオフ、1でファイルシステム

Set-AzureWebsite "blogdemomo01" -HttpLoggingEnabled 1

 

詳細なエラー メッセージ。1でオン、0でオフ

Set-AzureWebsite "blogdemomo01" -DetailedErrorLoggingEnabled 1 

 

ドメイン名

Set-AzureWebsite "blogdemomo01" -HostNames "www.example.com" 
Set-AzureWebsite "blogdemomo01" -HostNames @("www1.example.com", "www2.example.com") 

 

アプリケーション設定

Set-AzureWebsite "blogdemomo01" -AppSettings @{"key1"="value1";"key3"="value3"}

 

Metadata(ポータルに設定なし)

$nvp1 = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.NameValuePair
$nvp1.Name = "name1"
$nvp1.Value = "v1"

$nvp2 = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.NameValuePair
$nvp2.Name = "name2"
$nvp2.Value = "v2"

Set-AzureWebsite "blogdemomo01" -Metadata @($nvp1, $nvp2) 

尚、Metadataどうやって使うのかわかってません。

 

接続文字列

$conn = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.ConnStringInfo
$conn.Name = "Conn1"
$conn.ConnectionString = "Server=tcp:localhost,1433;Database=demo;"
$conn.Type = "Custom"
Set-AzureWebsite "blogdemomo01" -ConnectionStrings $conn

タイプは下記の4つ。
MySql, SQLServer, SQLAzure, Custom

複数設定する場合は、他と同様に配列で。

Set-AzureWebsite "blogdemomo01" -ConnectionStrings @($conn1, $conn2) 

追加する場合は、値を取得して追加するので下記な感じ。

$conn = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.ConnStringInfo
$conn.Name = "ConnAzure"
$conn.ConnectionString = "Server=tcp:localhost,1433;Database=demo;"
$conn.Type = "SQLAzure"
$list = (Get-AzureWebsite "blogdemomo01").ConnectionStrings
$list.Add($conn)
Set-AzureWebsite "blogdemomo01" -ConnectionStrings $list 

 

ハンドラー マッピング

$map = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.HandlerMapping
$map.Extension = "*"
$map.ScriptProcessor = "D:python27python.exe"
$map.Arguments = "D:python27scriptswfastcgi.py"
Set-AzureWebsite "blogdemomo01" -HandlerMappings $map

で、こちらも追加は取得してから追加。

$map = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.HandlerMapping
$map.Extension = "*"
$map.ScriptProcessor = "D:python27python.exe"
$map.Arguments = "D:python27scriptswfastcgi.py"

$list = (Get-AzureWebsite "blogdemomo01").HandlerMappings
$list += $map
Set-AzureWebsite "blogdemomo01" -HandlerMappings $list

あと、SiteWithConfigがあるのですが、設定の仕方がわからなかったので触れない感じで。

REST APIに比べると、いろいろ足りないですが、簡単に設定変更できるので便利です。

Comments are closed.

Post Navigation