在Azure ARM模板中使用条件
有没有办法在模板中使用条件语句 例如,我正在构建一个模板,该模板将在QA和生产环境中安装带有数据磁盘的虚拟机,但在开发环境中没有数据磁盘。另一种情况是,只需要在prod虚拟机中安装一些扩展,而不需要在其他地方安装在Azure ARM模板中使用条件,azure,azure-resource-manager,Azure,Azure Resource Manager,有没有办法在模板中使用条件语句 例如,我正在构建一个模板,该模板将在QA和生产环境中安装带有数据磁盘的虚拟机,但在开发环境中没有数据磁盘。另一种情况是,只需要在prod虚拟机中安装一些扩展,而不需要在其他地方安装 非常感谢您的帮助。实现这一点的关键特性是: templateLink设置要包括的模板以及要传递给被调用模板的参数名称 "templateLink": { "uri": "[variables('sharedTemplateUrl')]", "contentVersio
非常感谢您的帮助。实现这一点的关键特性是:
设置要包括的模板以及要传递给被调用模板的参数名称templateLink
"templateLink": { "uri": "[variables('sharedTemplateUrl')]", "contentVersion": "1.0.0.0" }
根据其值,我们可以决定使用QA而不是Productoin配置newOrExisting
"newOrExisting": "new", "configHash": { "new": "[concat(parameters('templateBaseUrl'),'partials/QA.json')]", "existing": "[concat(parameters('templateBaseUrl'),'partials/Production.json')]" } "configTemplate": "[variables('configHash')[parameters('Settings').newOrExisting]]"
您可以看到哪个提供了更多详细信息。您可以利用新发布的比较函数来完成大部分工作 下面是一个示例,说明如何使用参数确定是否应部署存储帐户 参数:
"deployStorage": {
"type": "string"
},
资源:
{
"condition": "[equals(parameters('deployStorage'),'yes')]",
"name": "[variables('storageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "2017-06-01",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "Storage"
}
请注意资源中的新condition属性以及存储提供程序的最新API版本
参考:我发现了另一种使用子模板的方法,如下面的密码验证类型示例所示@nitinb显然,在该示例中没有使用嵌套\子模板并不困扰您…这似乎只适用于在模板之间动态更改-但是当您根本不想创建特定资源时,有时您会这样做,该怎么办?假设在prod中启用自动缩放,但在测试中不启用。@JimAho,现在可能有点老了,但请检查:。“2.可选择部署嵌套模板”。基本上,对于“不要这样做”选项,创建一个空白模板。更新:看起来有更好的方法:条件元素:这不是真的,但是没有直接支持条件逻辑,使用对象和变量也可以做类似的事情我在模板中使用condition元素,如果参数“deployStorage”未设置为“yes”,我希望它不会使用storageAccountName。但是,由于以下InvalidTemplate部署模板验证失败而出错:“未提供第“166”行和第“39”列的模板参数“name”的值。”如果我希望Azure在deployStorage设置为“否”时不请求资源参数,那么这里的条件元素是否是正确的选择?