#azure #azure-pipelines #arm-template
Вопрос:
Я использую конвейер Azure Devops для автоматизации создания предупреждений azure с использованием задач развертывания ARM. Чтобы автоматизировать пороговые значения для предупреждений, я создал параметры времени выполнения внутри конвейера, которые необходимо заменить задачей замены маркера и обновит соответствующие значения параметров времени выполнения в файле «параметры.json».
Здесь я сталкиваюсь с проблемой, например, чтобы заменить значения параметров времени выполнения на parameters.json, сначала мне нужно преобразовать значения параметров в переменные либо путем определения этих переменных в разделе переменных, либо с помощью задачи bash отдельно для вывода значения переменной. Я ищу решения для следующих требований
- Существует ли какой-либо способ прямого обновления значений параметров среды выполнения до «parameters.json»
- Можем ли мы добавить дополнительные значения к значениям параметров? Например, необходимо иметь только определенные значения параметров времени выполнения, если категория предупреждений-тип запроса журнала-метрическое измерение и другой набор значений, необходимых, если тип «тип счета».
Комментарии:
1. Почему бы вам не захотеть контролировать это с помощью значений в системе управления версиями? Это обеспечивает аудит (через историю фиксаций), проверку и утверждение (через PR) и подотчетность. Когда кто-то случайно добавляет дополнительный ноль или два к значению триггера оповещения и прерывает оповещение, как вы узнаете, что произошло, когда это произошло и кто был ответственен за это?
2. Моя цель состояла в том, чтобы найти решение, которое должно быть проще для пользователя, чтобы создать создание предупреждений, указав нужные значения для пороговых значений и размеров, поэтому я использовал runtimeparamater, чтобы предоставить им возможность выбирать значения из самого графического интерфейса запуска конвейера. Итак, как вы и предложили, у меня в конвейере есть задача проверить файлы json перед развертыванием и получить одобрение stge для проверки и утверждения результатов вышеуказанной проверки файлов json перед развертыванием.
3. Как вы предположили, если я попытаюсь рассмотреть это из poit системы управления версиями, форматирование шаблона ARM должно быть известно каждому пользователю, который в основном не знает об этом. существует ли какой-либо альтернативный способ, с помощью которого конечные пользователи могут легко передавать значения во входной файл, управляемый системой управления версиями. Я искал несколько вариантов, но это мне не помогло,
Ответ №1:
Если вы пытаетесь сделать это с помощью a parameters.json
, это немного неудобно. Почему? Потому что вам нужно проанализировать json, а затем обновить нужные узлы в json с помощью скрипта PS/Bash во время выполнения.
Я предложу другое решение для этого. Используйте template parameter object
вместо parameters.json
. Просто вызовите шаблон ARM с помощью PS/Bash
пример создания виртуальной машины-
$a = "abc" $b = "efg" $c = "hij" $d = "klm" $e = "nop" $paramList = @{ "Params1" = @{ customVmName = $a ; userImageStorageAccountName = $b ; adminUsername = $c ; adminPassword = $d ; osDiskVhdUri = $e } } foreach ($keys in $paramList.Keys) { $paramvalues = $paramList.$keys New-AzureRmResourceGroupDeployment -ResourceGroupName "deploymentRG" -TemplateFile "YourARMTemplate.json" -TemplateParameterObject $paramValues }
Переходим к части вашего вопроса : Переопределение значений во время выполнения в Azure DevOps
Настройте параметры сценария и переопределите значения во время вызова файла PS. Если вы используете задачу PS в Azure DevOps, просто переопределите значения параметров в разделе аргументов-
Если вы парень PS/Bash, вы можете выполнить манипуляции в части сценария, скажем, настройки $a="abc"
на основе условия или env, а для другого env другое значение, то есть переопределение значения параметра может быть выполнено в виде кода во время выполнения (просто еще один вариант)