[英]How to diagnose an intermittent Azure Custom Script Extension hang?
我們正在使用通過MSDN提供的Windows-10-N-x64
Azure VM映像進行一些自動化,並且間歇性地看到自定義腳本擴展未能在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上的C:\\WindowsAzure\\Logs\\Plugins\\Microsoft.Compute.CustomScriptExtension\\1.7
也不顯示任何錯誤。
如果不采取任何措施,最終將收到超時錯誤。
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本身有關,因為自定義腳本本身甚至沒有執行。 我們還有其他日志可以用來診斷此掛起嗎?
Azure支持已確認這是Azure自定義腳本擴展中的錯誤,預計解決日期為2017年7月。
嘗試通過Azure CLI 2.0使用ARM模板嘗試將具有自定義腳本擴展(版本1.9)的VM以及其他資源部署到VM時遇到類似的問題。 OP手動執行enable.cmd
所描述的解決方法沒有任何效果,對我而言,此問題發生的可能性為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"
}
}
}
即使對於單行的“ echo”腳本,該過程似乎也永遠掛起了(我從未讓它運行足夠長的時間以查看它是否會超時),並且Azure門戶中的擴展列出了“正在過渡”狀態。 我能夠確認腳本的任何部分都沒有運行過。
原來,問題出在我的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
才能真正運行腳本,但是省略它不會導致過渡問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.