我是Azure ARM模板的新手,我想做的就是利用Web应用程序,SQL Server等现有资源快速构建测试环境。 在尝试从现有资源的ARM模板进行部署时,遇到了一些问题,并且不确定是否有很好的方法来测试模板是否正常工作。
对于练习模板的部署,我使用Azure门户,并首先从Web app + SQL
Azure模板创建了一些资源。
(1)创建资源
(2)输入Web App + SQL
(3)设置资源名称和内容,然后完成。
然后转到源组并导出这些资源的ARM模板。
(1)转到资源组
(2)单击选中所有复选框
(3)导出模板
(4)下载
最后,使用此template.json进行部署。
(1)创建资源
(2)输入template
并选择Template deployment (deploy using custom template)
(3)在编辑器中构建自己的模板
(4)加载文件
(5)上传之前下载的template.json
(6)保存
(7)选择资源组并设置与先前创建的资源没有重复的资源名称。
(8)选中“我同意”复选框,然后单击“购买”按钮。
所以基本上我没有更改任何资源,只是导出并部署,部署失败。
这是错误消息:
{
"code": "DeploymentFailed",
"message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.",
"details": [
{
"code": "Conflict",
"message": "{\r\n \"status\": \"Failed\",\r\n \"error\": {\r\n \"code\": \"ResourceDeploymentFailure\",\r\n \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n \"details\": [\r\n {\r\n \"code\": \"InvalidParameterValue\",\r\n \"message\": \"Invalid value given for parameter Password. Specify a valid parameter value.\"\r\n }\r\n ]\r\n }\r\n}"
}
]
}
经过研究,我发现如果部署SQL Server,也需要在模板中设置管理员密码参数。
我想问的是,有没有一种构建ARM模板的好方法,您实际上并不需要去部署并获得错误消息来告诉您 缺少哪个参数?
或者您只是构建json文件,进行部署,然后尝试&错误...:S
答案 0 :(得分:0)
说实话,导出的模板有点狡猾。他们出口一些东西,但是不出口其他东西,他们确实出口了一些东西。它们还倾向于创建大量参数,而通常您可以避免使用前缀参数+名称的资源后缀,而其他一些东西也可以进行硬编码。为了简化您的生活,您可以使用here,它提供了一些intellisense和一些语法检查,但是一些intellisense是错误的(lol),并且如果模板没有显示任何语法错误,那并不意味着它会工作...
因此,唯一的真正方法是尝试部署\修复错误\重复。
答案 1 :(得分:0)
也许对你来说迟了,但可以帮助别人。导航到Azure文档以自动化ARM部署时,我发现此“ Whatif”功能似乎很新鲜。我尚无法测试,但绝对是我想要尝试部署任何东西之前要运行的东西。我假设这将进行一些依赖项检查。一旦测试完成,我将在这里更新。
这些是API参考文档:
https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-deploy-what-if