Azure ARM模板单元测试

Sac*_*rma 7 templates azure azure-powershell azure-resource-manager

如何测试Azure ARM模板并验证它们是否从本地VM正确写入.我从Power Shell尝试过,但它只是验证.我想单元测试ARM模板

Way*_*ang 13

您可以使用PESTER对ARM模板进行单元测试.如果您不熟悉pester,可以参考本文档.

示例ARM模板

正在测试的示例模板允许选择是否将托管或非托管磁盘用于VM.该模板可以在这里找到https://github.com/bentaylorwork/azure-arm-templates/tree/master/disk-management-selection.

示例Pester测试 下面的Pester测试将根据用户输入vm的磁盘是否应基于托管或非托管磁盘来检查是否正在部署正确的磁盘类型.该文件可在此处找到:https: //github.com/bentaylorwork/azure-arm-templates/blob/master/disk-management-selection/tests/unit.tests.ps1 您可以将其作为test.ps1文件保存到本地计算机.

运行测试

注意:博客的脚本有一个未定义的错误 $parameterHash,因此,您可以使用以下脚本执行:

<# 
    Steps to run:
    1) Login to Azure
    2) Select correct subscription
    3) Alter the path below to where you have the have saved the pester test locally
#>

$pesterParamters = @{
    Path       = 'C:\Users\Administrator\Desktop\test.ps1'
    Parameters = @{
                        templateUri                 = 'https://raw.githubusercontent.com/bentaylorwork/azure-arm-templates/master/disk-management-selection/azuredeploy.json'
                        templateParameterObject     = @{
                            resourcePrefix = 'pester'
                            adminPassword  = 'SuperSecurePlainTextPassword123!!'
                        }
                  }
}

$parameterHash= @{
                            resourcePrefix = 'pester'
                            adminPassword  = 'SuperSecurePlainTextPassword123!!'
                        }

Invoke-Pester -Script $pesterParamters
Run Code Online (Sandbox Code Playgroud)

成功测试的示例输出

在此输入图像描述

您可以在此博客中查看有关使用pester的ARM模板中的单元测试条件的更多详细信息.

此外,我还建议使用一种工具来检查ARM模板:Azure ARM模板检查器.这是一个快速而又脏的工具,用于检查模板中使用的所有参数或变量是否已定义.您可以在此链接中查看有关ARM模板检查器的更多详细信息.