PowerShellを使用したAzureの管理(2)
ホステッドサービスのアップロード
では実際にホステッドサービスをアップロードしてみます。アップロードには「New-Deployment」コマンドを使用します。以下のように使用します。
PS C:\> Add-PSSnapin AzureManagementToolsSnapIn PS C:\> $SubscriptionId=<サブスクリプションID> PS C:\> $thumbprintInUpperCase=<管理証明書のThumprint>" PS C:\> $serviceName=<ストレージサービスURLのプレフィックス> PS C:\> New-Deployment -subscriptionId $SubscriptionId -certificate (get-item cert:\CurrentUser\MY\$thumbprintInUpperCase) -serviceName $serviceName -slot Staging "C:\upload\WindowsAzureProject2.cspkg" -configuration "C:\upload\ServiceConfiguration.cscfg" -name TestDeploy -label TestLabelStaging SubscriptionId Certificate ServiceName OperationId -------------- ----------- ----------- ----------- 1234e596-c473-4998-ab21-1a... [Subject]... bird982000 b2811ad8a9b7456980a79b6b7d...
細かい構文はPowerShellのGet-Helpコマンドを参照してください。今回は-slot引数でステージング環境を指定した上で、C:\uploadフォルダ以下に配置してあるローカルのパッケージファイルと構成ファイルを指定してアップロードしました。この際にホステッドサービスの名称とラベル名称を-name と-label引数で指定しています。なお、パッケージファイルと構成ファイルはブロブストレージに配置してあるものも指定でき、デプロイのスピードはブロブストレージに配置してあるファイルの方が早くなります。
アップロードしただけですので、Set-DeploymentStatusコマンドを使用してサービスを起動します。-Status引数で起動状態に変更しています。
PS C:\> Set-DeploymentStatus -Status Running -Slot Staging -ServiceName bird982000 -subscriptionId $SubscriptionId -certificate (get-item cert:\CurrentUser\MY\$thumbprintInUpperCase) SubscriptionId Certificate ServiceName OperationId -------------- ----------- ----------- ----------- 1234e596-c473-4998-ab21-1a... [Subject]... bird982000 45b8344ed4ca4a45a2d19567a9...
これでサービスの起動が完了です。以下のようにAzureポータルでもサービスが起動しつつあることが確認できます。
図3:ホステッドサービスの起動画面 |
実際のログ出力
それでは、実際にホステッドサービスのインスタンスが出力する、Windowsのイベントログの設定を変更してみます。今回はこのログをinformationレベルまでストレージに転送するようにします。
まず、設定を確認してみます。
PS C:\>$Deployid=<DeploymentId> PS C:\>$storage=<ストレージアカウント名> PS C:\>$key=<ストレージのアクセスキー> PS C:\>Get-DiagnosticAwareRoles -DeploymentId $Deployid -StorageAccountName $storage -StorageAccountKey $key WebRole1 PS C:\>$Role=WebRole1
デプロイは複数のロールをまとめてデプロイする可能性があるので、Get-DiagnosticAwareRolesコマンドで診断モニターが有効なロールを表示します。デプロイ単位で確認できるようになっているので-DeploymentIdでデプロイIDを表示して、ストレージの設定を-StorageAccountName、-StorageAccountKeyで設定します。
Set-WindowsEventLog -EventLogs "Application!*" -Rolename $Role -TransferPeriod 1 -StorageAccountName $storage -StorageAccountKey $key -DeploymentId $DeployID -BufferQuotaInMB 1024 -LogLevelFilter Information
Set-WindowsEventLogでインスタンスの設定を変更します。上記ではログレベルInformationを1分ごとに出力するように設定しています。
これで変更は完了です。Get-DiagnosticConfigurationコマンドで設定が確認できますので、変更されていることを確認してください
PS C:\> Get-DiagnosticConfiguration -BufferName WindowsEventLogs -RoleName $Role -InstanceId $InstanceID -StorageAccountName $storage -StorageAccountKey $key -DeploymentId $DeployID DataSources ScheduledTransferLogLevelFilter ScheduledTransferPeriod BufferQuotaInMB ----------- ----------------------------- ----------------------- --------------- {Application!*} Information 00:01:00 1024
-BufferName引数でイベントログを指定しています。これ以外にパフォーマンスログなども指定できます。