Je comprends qu'il existe une option pour avoir une sortie conditionnelle pour les valeurs de propriété, mais est-il possible d'avoir une propriété conditionnelle elle-même. Par exemple, j'ai un modèle qui crée Microsoft.Compute/VirtualMachine
et c'est le même modèle pour Windows et Linux. Mais pour les fenêtres, je dois spécifier une propriété qui n'existe pas pour Linux ("licenseType": "Windows_Server")
. Présence de cette propriété échouera le déploiement avec l'erreur The property 'LicenseType' cannot be used together with property 'linuxConfiguration'
J'essaie de comprendre s'il est possible d'avoir cette propriété incluse uniquement pour les images Windows tout en conservant le même modèle?
oui c'est possible, mais hacky. plusieurs options:
permettez-moi de développer un peu le numéro deux:
"variables": {
"baseObject": {
"propertyOne": "xxx",
"propertyTwo": "yyy
}
"additionalObject: {
"optionalProperty": "zzz"
}
}
puis dans votre objet vous pouvez faire:
"property": "[if(something, variables('baseObject'), # new line for readability
union(variables('baseObject'), variables('additionalObject') ))]"
Voici ce que je finis par faire sur la base d'une réponse précédente ainsi que des commentaires
"isWindowsOS": "[equals(parameters('ImageReferenceOffer'), 'WindowsServer')]"
"properties": { "licenseType": "[if(variables('isWindowsOS'), 'Windows_Server', json('null'))]",