如何诊断间歇性Azure自定义脚本扩展挂起?

时间:2017-06-09 17:18:17

标签: azure

我们正在使用通过MSDN提供的Windows-10-N-x64 Azure VM映像进行自动化,并且间歇性地看到我们的Custom Script Extension无法在VM上初始化。它的时间大约 20%

当它挂起时,Get-AzureRmVMExtension并不表示挂起期间发生任何错误。

ResourceGroupName       : resource-group-id
VMName                  : Windows-VM
Name                    : Script-Extensions
Location                : centralus
Etag                    : null
Publisher               : Microsoft.Compute
ExtensionType           : CustomScriptExtension
TypeHandlerVersion      : 1.7
Id                      : /subscriptions/subscription-id/resourceGroups/resource-group-id/providers/M
                          icrosoft.Compute/virtualMachines/Windows-VM/extensions/Script-Extensions
PublicSettings          : {
                            "fileUris": [
                              "https://resource-group-id.blob.core.windows.net/provisioning-container/Enable-PSRemotingAnd
                          DSC.ps1",
                              "https://resource-group-id.blob.core.windows.net/provisioning-container/microsoft-windows-ne
                          tfx3-ondemand-package.cab"
                            ],
                            "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File
                          Enable-PSRemotingAndDSC.ps1 -NetFxCabinetFilePath
                          microsoft-windows-netfx3-ondemand-package.cab -DNSName
                          dns-name.centralus.cloudapp.azure.com"
                          }
ProtectedSettings       :
ProvisioningState       : Creating
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : False
ForceUpdateTag          :

Azure门户将在此期间将扩展状态显示为Transitioning,并且未报告任何错误。

C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.7中VM上的日志也不会显示任何错误。

如果我们不采取任何行动,我们最终会收到超时错误。

Exception             : System.Exception: 4:00:34 PM - Resource 
                        Microsoft.Compute/virtualMachines/extensions 
                        'Windows-VM/Script-Extensions' failed with message '{
                          "status": "Failed",
                          "error": {
                            "code": "ResourceDeploymentFailure",
                            "message": "The resource operation completed with 
                        terminal provisioning state 'Failed'.",
                            "details": [
                              {
                                "code": "VMExtensionProvisioningTimeout",
                                "message": "Provisioning of VM extension 
                        'Script-Extensions' has timed out. Extension 
                        installation may be taking too long, or extension 
                        status could not be obtained."
                              }
                            ]
                          }
                        }'
TargetObject          : 
CategoryInfo          : NotSpecified: (:) 
                        [New-AzureRmResourceGroupDeployment], Exception
FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implem
                        entation.NewAzureResourceGroupDeploymentCmdlet

如果我们在挂起时登录虚拟机并手动执行C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.7\enable.cmd,则扩展会成功。

此时,我们想知道这是否是Azure本身的问题,因为我们的自定义脚本本身甚至没有执行。我们可以查看更多日志来诊断此挂起吗?

2 个答案:

答案 0 :(得分:0)

这已被Azure支持人员确认为Azure自定义脚本扩展中的错误,预计解决日期为2017年7月。

答案 1 :(得分:0)

尝试使用自定义脚本扩展(版本1.9)以及其他资源部署VM时遇到类似问题,使用Azure CLI 2.0中的ARM模板。手动执行enable.cmd的OP所描述的解决方法没有任何效果,对我来说问题是100%的时间都在发生。

这是我的ARM模板的CustomScriptExtension部分。

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "vm/CustomScriptExtension",
    "location": "westus",
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.9",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "fileUris": [
                "https://myblobsubdomain.blob.core.windows.net/container/my-script.ps1"
            ],
            "commandToExecute": ".\\my-script.ps1"
        }
    }
}

即使是单线"回声"脚本,这个过程似乎永远悬挂(我从来没有让它运行足够长的时间来查看它是否会超时),在Azure门户中为扩展名列出了Transitioning状态。我能够确认脚本的任何部分都没有运行。

原来问题是我的commandToExecute,特别是我试图用.\my-script.ps1运行脚本。一旦我将其更改为直接调用powershell命令,问题就消失了,我的脚本成功运行了!

以下是我的ARM模板相关部分的最终工作版本。

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "vm/CustomScriptExtension",
    "location": "westus",
    "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.9",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "fileUris": [
                "https://myblobsubdomain.blob.core.windows.net/container/my-script.ps1"
            ],
            "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File ./my-script.ps1"
        }
    }
}

请注意,指定-ExecutionPolicy Unrestricted对于脚本实际运行也是必需的,但省略它不会导致转换问题。