Теги переменных на основе Azure ARM JSON - PullRequest
0 голосов
/ 30 ноября 2018

Мы используем следующий шаблон для развертывания нескольких групп ресурсов с помощью шаблона ARM:

"parameters": {
    "ResourceGroups": {
          "type": "array",
          "defaultValue": [
            "RG1",
            "RG2",
            "RG3"
          ]
        }
    "resources": [
          {
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[parameters('rgLocation')]",
            "name": "[parameters('ResourceGroups')[copyIndex()])]",
            "copy": {
              "name": "resourcegroupcopy",
              "count": "[length(parameters('ResourceGroups'))]",
              "mode": "serial"
            },
"properties": {},
        "tags": {}

Мы также хотим написать теги Azure для этих групп ресурсов.Однако проблема заключается в том, что не всем созданным нами группам ресурсов нужны одинаковые теги.Они различаются в зависимости от группы ресурсов.

Например: RG1 нужен Tag1, RG2 нужен Tag2 и т. Д.

Как мне вставить это в мой скрипт?

Кто-нибудь может указать мне правильное направление?

Спасибо!

1 Ответ

0 голосов
/ 30 ноября 2018

ответ: это зависит от ваших точных требований, но обычно 2 подхода: функция if (), сопоставление объектов.Любой из них может быть объединен с функцией union ().создайте переменную для каждого тега, который вам требуется:

"tag1": {
    "something": "bla-bla"
},
"tag2": {
    "somethingElse": "bla-bla-bla"
}

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

"tags": "[if(condition(something goes here, depending on your needs), variable('tag1'), variables('tag2'))]"

вы можете иметь больше, если операторы объединяют один внутридругой, и вы также можете использовать функцию union () для объединения тегов (хотя и не практично).union (переменные ('tag1'), переменные ('tag2')).

Другой (более управляемый способ в масштабе) использует маппер для "вычисления" свойства тега.Вы хотите tag1 на rg1, tag2 на rg2, tag3 на rg3.Вкратце, что происходит: вы извлекаете переменную, имя которой равно значению свойства, которое, в свою очередь, равно имени объекта.Смешение?вот пример.создайте новую переменную:

"mapper": {
    "rg1": "tag1",
    "rg2": "tag2",
    "rg3": "tag3",
}

и затем в своем ресурсе вы можете сделать это:

"tags": "[variables(variables('mapper')[variables(parameters('ResourceGroups')[copyIndex()]))])]"
          ^         ^                  ^          ^ name of the property would be RG1\RG2\RG3 depending on where you are in the loop. this would return value of the property, so tag1 or tag2 or tag3
          ^         ^                  ^ access properties of the object you get from the previous function (variables('mapper'))
          ^         ^ get variable called 'mapper'. you will get an object
          ^ get variable value called tag1 or tag2 or tag3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...