如何排查 Azure ARM 模板验证错误?
How can I troubleshoot Azure ARM template validation errors?
我对 Azure ARM 模板文件做了一些小改动,现在当我尝试通过 xplat cli 进行部署或验证时,我收到了这条消息。
error: InvalidTemplateDeployment : The template deployment
'fakedDeploymentName' is not valid according to the validation
procedure. The tracking id is '\some kind of GUID here\'.
See inner errors for details. Please see http://aka.ms/arm-deploy for
usage details.
error: PreflightValidationCheckFailed : Preflight
validation failed. Please refer to the details for the specific
errors.
我很想解决这个问题,但我在控制台上没有看到任何 "inner errors"。它甚至每次都给我一个唯一的 GUID,这意味着我可以使用这个 GUID 来查找信息更丰富的消息。我在哪里可以查看更详细的错误? (尚未就错误的真正来源寻求帮助)
我认为跟踪 ID 是为了技术支持查看他们的日志,而不是为了用户。
关于您的确切问题,您需要查看日志 - reference.
另一个验证模板的好方法是使用 Resource Explorer.
确保您运行使用的是最新版本的 CLI,我们正在努力冒出详细的错误。如果还是没听懂,请告诉我们 https://github.com/Azure/azure-xplat-cli/issues
然后,如果日志没有向您显示详细信息,运行 使用 -vv 开关的部署,详细的调试输出(虽然冗长)将包含所有错误消息,您通常可以筛选并找出具体故障。
azure group deployment create ... --debug
Powershell:
New-AzResourceGroupDeployment ... -debug
登录到 Azure 门户 portal.azure.com。
打开Activity日志
在活动列表中找到操作名称为验证的记录。它应该有一个红色感叹号,因为它失败了。
点击那个记录。然后单击底部的 JSON 选项卡。阅读并在返回的 Json 深处某处,您可能会在 statusMessage 中发现错误,例如 "The storage account named helloworld is already taken."
我在同一期中 运行。基本上,我无法获得任何详细信息 "InvalidTemplateDeployment"。
我在 Visual Studio: Azure 资源组项目模板中添加了我的 ARM 模板并尝试部署它。我在“输出”选项卡中获得了详细信息。这帮助我解决了我的问题。
在我的例子中,它是集群的名称,它只能是小写字母和数字。
运行 提供跟踪 ID 的以下 PowerShell Azure cmdlet:
Get-AzureRMLog -CorrelationId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -DetailedOutput
建立在@nftw 上:
$deploymentGroupName = 'deploymentGroupName'
$correlationId = ((Get-AzureRMLog -ResourceGroup $deploymentGroupName)[0]).CorrelationId
$logentry = (Get-AzureRMLog -CorrelationId $correlationId -DetailedOutput)
#$logentry
$rawStatusMessage = $logentry.Properties
$status = $rawStatusMessage.Content.statusMessage | ConvertFrom-Json
$status.error.details
$status.error.details.details
基于 nftw 的回答...
为了 faster/easier 找到错误问题,我使用了 grep
和 less
以及如下变量:
$correlationId ='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # store your correlation ID here
Get-AzureRmLog -CorrelationId $correlationID -DetailedOutput | grep -C 10 $correlationID | less
在我的测试中,错误接近输出的顶部。您可以使用 less
和正斜杠键 / 并搜索 "error" 以更快地找到错误。
az vm list [--only-show-errors]
[--resource-group]
[--show-details]
[--subscription]
我对 Azure ARM 模板文件做了一些小改动,现在当我尝试通过 xplat cli 进行部署或验证时,我收到了这条消息。
error: InvalidTemplateDeployment : The template deployment 'fakedDeploymentName' is not valid according to the validation procedure. The tracking id is '\some kind of GUID here\'. See inner errors for details. Please see http://aka.ms/arm-deploy for usage details.
error: PreflightValidationCheckFailed : Preflight validation failed. Please refer to the details for the specific errors.
我很想解决这个问题,但我在控制台上没有看到任何 "inner errors"。它甚至每次都给我一个唯一的 GUID,这意味着我可以使用这个 GUID 来查找信息更丰富的消息。我在哪里可以查看更详细的错误? (尚未就错误的真正来源寻求帮助)
我认为跟踪 ID 是为了技术支持查看他们的日志,而不是为了用户。 关于您的确切问题,您需要查看日志 - reference.
另一个验证模板的好方法是使用 Resource Explorer.
确保您运行使用的是最新版本的 CLI,我们正在努力冒出详细的错误。如果还是没听懂,请告诉我们 https://github.com/Azure/azure-xplat-cli/issues
然后,如果日志没有向您显示详细信息,运行 使用 -vv 开关的部署,详细的调试输出(虽然冗长)将包含所有错误消息,您通常可以筛选并找出具体故障。
azure group deployment create ... --debug
Powershell:
New-AzResourceGroupDeployment ... -debug
登录到 Azure 门户 portal.azure.com。
打开Activity日志
在活动列表中找到操作名称为验证的记录。它应该有一个红色感叹号,因为它失败了。
点击那个记录。然后单击底部的 JSON 选项卡。阅读并在返回的 Json 深处某处,您可能会在 statusMessage 中发现错误,例如 "The storage account named helloworld is already taken."
我在同一期中 运行。基本上,我无法获得任何详细信息 "InvalidTemplateDeployment"。
我在 Visual Studio: Azure 资源组项目模板中添加了我的 ARM 模板并尝试部署它。我在“输出”选项卡中获得了详细信息。这帮助我解决了我的问题。
在我的例子中,它是集群的名称,它只能是小写字母和数字。
运行 提供跟踪 ID 的以下 PowerShell Azure cmdlet:
Get-AzureRMLog -CorrelationId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -DetailedOutput
建立在@nftw 上:
$deploymentGroupName = 'deploymentGroupName'
$correlationId = ((Get-AzureRMLog -ResourceGroup $deploymentGroupName)[0]).CorrelationId
$logentry = (Get-AzureRMLog -CorrelationId $correlationId -DetailedOutput)
#$logentry
$rawStatusMessage = $logentry.Properties
$status = $rawStatusMessage.Content.statusMessage | ConvertFrom-Json
$status.error.details
$status.error.details.details
基于 nftw 的回答...
为了 faster/easier 找到错误问题,我使用了 grep
和 less
以及如下变量:
$correlationId ='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # store your correlation ID here
Get-AzureRmLog -CorrelationId $correlationID -DetailedOutput | grep -C 10 $correlationID | less
在我的测试中,错误接近输出的顶部。您可以使用 less
和正斜杠键 / 并搜索 "error" 以更快地找到错误。
az vm list [--only-show-errors]
[--resource-group]
[--show-details]
[--subscription]