练习 - 使用 ARM 模板测试工具包对模板应用最佳做法
你是 Tailwind Traders 公司开发团队的成员。 在工作当中,你需要创作 ARM 资源管理器 (ARM) 模板来部署和管理云中的资源。 你需要确保在部署资源之前模板遵循一些合理做法。 你选择使用 ARM 模板测试工具包来帮助分析模板,这样就可以纠正任何问题。
设置测试环境
该工具是 PowerShell 模块。 若要能够运行该工具,请使用以下步骤:
- 安装 PowerShell 模块。 根据使用的是 Linux、Mac 还是 Windows,此任务的执行方式有所不同。
- 下载模块。 模块托管在 GitHub 存储库中。 可从此处下载或通过
git clone
命令获取。 - 导入模块。 此步骤只是在 PowerShell 会话中输入的一行指令,这将使 ARM-TTK 命令可用。
安装 PowerShell
若要安装 PowerShell,请按照在 Linux 上安装 PowerShell 中的说明进行操作。
在终端中运行
pwsh
来验证安装:pwsh
输出如下所示:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
下载测试工具包
该测试工具包位于 GitHub 存储库中。 选择执行下列操作之一:
运行
git clone
以克隆存储库:git clone https://github.com/Azure/arm-ttk.git
通过浏览器,将存储库下载为 .zip 文件。
检查测试工具包
你刚才已将测试工具包下载到你选择的目录中。 让我们大致了解一下目录结构。 (如果你选择下载 .zip 文件而不是运行 git clone
命令,请确保已解压缩该文件。)如果要转到 ARM 测试工具包的目录,应具有如下所示的目录结构:
-| arm-ttk/
-| unit-tests/
-| CODE_OF_CONDUCT.md
-| LICENCE.md
-| README.md
-| SECURITY.md
测试工具包位于子目录 /arm-ttk 中。
创建模板文件
选择目录,然后创建一个名为 azuredeploy.json 的文件。
警告
确保所选目录为空,不包含任何子目录。
为该目录提供以下内容:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the resources."
}
}
},
"resources": [{
"location": "westus"
}]
}
记下模板文件的位置。 可在终端中运行 pwd
命令来输出路径。 稍后在运行测试工具包时,将使用此路径作为参数。
通过运行测试工具包来检测并修复模板相关问题
建议启动 Visual Studio Code 和集成终端。
你将在包含部署模板的路径上运行测试工具包,并通过更改模板来修复其检测到的所有错误。
警告
在本练习中扫描一个模板文件。 测试工具包会扫描指定目录下的所有文件。 这样做是因为部署可包含多个文件。 请确保 azuredeploy.json 文件所在的目录下不包含任何 JSON 文件。
在终端中,转到 azuredeploy.json 文件所在的路径。 运行以下命令来启动 Visual Studio Code:
code .
备注
如果路径中没有 Visual Studio Code,则手动打开 Visual Studio Code 并打开模板目录。
在 Visual Studio Code 中,通过从顶部菜单中选择“终端”>“新终端”来打开集成终端。 在终端中运行以下命令,启动 PowerShell shell:
pwsh
应看到与以下内容类似的输出:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
分析模板
运行
Import-Module
,以便能够从任何位置运行测试。备注
在导入模块之前,将 path/to/arm-ttk/arm-ttk.psd1 替换为已下载的测试工具包的路径。
Import-Module path/to/arm-ttk/arm-ttk.psd1
提示
如果将工具下载或克隆到“下载”目录,则路径将类似于 /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1。
现在可以使用该工具了。 只要处于同一 PowerShell 会话中,就无需再次运行导入命令。
运行带有
-TemplatePath
参数的Test-AzTemplate
,该参数指向模板文件路径(文件名除外)的位置:Test-AzTemplate -TemplatePath .
你会在终端中看到如下所示的输出:
Validating deploy\azuredeploy.json deploymentTemplate [+] adminUsername Should Not Be A Literal (4 ms) [+] apiVersions Should Be Recent (2 ms) [+] artifacts parameter (1 ms) [+] DependsOn Best Practices (2 ms) [+] Deployment Resources Must Not Be Debug (2 ms) [+] DeploymentTemplate Must Not Contain Hardcoded Uri (1 ms) [+] DeploymentTemplate Schema Is Correct (1 ms) [+] Dynamic Variable References Should Not Use Concat (1 ms) [+] IDs Should Be Derived From ResourceIDs (3 ms) [+] Location Should Not Be Hardcoded (1 ms) [+] ManagedIdentityExtension must not be used (2 ms) [+] Min And Max Value Are Numbers (1 ms) [+] Outputs Must Not Contain Secrets (4 ms) [-] Parameters Must Be Referenced (2 ms) Unreferenced parameter: location [+] Parameters Property Must Exist (1 ms) [+] providers apiVersions Is Not Permitted (1 ms) [+] ResourceIds should not contain (1 ms) [-] Resources Should Have Location (8 ms) Resource Location must be an expression or 'global' [+] Secure String Parameters Cannot Have Default (1 ms) [+] Template Should Not Contain Blanks (1 ms) [+] Variables Must Be Referenced (1 ms) [+] Virtual Machines Should Not Be Preview (3 ms) [+] VM Images Should Use Latest Version (1 ms) [+] VM Size Should Be A Parameter (3 ms)
在输出中,记下两个测试是如何失败的:“资源应具有位置”和“必须引用参数”。 前缀
[-]
表示失败的测试。若要了解具体情况,请打开 azuredeploy.json 文件。 它应如下所示:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for the resources." } } }, "resources": [{ "location": "westus" }] }
测试失败的原因有两个:
- 未使用 location 参数。 例如,此错误消息可能表示过去使用了该参数,却忘了将其清除。 也可能表示应使用该参数,但忘了更新代码。
- location 属性设置为硬编码字符串 westus。 使用此选项并不是一个好的做法,因为你希望能够在部署时使用输入参数来控制资源的位置。
将修补程序应用于模板
如何修复失败的测试?
如测试所示,我们可以尝试将“westus”替换为文本“全局”。 但是,这样做只能解决其中一个问题。 很可能需要使用 location 参数并将资源位置设置为相应的值。
原因有两个。 你可以将 location 参数设置为部署参数,但如果你在运行部署时没有设置 location 参数,也可以合理地将 resourceGroup().location 设置回默认值。
在资源数组中找到第一个资源项,并将以下内容:
"resources": [{ "location": "westus" }]
替换为此内容:
"resources": [{ "location": "[parameters('location')]" }]
再次在集成终端中运行测试工具来验证修复情况:
Test-AzTemplate -TemplatePath .
现在将获得一个表示所有测试都通过的输出:
Validating deploy\azuredeploy.json deploymentTemplate [+] adminUsername Should Not Be A Literal (6 ms) [+] apiVersions Should Be Recent (2 ms) [+] artifacts parameter (1 ms) [+] DependsOn Best Practices (1 ms) [+] Deployment Resources Must Not Be Debug (1 ms) [+] DeploymentTemplate Must Not Contain Hardcoded Uri (1 ms) [+] DeploymentTemplate Schema Is Correct (1 ms) [+] Dynamic Variable References Should Not Use Concat (1 ms) [+] IDs Should Be Derived From ResourceIDs (4 ms) [+] Location Should Not Be Hardcoded (1 ms) [+] ManagedIdentityExtension must not be used (1 ms) [+] Min And Max Value Are Numbers (1 ms) [+] Outputs Must Not Contain Secrets (1 ms) [+] Parameters Must Be Referenced (1 ms) [+] Parameters Property Must Exist (1 ms) [+] providers apiVersions Is Not Permitted (1 ms) [+] ResourceIds should not contain (1 ms) [+] Resources Should Have Location (1 ms) [+] Secure String Parameters Cannot Have Default (1 ms) [+] Template Should Not Contain Blanks (1 ms) [+] Variables Must Be Referenced (1 ms) [+] Virtual Machines Should Not Be Preview (4 ms) [+] VM Images Should Use Latest Version (1 ms) [+] VM Size Should Be A Parameter (4 ms)
成功! 你已运行测试工具,找到错误,并予以修复。
按照在 macOS 上安装 PowerShell 中的说明进行操作。
在终端中运行
pwsh
来验证安装:pwsh
输出如下所示:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
下载测试工具包
该测试工具包位于 GitHub 存储库中。 选择执行下列操作之一:
运行
git clone
以克隆存储库:git clone https://github.com/Azure/arm-ttk.git
通过浏览器,将存储库下载为 .zip 文件。
检查测试工具包
你刚才已将测试工具包下载到你选择的目录中。 让我们大致了解一下目录结构。 (如果你选择下载 .zip 文件而不是运行 git clone
命令,请确保已解压缩该文件。)如果要转到 ARM 测试工具包的目录,应具有如下所示的目录结构:
-| arm-ttk/
-| unit-tests/
-| CODE_OF_CONDUCT.md
-| LICENCE.md
-| README.md
-| SECURITY.md
测试工具包位于子目录 /arm-ttk 中。
创建模板文件
选择目录,然后创建一个名为 azuredeploy.json 的文件。
警告
确保所选目录为空,不包含任何子目录。
为该目录提供以下内容:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the resources."
}
}
},
"resources": [{
"location": "westus"
}]
}
记下模板文件的位置。 可在终端中运行 pwd
命令来输出路径。 稍后在运行测试工具包时,将使用此路径作为参数。
通过运行测试工具包来检测并修复模板相关问题
建议启动 Visual Studio Code 和集成终端。
你将在包含部署模板的路径上运行测试工具包,并通过更改模板来修复其检测到的所有错误。
警告
在本练习中扫描一个模板文件。 测试工具包会扫描指定目录下的所有文件。 这样做是因为部署可包含多个文件。 请确保 azuredeploy.json 文件所在的目录下不包含任何 JSON 文件。
在终端中,转到 azuredeploy.json 文件所在的路径。 运行以下命令来启动 Visual Studio Code:
code .
备注
如果路径中没有 Visual Studio Code,则手动打开 Visual Studio Code 并打开模板目录。
在 Visual Studio Code 中,通过从顶部菜单中选择“终端”>“新终端”来打开集成终端。 在终端中运行以下命令,启动 PowerShell shell:
pwsh
应看到与以下内容类似的输出:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
分析模板
运行
Import-Module
,以便能够从任何位置运行测试。备注
在导入模块之前,将 path/to/arm-ttk/arm-ttk.psd1 替换为已下载的测试工具包的路径。
Import-Module path/to/arm-ttk/arm-ttk.psd1
提示
如果将工具下载或克隆到“下载”目录,则路径将类似于 /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1。
现在可以使用该工具了。 只要处于同一 PowerShell 会话中,就无需再次运行导入命令。
运行带有
-TemplatePath
参数的Test-AzTemplate
,该参数指向模板文件路径(文件名除外)的位置:Test-AzTemplate -TemplatePath .
你会在终端中看到如下所示的输出:
Validating deploy\azuredeploy.json deploymentTemplate [+] adminUsername Should Not Be A Literal (4 ms) [+] apiVersions Should Be Recent (2 ms) [+] artifacts parameter (1 ms) [+] DependsOn Best Practices (2 ms) [+] Deployment Resources Must Not Be Debug (2 ms) [+] DeploymentTemplate Must Not Contain Hardcoded Uri (1 ms) [+] DeploymentTemplate Schema Is Correct (1 ms) [+] Dynamic Variable References Should Not Use Concat (1 ms) [+] IDs Should Be Derived From ResourceIDs (3 ms) [+] Location Should Not Be Hardcoded (1 ms) [+] ManagedIdentityExtension must not be used (2 ms) [+] Min And Max Value Are Numbers (1 ms) [+] Outputs Must Not Contain Secrets (4 ms) [-] Parameters Must Be Referenced (2 ms) Unreferenced parameter: location [+] Parameters Property Must Exist (1 ms) [+] providers apiVersions Is Not Permitted (1 ms) [+] ResourceIds should not contain (1 ms) [-] Resources Should Have Location (8 ms) Resource Location must be an expression or 'global' [+] Secure String Parameters Cannot Have Default (1 ms) [+] Template Should Not Contain Blanks (1 ms) [+] Variables Must Be Referenced (1 ms) [+] Virtual Machines Should Not Be Preview (3 ms) [+] VM Images Should Use Latest Version (1 ms) [+] VM Size Should Be A Parameter (3 ms)
前面的输出显示了两个测试是如何失败的:“资源应具有位置”和“必须引用参数”。 前缀
[-]
表示失败的测试。若要了解具体情况,请打开 azuredeploy.json 文件。 它应如下所示:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for the resources." } } }, "resources": [{ "location": "westus" }] }
测试失败的原因有两个:
- 未使用 location 参数。 例如,此错误消息可能表示过去使用了该参数,却忘了将其清除。 也可能表示应使用该参数,但忘了更新代码。
- location 属性设置为硬编码字符串 westus。 使用此选项并不是一个好的做法,因为你希望能够在部署时使用输入参数来控制资源的位置。
将修补程序应用于模板
如何修复失败的测试?
如测试所示,我们可以尝试将“westus”替换为文本“全局”。 但是,这样做只能解决其中一个问题。 很可能需要使用 location 参数并将资源位置设置为相应的值。
原因有两个。 你可以将 location 参数设置为部署参数,但如果你在运行部署时没有设置 location 参数,也可以合理地将 resourceGroup().location 设置回默认值。
在资源数组中找到第一个资源项,并将以下内容:
"resources": [{ "location": "westus" }]
替换为此内容:
"resources": [{ "location": "[parameters('location')]" }]
再次在集成终端中运行测试工具来验证修复情况:
Test-AzTemplate -TemplatePath .
现在将获得一个表示所有测试都通过的输出:
Validating deploy\azuredeploy.json deploymentTemplate [+] adminUsername Should Not Be A Literal (6 ms) [+] apiVersions Should Be Recent (2 ms) [+] artifacts parameter (1 ms) [+] DependsOn Best Practices (1 ms) [+] Deployment Resources Must Not Be Debug (1 ms) [+] DeploymentTemplate Must Not Contain Hardcoded Uri (1 ms) [+] DeploymentTemplate Schema Is Correct (1 ms) [+] Dynamic Variable References Should Not Use Concat (1 ms) [+] IDs Should Be Derived From ResourceIDs (4 ms) [+] Location Should Not Be Hardcoded (1 ms) [+] ManagedIdentityExtension must not be used (1 ms) [+] Min And Max Value Are Numbers (1 ms) [+] Outputs Must Not Contain Secrets (1 ms) [+] Parameters Must Be Referenced (1 ms) [+] Parameters Property Must Exist (1 ms) [+] providers apiVersions Is Not Permitted (1 ms) [+] ResourceIds should not contain (1 ms) [+] Resources Should Have Location (1 ms) [+] Secure String Parameters Cannot Have Default (1 ms) [+] Template Should Not Contain Blanks (1 ms) [+] Variables Must Be Referenced (1 ms) [+] Virtual Machines Should Not Be Preview (4 ms) [+] VM Images Should Use Latest Version (1 ms) [+] VM Size Should Be A Parameter (4 ms)
成功! 你已运行测试工具,找到错误,并予以修复。
- 按照在 Windows 上安装 PowerShell 中的说明进行操作。
- 从 Visual Studio Code 安装 PowerShell 扩展。
下载测试工具包
该测试工具包位于 GitHub 存储库中。 选择执行下列操作之一:
运行
git clone
以克隆存储库:git clone https://github.com/Azure/arm-ttk.git
通过浏览器,将存储库下载为 .zip 文件。
检查测试工具包
你刚才已将测试工具包下载到你选择的目录中。 让我们大致了解一下目录结构。 (如果你选择下载 .zip 文件而不是运行 git clone
命令,请确保已解压缩该文件。)如果要转到 ARM 测试工具包的目录,应具有如下所示的目录结构:
-| arm-ttk\
-| unit-tests\
-| CODE_OF_CONDUCT.md
-| LICENCE.md
-| README.md
-| SECURITY.md
测试工具包位于子目录 \arm-ttk 中。
创建模板文件
在所选目录(如 C:\Temp)中创建一个名为 azuredeploy.json 的文件。
警告
确保所选目录为空,不包含任何子目录。
为该目录提供以下内容:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the resources."
}
}
},
"resources": [{
"location": "westus"
}]
}
记下模板文件的位置。 稍后在运行测试工具包时,将使用此目录路径(例如 C:\Temp)作为参数。
通过运行测试工具包来检测并修复模板相关问题
建议启动 Visual Studio Code 和集成终端。
你将在包含部署模板的路径上运行测试工具包,并通过更改模板来修复其检测到的所有错误。
警告
在本练习中扫描一个模板文件。 测试工具包会扫描指定目录下的所有文件。 这样做是因为部署可包含多个文件。 请确保 azuredeploy.json 文件所在的目录下不包含任何 JSON 文件。
在终端中,转到 azuredeploy.json 文件所在的路径。 运行以下命令来启动 Visual Studio Code:
code .
备注
如果路径中没有 Visual Studio Code,则手动打开 Visual Studio Code 并打开模板目录。
从 Visual Studio Code,打开命令面板并选择命令“PowerShell:显示集成控制台”。
分析模板
在 PowerShell 终端中运行
Import-Module
:备注
在导入模块之前,将 path\to\arm-ttk\arm-ttk.psd1 替换为已下载的测试工具包的路径。
Import-Module path\to\arm-ttk\arm-ttk.psd1
上述命令将指出测试工具包模块的位置。
提示
如果将工具下载或克隆到“下载”目录,则路径将类似于 C:\Users\<user>\Downloads\arm-ttk\arm-ttk\arm-ttk.psd1。
现在可以使用该工具了。 只要处于同一 PowerShell 会话中,就无需再次运行导入命令。
注意
如果启动新的 PowerShell 会话,则需要再次运行
Import-Module
命令。在 PowerShell 终端中运行
Test-AzTemplate
,启动测试运行:Test-AzTemplate -TemplatePath .
你会在终端中看到如下所示的输出:
Validating deploy\azuredeploy.json JSONFiles Should Be Valid [+] JSONFiles Should Be Valid (16 ms) Fail : 0 Total : 1 Pass : 1 adminUsername Should Not Be A Literal [+] adminUsername Should Not Be A Literal (6 ms) apiVersions Should Be Recent In Reference Functions [+] apiVersions Should Be Recent In Reference Functions (10 ms) apiVersions Should Be Recent [+] apiVersions Should Be Recent (7 ms) artifacts parameter [+] artifacts parameter (5 ms) CommandToExecute Must Use ProtectedSettings For Secrets [+] CommandToExecute Must Use ProtectedSettings For Secrets (7 ms) DependsOn Best Practices [+] DependsOn Best Practices (6 ms) Deployment Resources Must Not Be Debug [+] Deployment Resources Must Not Be Debug (5 ms) DeploymentTemplate Must Not Contain Hardcoded Uri [+] DeploymentTemplate Must Not Contain Hardcoded Uri (5 ms) DeploymentTemplate Schema Is Correct [+] DeploymentTemplate Schema Is Correct (4 ms) Dynamic Variable References Should Not Use Concat [+] Dynamic Variable References Should Not Use Concat (4 ms) IDs Should Be Derived From ResourceIDs [+] IDs Should Be Derived From ResourceIDs (6 ms) deploymentTemplate [-] Location Should Not Be Hardcoded (13 ms) Location value of 'westus' on resource '' must be an expression or 'global'. Line: 14, Column: 9 ManagedIdentityExtension must not be used [+] ManagedIdentityExtension must not be used (5 ms) Min And Max Value Are Numbers [+] Min And Max Value Are Numbers (5 ms) Outputs Must Not Contain Secrets [+] Outputs Must Not Contain Secrets (5 ms) Parameter Types Should Be Consistent [+] Parameter Types Should Be Consistent (9 ms) deploymentTemplate [-] Parameters Must Be Referenced (6 ms) Unreferenced parameter: location Line: 5, Column: 9 Password params must be secure [+] Password params must be secure (11 ms) providers apiVersions Is Not Permitted [+] providers apiVersions Is Not Permitted (5 ms) ResourceIds should not contain [+] ResourceIds should not contain (5 ms) deploymentTemplate [-] Resources Should Have Location (5 ms) Resource Location must be an expression or 'global' Resources Should Not Be Ambiguous [+] Resources Should Not Be Ambiguous (7 ms) Secure Params In Nested Deployments [+] Secure Params In Nested Deployments (10 ms) Secure String Parameters Cannot Have Default [+] Secure String Parameters Cannot Have Default (7 ms) Template Should Not Contain Blanks [+] Template Should Not Contain Blanks (5 ms) URIs Should Be Properly Constructed [+] URIs Should Be Properly Constructed (8 ms) Variables Must Be Referenced [+] Variables Must Be Referenced (5 ms) Virtual Machines Should Not Be Preview [+] Virtual Machines Should Not Be Preview (8 ms) VM Images Should Use Latest Version [+] VM Images Should Use Latest Version (5 ms) VM Size Should Be A Parameter [+] VM Size Should Be A Parameter (5 ms) Fail : 3 Total : 31 Pass : 28
前面的输出显示了三个测试失败的原因:位置不应硬编码、必须引用参数和资源应具有位置。 前缀
[-]
表示失败的测试。若要了解具体情况,请打开 azuredeploy.json 文件。 它应如下所示:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for the resources." } } }, "resources": [{ "location": "westus" }] }
测试失败的原因有两个:
- 未使用 location 参数。 例如,此错误消息可能表示过去使用了该参数,却忘了将其清除。 也可能表示应使用该参数,但忘了更新代码。
- location 属性设置为硬编码字符串 westus。 使用此选项并不是一个好的做法,因为你希望能够在部署时使用输入参数来控制资源的位置。
将修补程序应用于模板
如何修复失败的测试?
如测试所示,我们可以尝试将“westus”替换为文本“全局”。 但是,这样做只能解决其中一个问题。 很可能需要使用 location 参数并将资源位置设置为相应的值。
原因有两个。 你可以将 location 参数设置为部署参数,但如果你在运行部署时没有设置 location 参数,也可以合理地将 resourceGroup().location 设置回默认值。
在资源数组中找到第一个资源项,并将以下内容:
"resources": [{ "location": "westus" }]
替换为此内容:
"resources": [{ "location": "[parameters('location')]" }]
再次运行
Test-AzTemplate
来运行测试工具:Test-AzTemplate -TemplatePath .
现在将获得一个表示所有测试都通过的输出:
Validating deploy\azuredeploy.json JSONFiles Should Be Valid [+] JSONFiles Should Be Valid (83 ms) Fail : 0 Total : 1 Pass : 1 adminUsername Should Not Be A Literal [+] adminUsername Should Not Be A Literal (36 ms) apiVersions Should Be Recent In Reference Functions [+] apiVersions Should Be Recent In Reference Functions (57 ms) piVersions Should Be Recent [+] apiVersions Should Be Recent (67 ms) artifacts parameter [+] artifacts parameter (19 ms) CommandToExecute Must Use ProtectedSettings For Secrets [+] CommandToExecute Must Use ProtectedSettings For Secrets (93 ms) DependsOn Best Practices [+] DependsOn Best Practices (52 ms) Deployment Resources Must Not Be Debug [+] Deployment Resources Must Not Be Debug (77 ms) DeploymentTemplate Must Not Contain Hardcoded Uri [+] DeploymentTemplate Must Not Contain Hardcoded Uri (18 ms) DeploymentTemplate Schema Is Correct [+] DeploymentTemplate Schema Is Correct (73 ms) Dynamic Variable References Should Not Use Concat [+] Dynamic Variable References Should Not Use Concat (72 ms) IDs Should Be Derived From ResourceIDs [+] IDs Should Be Derived From ResourceIDs (15 ms) Location Should Not Be Hardcoded [+] Location Should Not Be Hardcoded (24 ms) ManagedIdentityExtension must not be used [+] ManagedIdentityExtension must not be used (143 ms) Min And Max Value Are Numbers [+] Min And Max Value Are Numbers (23 ms) Outputs Must Not Contain Secrets [+] Outputs Must Not Contain Secrets (160 ms) Parameter Types Should Be Consistent [+] Parameter Types Should Be Consistent (13 ms) Parameters Must Be Referenced [+] Parameters Must Be Referenced (13 ms) Password params must be secure [+] Password params must be secure (12 ms) providers apiVersions Is Not Permitted [+] providers apiVersions Is Not Permitted (79 ms) ResourceIds should not contain [+] ResourceIds should not contain (12 ms) Resources Should Have Location [+] Resources Should Have Location (17 ms) Resources Should Not Be Ambiguous [+] Resources Should Not Be Ambiguous (17 ms) Secure Params In Nested Deployments [+] Secure Params In Nested Deployments (17 ms) Secure String Parameters Cannot Have Default [+] Secure String Parameters Cannot Have Default (16 ms) Template Should Not Contain Blanks [+] Template Should Not Contain Blanks (83 ms) URIs Should Be Properly Constructed [+] URIs Should Be Properly Constructed (108 ms) Variables Must Be Referenced [+] Variables Must Be Referenced (111 ms) Virtual Machines Should Not Be Preview [+] Virtual Machines Should Not Be Preview (16 ms) VM Images Should Use Latest Version [+] VM Images Should Use Latest Version (22 ms) VM Size Should Be A Parameter [+] VM Size Should Be A Parameter (133 ms) Fail : 0 Total : 31 Pass : 31
成功! 你已运行测试工具,找到错误,并予以修复。
现在,可以在模板上运行测试了。