5

新しい Powershell コマンドレット (ここに文書化されています: http://msdn.microsoft.com/en-us/library/windowsazure/jj152841 ) は素敵に見えますが、不足しているように見えるものが 1 つあります。

Get-OperationStatus -WaitToComplete

これがないと、私の Azure 操作 (例Set-AzureDeployment) は完了を待ちません。

これにより、VIP スワップを実行する前に、ステージング インスタンスがいつ実行されているかを知ることが難しくなります。

代替手段はありますか?

4

2 に答える 2

10

したがって、調査の結果、私の最初の仮定は部分的に間違ってました。新しい Powershell コマンドレットの呼び出しは、.Set-AzureDeployment -newStatus "Running"

Get-OperationStatusこれは良いことです。スクリプト全体に散らばる を呼び出す必要がなくなったからです。Set-AzureDeploymentただし、展開がスピンアップしたままになるため、悪いことです。

Get-AzureDeploymentただし、 を呼び出して を反復処理して、RoleInstanceList何が起こっているかを把握できます。そのようです:

function Get-StagingReady {
    $stagingStatus = Get-AzureDeployment $azureService -slot staging 
    if (-not $($stagingStatus.Status -eq "Running")) {
        Write-Host $(" ... ... Staging slot status is not Running; value is " + $stagingStatus.Running)
        return $False
    }

    if (-not $stagingStatus.RoleInstanceList) {
        Write-Host " ... ... Staging slot has no instances configured yet."
        return $False
    }

    $notReady = $False

    Foreach ($roleInstance in $stagingStatus.RoleInstanceList) {
        if (-not $($roleInstance.InstanceStatus -eq "ReadyRole")) {
            Write-Host $(" ... ... ... Staging slot instance " + $roleInstance.InstanceName + " has status " + $roleInstance.InstanceStatus)
            $notReady = $True
        }
    }

    if ($notReady) {
        Write-Host " ... ... One or more instances not running."
        return $False
    }

    Write-Host " ... Staging slot ready for use."
    return $True
}


function Wait-ForStagingToBeReady {
    while ( -not $(Get-StagingReady) ) {
        Write-Host " ... ... Staging slot not ready, waiting 15 seconds for Azure to spin up instances."
        Start-Sleep -s 15
    }
}


function Start-Staging {
    Write-Host " ... Starting staging slot."

    $staging = Get-Staging $azureService 
    $result = Set-AzureDeployment `
            -Status `
            -serviceName $azureService `
            -slot "Staging" `
            -newStatus "Running" 

    if (-not $?) {
        Write-Host
        Write-Host "Unable to start staging slot."
        Write-Host "DEPLOY FAILED"
        Write-Host
        exit 1
    }

    Wait-ForStagingToBeReady

    Write-Host " ... Deployment in Staging slot started."
}
于 2012-07-09T14:37:49.890 に答える
0

しかし、欠けているように見えるものがあります

サポートされていない場合は、代替手段を見つけてください。たとえば、PowerShell を使用する代わりに、REST API を直接使用してください。REST API を使用すると、非同期要求を追跡できます: http://msdn.microsoft.com/en-us/library/windowsazure/ee460791

さらに、http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-votingで機能要求を送信することもできます。

よろしくお願いします、

明徐。

于 2012-07-06T09:44:04.183 に答える