Можно ли выполнить пользовательскую проверку двух parameters
и убедиться, что они равны? Я хочу иметь что-то вроде password
и password_confirm
, которые должны быть равны перед развертыванием любого из ресурсов.
Azure Resource Manager — сравнение двух параметров на предмет равенства
Ответы (2)
да, вы можете взломать что-то подобное, просто создайте ресурс, который не будет работать, и все остальные ресурсы будут зависеть от него, а затем на условии ресурса выполните:
"condition": "[not(equals(parameters('password'), parameters('password_confirm'))]"
таким образом, если они не равны, поддельный ресурс начнет развертываться и взорвется (убедитесь, что вы кодируете его для взрыва), и ничего не будет развернуто
теперь, когда я думаю об этом, вместо создания ресурса просто поместите условие на все ресурсы в шаблоне:
"condition": "[equals(parameters('password'), parameters('password_confirm')]"
таким образом, они будут развернуты только в том случае, если они совпадают, но у вас не будет сбоя.
Другим вариантом было бы добавить параметр для проверки... это проще, но не так надежно, потому что пользователь может переопределить значение параметра по умолчанию:
"validatePasswords": {
"type": "bool",
"allowedValues": [
true
],
"defaultValue": "[equals(parameters('password'), parameters('password_confirm'))]",
"metadata": {
"description": "Check to see if the 2 passwords match."
}
},
Наложение условия на каждый ресурс будет работать (и его сложнее обмануть), но развертывание может завершиться успешно, даже если ничего не развернуто.