Поделиться через


Развертывание сред DevTest Labs с помощью вложенных шаблонов

Во вложенном развертывании выполняется запуск вторичных шаблонов Azure Resource Manager (ARM) из основного шаблона. В этой статье приведен пример вложенных шаблонов для развертывания среды Azure DevTest Labs. Среды DevTest Labs содержат несколько виртуальных машин в формате IaaS (инфраструктура как услуга) с установленными ресурсами в формате PaaS (платформа как услуга). Ресурсы и виртуальные машины PaaS можно подготавливать с помощью шаблонов ARM.

Распределение развертывания по нескольким целевым шаблонам, предназначенных для конкретных целей, улучшает возможности тестирования, повторного использования и удобочитаемости. Общие сведения о вложенных шаблонах и примеры кода для них см. в статье Использование связанных и вложенных шаблонов при развертывании ресурсов Azure.

Развертывание вложенных шаблонов с помощью Visual Studio

Шаблон проекта группы ресурсов Azure в Visual Studio позволяет легко разрабатывать и отлаживать шаблоны ARM. Добавляя вложенные шаблоны в основной файл шаблон8а azuredeploy.json, Visual Studio добавляет и следующие элементы для повышения гибкости этого шаблона:

  • вложенная папка с дополнительными шаблонами и файлами параметров;
  • имена переменных в основном файле шаблона;
  • два ключевых параметра: _artifactsLocation и _artifactsLocationSasToken.

В среде DevTest Labs шаблоны ARM хранятся в репозитории Git, который связан с конкретной тестовой службой. При использовании одного из связанных репозиториев шаблонов для создания новой среды файлы шаблонов копируются в контейнер службы хранилища Azure, назначенный для тестовой службы. При добавлении вложенного шаблона ресурса в репозиторий и в главный файл шаблона Visual Studio определяет значения _artifactsLocation и _artifactsLocationSasToken, копирует вложенные папки в контейнер хранилища и вставляет в файлы параметров расположение и маркер подписи общего доступа (SaS).

Структура папок для вложенных шаблонов

В следующем примере шаблона папка репозитория Git содержит вложенную папку nestedtemplates с файлами вложенных шаблонов NestOne.json и NestOne.parameters.json. Основной файл шаблона azuredeploy.json создает URI для вторичных шаблонов, используя сведения о расположении артефактов, вложенную папку шаблона и имя файла вложенного шаблона. URI для файла параметров содержит расположение артефактов, вложенную папку шаблона и файл параметров вложенного шаблона. Вы можете добавить дополнительные подпапки вложенных шаблонов в основную папку, но только на одном уровне вложенности.

Следующий снимок экрана демонстрирует структуру проекта в Visual Studio:

Снимок экрана: структура проекта вложенного шаблона в Visual Studio.

Пример вложенного развертывания

Следующий пример демонстрирует главный файл шаблона ARM azuredeploy.json для вложенного развертывания:


"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "_artifactsLocation": {
        "type": "string"
    },
    "_artifactsLocationSasToken": {
        "type": "securestring"
    }},
"variables": {
    "NestOneTemplateFolder": "nestedtemplates",
    "NestOneTemplateFileName": "NestOne.json",
    "NestOneTemplateParametersFileName": "NestOne.parameters.json"},
    "resources": [
    {
        "name": "NestOne",
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2016-09-01",
        "dependsOn": [ ],
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            },
            "parametersLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            }
        }    
    }],
"outputs": {}

Дальнейшие действия