Azure Resource Manager — сравнение двух параметров на предмет равенства

Можно ли выполнить пользовательскую проверку двух parameters и убедиться, что они равны? Я хочу иметь что-то вроде password и password_confirm, которые должны быть равны перед развертыванием любого из ресурсов.


person lorenzo    schedule 16.04.2020    source источник


Ответы (2)


да, вы можете взломать что-то подобное, просто создайте ресурс, который не будет работать, и все остальные ресурсы будут зависеть от него, а затем на условии ресурса выполните:

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

таким образом, если они не равны, поддельный ресурс начнет развертываться и взорвется (убедитесь, что вы кодируете его для взрыва), и ничего не будет развернуто

теперь, когда я думаю об этом, вместо создания ресурса просто поместите условие на все ресурсы в шаблоне:

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

таким образом, они будут развернуты только в том случае, если они совпадают, но у вас не будет сбоя.

person 4c74356b41    schedule 16.04.2020

Другим вариантом было бы добавить параметр для проверки... это проще, но не так надежно, потому что пользователь может переопределить значение параметра по умолчанию:

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

Наложение условия на каждый ресурс будет работать (и его сложнее обмануть), но развертывание может завершиться успешно, даже если ничего не развернуто.

person bmoore-msft    schedule 20.04.2020
comment
Этот ответ кажется немного менее хакерским, чем другой. Я, вероятно, попробую это, как только этот проект больше не будет приостановлен. - person lorenzo; 22.04.2020