我知道可以为属性值提供条件输出,但是可以有条件属性本身。例如,我有创建Microsoft.Compute/VirtualMachine
的模板,它对于Windows和Linux都是相同的模板。但是对于Windows,我需要指定Linux不存在的属性("licenseType": "Windows_Server")
。此属性的存在将使部署失败,错误为The property 'LicenseType' cannot be used together with property 'linuxConfiguration'
我试图弄清楚是否有可能仅在Windows映像中包含此属性,同时保持模板不变?
答案 0 :(得分:1)
是的,有可能,但是很老套。几个选项:
让我扩大第二位:
"variables": {
"baseObject": {
"propertyOne": "xxx",
"propertyTwo": "yyy
}
"additionalObject: {
"optionalProperty": "zzz"
}
}
,然后在您的对象中可以执行以下操作:
"property": "[if(something, variables('baseObject'), # new line for readability
union(variables('baseObject'), variables('additionalObject') ))]"
答案 1 :(得分:1)
这是我根据先前的答案以及评论所做的最终结果
"isWindowsOS": "[equals(parameters('ImageReferenceOffer'), 'WindowsServer')]"
"properties": {
"licenseType": "[if(variables('isWindowsOS'), 'Windows_Server', json('null'))]",