是否有验证导出的 Azure ARM 模板的好方法?
Is there a good way to verify exported Azure ARM template?
我是 Azure ARM 模板的新手,我想做的是从现有资源(如 Web 应用程序、SQL 服务器等)快速构建测试环境。
当我尝试从现有资源的 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) Select 资源组并设置资源名称不重复到之前创建的资源。
(8) 选中 "I agree" 复选框并单击购买按钮。
所以基本上我没有更改任何资源,只是导出和部署,部署失败。
这是错误信息:
{
"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 服务器,我也需要在模板中设置管理员密码参数。
我想问的是,有没有一种构建ARM模板的好方法,你不需要实际去部署并得到错误信息来告诉你
缺少哪个参数?
或者你只是构建 json 文件,部署,然后试错...:S
老实说,导出的模板有点不可靠。他们出口一些东西,但不出口其他东西,有些领域他们确实出口,有些则没有。他们还倾向于创建大量参数,而通常您可以使用前缀参数 + 名称的资源后缀,而其他一些东西也可以硬编码。为了稍微简化您的生活,您可以使用 VSCode Azure Resource Manager extension,它提供了一些智能感知和一些语法检查,但是有些智能感知是错误的(笑),如果模板没有显示任何语法错误,那么它并不是真正的意思会工作...
所以唯一真正的方法是尝试 deploy\fix errors\repeat。
也许你迟到了,但可以帮助别人。当导航到 Azure 文档以自动执行 ARM 部署时,我发现这个 'Whatif' 功能似乎很新鲜。我还不能测试它,但绝对是我想要 运行 在尝试部署任何东西之前。我假设这将进行一些依赖性检查。我测试后会在这里更新。
这些是 API 参考文档:
https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-deploy-what-if
我是 Azure ARM 模板的新手,我想做的是从现有资源(如 Web 应用程序、SQL 服务器等)快速构建测试环境。 当我尝试从现有资源的 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) Select 资源组并设置资源名称不重复到之前创建的资源。
(8) 选中 "I agree" 复选框并单击购买按钮。
所以基本上我没有更改任何资源,只是导出和部署,部署失败。
这是错误信息:
{
"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 服务器,我也需要在模板中设置管理员密码参数。
我想问的是,有没有一种构建ARM模板的好方法,你不需要实际去部署并得到错误信息来告诉你 缺少哪个参数?
或者你只是构建 json 文件,部署,然后试错...:S
老实说,导出的模板有点不可靠。他们出口一些东西,但不出口其他东西,有些领域他们确实出口,有些则没有。他们还倾向于创建大量参数,而通常您可以使用前缀参数 + 名称的资源后缀,而其他一些东西也可以硬编码。为了稍微简化您的生活,您可以使用 VSCode Azure Resource Manager extension,它提供了一些智能感知和一些语法检查,但是有些智能感知是错误的(笑),如果模板没有显示任何语法错误,那么它并不是真正的意思会工作...
所以唯一真正的方法是尝试 deploy\fix errors\repeat。
也许你迟到了,但可以帮助别人。当导航到 Azure 文档以自动执行 ARM 部署时,我发现这个 'Whatif' 功能似乎很新鲜。我还不能测试它,但绝对是我想要 运行 在尝试部署任何东西之前。我假设这将进行一些依赖性检查。我测试后会在这里更新。
这些是 API 参考文档:
https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-deploy-what-if