Возможно ли сбой развертывания ARM, если условие не оценивается как истинное? - PullRequest
0 голосов
/ 31 октября 2018

Я создаю набор шаблонов ARM для развертывания всех ресурсов, которые мне нужны для моего приложения, и я указываю параметр environmentPrefix в файле параметров, а также префикс всех имен ресурсов с префиксом среды. Конечным результатом является, например, служба приложения в среде разработчика с базовым именем service1, получившая имя ресурса dev-service1.

Ресурсы для данной среды должны быть развернуты в группе ресурсов с таким же префиксом среды, например, dev-core-services.

Я хочу завершить развертывание шаблона, если имя RG не начинается с файлов параметров environmentPrefix. Например, если вы развернете шаблон, используя файл параметров, который определяет environmentPrefix = dev в RG с именем prod-core-services, развертывание завершится неудачей.

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

"condition": "[if(startsWith(resourceGroup().name, concat(parameters('EnvironmentPrefix'), '-')), bool('true'), bool('false'))]",

Но если я сделаю это со всеми ресурсами, развертывание шаблона скажет, что оно успешно выполнено, когда оно на самом деле ничего не развернуло - потому что все элементы condition оцениваются как ложные.

Есть идеи, как провалить развертывание при таких условиях?

(Я знаю, что есть и другие альтернативы для безопасной работы, такие как разные подписки на prod vs dev или развертывание с разными принципами обслуживания, которые имеют разные права доступа и т. Д., Но это то, с чем я должен работать на момент: - (

1 Ответ

0 голосов
/ 31 октября 2018

вы можете создать ресурс, который будет на 100% терпеть неудачу, и развертывать его только тогда, когда ваше условие не будет выполнено, но я думаю, что вы должны смотреть на политики ARM, это то, что они созданы для решения.

взгляните на этот вопрос:
Как создать политику Azure, которая проверяет имена групп ресурсов

...