【问题标题】:Azure Resource Manager - Compare Two Parameters for EqualityAzure 资源管理器 - 比较两个参数是否相等
【发布时间】:2020-04-16 14:50:01
【问题描述】:

是否可以对两个parameters 执行自定义验证并确保它们相等? 在部署任何资源之前,我希望拥有像 passwordpassword_confirm 这样的东西。

【问题讨论】:

    标签: azure azure-resource-manager azure-template


    【解决方案1】:

    是的,你可以破解类似的东西,只需创建一个会失败的资源,所有其他资源都将依赖它,然后根据资源条件做:

    "condition": "[not(equals(parameters('password'), parameters('password_confirm'))]"
    

    这样,如果它们不相等,假资源将开始被部署并且会爆炸(确保您将其编码为爆炸)并且不会部署任何东西

    现在想起来了,与其创建资源,不如对模板中的所有资源加一个条件:

    "condition": "[equals(parameters('password'), parameters('password_confirm')]"
    

    这样它们只有在匹配时才会被部署,但你不会失败。

    【讨论】:

      【解决方案2】:

      另一种选择是添加一个参数来进行验证...这更简单但不那么健壮,因为用户可以覆盖参数的 defaultValue:

          "validatePasswords": {
            "type": "bool",
            "allowedValues": [
              true
            ],
            "defaultValue": "[equals(parameters('password'), parameters('password_confirm'))]",
            "metadata": {
              "description": "Check to see if the 2 passwords match."
            }
          },
      
      

      为每个资源设置一个条件会起作用(并且更难被愚弄),但即使没有部署任何东西,部署也可能会成功。

      【讨论】:

      • 这个答案似乎比另一个答案少一些。一旦这个项目不再暂停,我可能会尝试一下。
      猜你喜欢
      • 2013-08-18
      • 2021-09-14
      • 2023-03-11
      • 2010-12-05
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多