Развертывание сред DevTest Labs с помощью вложенных шаблонов
Во вложенном развертывании выполняется запуск вторичных шаблонов Azure Resource Manager (ARM) из основного шаблона. В этой статье приведен пример вложенных шаблонов для развертывания среды Azure DevTest Labs. Среды DevTest Labs содержат несколько виртуальных машин в формате IaaS (инфраструктура как услуга) с установленными ресурсами в формате PaaS (платформа как услуга). Ресурсы и виртуальные машины PaaS можно подготавливать с помощью шаблонов ARM.
Распределение развертывания по нескольким целевым шаблонам, предназначенных для конкретных целей, улучшает возможности тестирования, повторного использования и удобочитаемости. Общие сведения о вложенных шаблонах и примеры кода для них см. в статье Использование связанных и вложенных шаблонов при развертывании ресурсов Azure.
Примечание.
Среды развертывания Azure (ADE) настоятельно рекомендуется создавать среды. ADE позволяет разработчикам быстро развертывать инфраструктуру приложений с помощью шаблонов на основе проектов, обеспечивая согласованные и безопасные среды для команд разработчиков.
Дополнительные сведения о средах развертывания Azure см . в документации по средам развертывания 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:
Пример вложенного развертывания
Следующий пример демонстрирует главный файл шаблона 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": {}
Следующие шаги
- Дополнительные сведения о средах DevTest Labs см. в статье Использование шаблонов ARM для создания сред DevTest Labs.
- Дополнительные сведения и примеры кода для использования шаблона проекта для групп ресурсов Azure в Visual Studio см. в статье Создание и развертывание групп ресурсов Azure с помощью Visual Studio.