Как настроить шаблоны ARM и файл параметров для создания нескольких разделов служебной шины в разных средах - PullRequest
0 голосов
/ 04 ноября 2019

В моем репо есть разные шаблоны рук (файлы JSON развертывания Azure) для двух разных сред. Каждая среда имеет свое собственное пространство имен служебной шины. Я хочу создать один и тот же список тем для каждой среды в шаблоне руки.

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

Список тем будет вфайл параметров.json. Я хочу использовать один и тот же файл параметров для обеих сред / шаблонов. Я также не уверен, возможно ли это. Начиная с этой статьи , использование одного и того же файла параметров может оказаться невозможным.

Я использовал этот сайт в качестве ссылки для создания цикла тем.

Вот пример файла armtemplate.json:

...
 "parameters": {
        "serviceBusNamespaceName": {
            "type": "string",
            "defaultValue": "serviceBusName1",
            "metadata": {
                "description": "Name of the Service Bus namespace"
            }
        },
        "serviceBusTopics": {
            "type": "array",
            "metadata": {
                "description": "List of topics"
            }
        },
...
"resources": [
        {
            "apiVersion": "2017-04-01",
            "name": "[parameters('serviceBusNamespaceName')]",
            "type": "Microsoft.ServiceBus/namespaces",
            "location": "[resourceGroup().location]",
            "sku": {
                "name": "Standard"
            },
            "properties": {}
        },
        {
            "apiVersion": "2017-04-01",
            "name": "[concat(parameters('serviceBusNamespaceName'), '/', parameters('serviceBusTopics')[copyIndex()])]",
            "type": "Microsoft.ServiceBus/namespaces/topics",
            "location": "[resourceGroup().location]",
            "copy": {
                "name": "topicLoop",
                "count": "[length(parameters('serviceBusTopics'))]"
            },
            "properties": {},
            "dependsOn": [
                "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
            ]
        },
....

Вот файл parameters.json:

"parameters": {
        "serviceBusTopics": {
            "value": [
                "topic1",
                "topic2"
            ]
        }
    }

У меня настроены конвейеры Azure для сборки и развертываниялазурные ресурсы. Когда я перехожу на портал Azure и проверяю каждую служебную шину, я ожидаю увидеть созданные темы. Тем не менее, это не работает для меня.

Можно ли использовать один и тот же файл параметров для другого шаблона / среды? Синтаксически, у меня есть какие-либо ошибки?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2019

Поскольку каждая среда имеет свой собственный файл шаблона, вам просто нужно обновить все файлы с помощью служебной шины и параметров темы и перечислить темы как ресурс, как я делал выше. Значение по умолчанию достаточно для ориентации на другую служебную шину. (возможно, это не самое элегантное решение, но оно работает)

Я обнаружил, что причина, по которой мой шаблон изначально не работал, заключается в том, что конвейер, который использует шаблон, не был в той же группе ресурсов, что и служебная шина. Я был нацеленным.

То, что я сделал выше, работает при развертывании в той же группе ресурсов.

0 голосов
/ 13 ноября 2019

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

другой способ - вообще не использовать файлы параметров и просто использовать переменные внутри DevOps Azure.

Я понимаю, что это короткий ответ, надеюсь, что пока все нормально

...