【发布时间】:2020-04-16 14:50:01
【问题描述】:
是否可以对两个parameters 执行自定义验证并确保它们相等?
在部署任何资源之前,我希望拥有像 password 和 password_confirm 这样的东西。
【问题讨论】:
标签: azure azure-resource-manager azure-template
是否可以对两个parameters 执行自定义验证并确保它们相等?
在部署任何资源之前,我希望拥有像 password 和 password_confirm 这样的东西。
【问题讨论】:
标签: azure azure-resource-manager azure-template
是的,你可以破解类似的东西,只需创建一个会失败的资源,所有其他资源都将依赖它,然后根据资源条件做:
"condition": "[not(equals(parameters('password'), parameters('password_confirm'))]"
这样,如果它们不相等,假资源将开始被部署并且会爆炸(确保您将其编码为爆炸)并且不会部署任何东西
现在想起来了,与其创建资源,不如对模板中的所有资源加一个条件:
"condition": "[equals(parameters('password'), parameters('password_confirm')]"
这样它们只有在匹配时才会被部署,但你不会失败。
【讨论】:
另一种选择是添加一个参数来进行验证...这更简单但不那么健壮,因为用户可以覆盖参数的 defaultValue:
"validatePasswords": {
"type": "bool",
"allowedValues": [
true
],
"defaultValue": "[equals(parameters('password'), parameters('password_confirm'))]",
"metadata": {
"description": "Check to see if the 2 passwords match."
}
},
为每个资源设置一个条件会起作用(并且更难被愚弄),但即使没有部署任何东西,部署也可能会成功。
【讨论】: