プロパティ値の条件付き出力を使用するオプションがあることを理解していますが、条件付きプロパティ自体を使用することは可能ですか?たとえば、Microsoft.Compute/VirtualMachine
を作成するテンプレートがあり、WindowsとLinuxの両方で同じテンプレートです。しかし、Windowsの場合、Linuxには存在しないプロパティ("licenseType": "Windows_Server")
を指定する必要があります。このプロパティがあると、エラーThe property 'LicenseType' cannot be used together with property 'linuxConfiguration'
が発生してデプロイメントが失敗します
テンプレートを同じにしたまま、このプロパティをWindowsイメージのみに含めることができるかどうかを確認しようとしていますか?
はい、それは可能ですが、ハックです。いくつかのオプション:
2つ目を少し拡張してみましょう。
"variables": {
"baseObject": {
"propertyOne": "xxx",
"propertyTwo": "yyy
}
"additionalObject: {
"optionalProperty": "zzz"
}
}
そして、あなたのオブジェクトであなたは行うことができます:
"property": "[if(something, variables('baseObject'), # new line for readability
union(variables('baseObject'), variables('additionalObject') ))]"
これは、前回の回答とコメントに基づいて私がやっていることです
"isWindowsOS": "[equals(parameters('ImageReferenceOffer'), 'WindowsServer')]"
"properties": { "licenseType": "[if(variables('isWindowsOS'), 'Windows_Server', json('null'))]",