Упражнение. Развертывание связанных и вложенных шаблонов Resource Manager
Примечание.
Когда вы в первый раз активируете песочницу и принимаете условия, ваша учетная запись Майкрософт связывается с новым каталогом Azure с именем Microsoft Learn Sandbox. Вы будете добавлены в специальную подписку с именем "Подписка Concierge".
Здесь вы развернете шаблон, включающий два связанных шаблона в предоставленной среде песочницы.
В этом упражнении используются средства Azure Resource Manager для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.
Настройка тестовой среды с использованием предоставленной подписки песочницы Azure
Чтобы выполнить каждое развертывание в этом уроке, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code.
Обязательно войдите в ту же учетную запись, которая активировала песочницу.
Вход в Azure
В окне терминала Visual Studio Code выполните следующую команду, чтобы войти в Azure. При выполнении этой команды откроется браузер, позволяющий войти в учетную запись.
Connect-AzAccount
После входа в окне терминала появится список подписок, связанных с этой учетной записью. Если вы активировали песочницу, в этом списке должна быть подписка Concierge.
Получите идентификатор подписки. Следующая команда содержит список подписок и их идентификаторов в формате таблицы с легкостью для чтения. Идентификатор подписки находится во втором столбце. Найдите
Concierge Subscription
и скопируйте второй столбец. Оно будет выглядеть примерно так —aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Измените свою активную подписку на подписку Concierge. Обязательно замените строку
{Your subscription ID}
идентификатором подписки Concierge, полученным в результате выполнения последней команды.$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Установка группы ресурсов по умолчанию
Теперь нужно установить в качестве группы ресурсов по умолчанию группу ресурсов, созданную для вас в песочнице. Чтобы выполнить эту операцию, сначала необходимо получить имя группы ресурсов с помощью указанной ниже команды:
Get-AzResourceGroup
В этой команде используйте имя ресурса, полученное из предыдущей команды. Оно будет выглядеть примерно так — learn-a73131a1-b618-48b8-af70-21af7ca420c4
. Эта команда позволит не указывать этот параметр в остальных командах Azure PowerShell в этом упражнении.
Примечание.
Обычно при использовании команды PowerShell или Azure CLI для развертывания шаблона необходимо указать имя целевой группы ресурсов. В упражнении этого модуля мы обходим это требование, задавая контекст нашего развертывания. Мы указываем имя группы ресурсов песочницы на следующем шаге с помощью команды PowerShell Set-AzDefault.
Set-AzDefault -ResourceGroupName {Resource Group Name}
Развертывание связанного шаблона
В этом упражнении мы просматриваем и развертываем шаблон, включающий два связанных шаблона.
Чтобы добавить связанный шаблон в шаблон ARM, добавьте
Microsoft.Resources/deployments
ресурс иtemplateLink
свойство, настроенное с расположением шаблона.В следующем примере шаблона обратите внимание, что две переменные определяют удаленные или внешние шаблоны, расположенные в репозитории GitHub.
Просмотрите шаблон и запишите
"type": "Microsoft.Resources/deployments"
разделы, определяющие, где и как развертываются связанные шаблоны.Первый связанный шаблон развертывает учетную запись хранения. Он использует родительские параметры и развертывает шаблон хранилища.
Второй связанный шаблон настроен как зависящий от развертывания хранилища и служит для развертывания виртуальной сети.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string", "defaultValue": "linkeddemo001" } }, "variables": { "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json" }, "resources": [ { "name": "storage", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[resourceGroup().location]" } } } }, { "name": "identity", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments','storage')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template-2')]", "contentVersion": "1.0.0.0" } } } ], "outputs": {} }
Скопируйте приведенный ниже код шаблона и вставьте его в файл в локальном каталоге. Например, используйте
C:\JSON\linkedtemplate.json
.После локального сохранения файла используйте следующую команду PowerShell, чтобы развернуть его на уровне группы ресурсов, о котором мы говорили в последнем уроке. А именно команды New-AzResourceGroupDeployment.
$templateFile="C:\JSON\linkedtemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLinkedTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
После завершения вы должны иметь результаты, как показано ниже.
Проверьте результаты.
Перейдите на портал Azure и убедитесь, что вы находитесь в подписке песочницы. Для этого щелкните свой аватар в правом верхнем углу страницы. Выберите Переключить каталог. В списке выберите каталог Песочница Microsoft Learn.
В области слева выберите Группы ресурсов.
Выберите "
[имя группы ресурсов песочницы] "В области "Обзор" вы увидите, что развертывание выполнено успешно. Щелкните ссылку 3 Succeeded (3 успешно), чтобы просмотреть сведения о развертывании. (Завершенных развертываний может быть больше в зависимости от того, были ли выполнены упражнения из предыдущего урока.)
Обратите внимание, что вы развернули один шаблон, но в области развертываний на портале перечислено три шаблона. Они соответствуют основному шаблону и двум связанным.
Вход в Azure
В окне терминала Visual Studio Code выполните следующую команду, чтобы войти в Azure. При выполнении этой команды откроется браузер, позволяющий войти в учетную запись.
az login
После входа в окне терминала появится список в формате JSON, который содержит подписки, связанные с этой учетной записью. Если вы активировали песочницу, в этом списке должна быть подписка Concierge.
Получите идентификатор подписки. Следующая команда содержит список подписок и их идентификаторов. Идентификатор подписки находится во втором столбце. Найдите
Concierge Subscription
и скопируйте третий столбец. Оно будет выглядеть примерно так —aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Измените свою активную подписку на подписку Concierge. Обязательно замените строку
{Your subscription ID}
идентификатором подписки Concierge, полученным в результате выполнения последней команды.az account set -s {Your subscription ID}
Установка группы ресурсов по умолчанию
Теперь нужно установить в качестве группы ресурсов по умолчанию группу ресурсов, созданную для вас в песочнице. Чтобы выполнить эту операцию, сначала необходимо получить имя группы ресурсов с помощью указанной ниже команды:
az group list -o table
В этой команде используйте имя группы ресурсов, полученной из предыдущей команды. (Это похоже на learn-a73131a1-b618-48b8-af70-21af7ca420c4
.) Этот параметр по умолчанию позволяет опустить этот параметр из остальных команд Azure CLI в этом упражнении.
Примечание.
Обычно при использовании команды Azure CLI для развертывания шаблона необходимо указать имя целевой группы ресурсов. В упражнении этого модуля мы обходим это требование, задавая контекст нашего развертывания. Мы указываем имя группы ресурсов песочницы на следующем шаге с помощью команды az configure Azure CLI.
az configure --defaults group={Resource Group Name}
Развертывание связанного шаблона
В этом упражнении мы просматриваем и развертываем шаблон, включающий два связанных шаблона.
Чтобы добавить связанный шаблон в шаблон ARM, добавьте
Microsoft.Resources/deployments
ресурс иtemplateLink
свойство, настроенное с расположением шаблона.В следующем примере шаблона обратите внимание, что две переменные определяют удаленные или внешние шаблоны, расположенные в репозитории GitHub.
Просмотрите шаблон и запишите
"type": "Microsoft.Resources/deployments"
разделы, определяющие, где и как развертываются связанные шаблоны.Первый связанный шаблон развертывает учетную запись хранения. Он использует родительские параметры и развертывает шаблон хранилища.
Второй связанный шаблон настроен как зависящий от развертывания хранилища и служит для развертывания виртуальной сети.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "name": { "type": "string", "defaultValue": "linkeddemo001" } }, "variables": { "linked-template": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json", "linked-template-2": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/what-if/what-if-before.json" }, "resources": [ { "name": "storage", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[resourceGroup().location]" } } } }, { "name": "identity", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-10-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments','storage')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('linked-template-2')]", "contentVersion": "1.0.0.0" } } } ], "outputs": {} }
Скопируйте приведенный ниже код шаблона и вставьте его в файл в локальном каталоге. Например, используйте
C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json
.После локального сохранения этого файла разверните его на уровне группы ресурсов с помощью следующей команды Azure CLI. А именно, используйте команду az deployment group create.
templateFile=/mnt/c/Users/<UserName>/json/linkedtemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
В итоге вы получите результат, как в следующем примере. Проверьте значение
"provisioningState"
, чтобы убедиться, что развертывание прошло успешно.{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [ { "dependsOn": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/storage", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "resourceName": "storage", "resourceType": "Microsoft.Resources/deployments" } ], "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Resources/deployments/identity", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "resourceName": "identity", "resourceType": "Microsoft.Resources/deployments" } ], "duration": "PT16.4639167S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/virtualNetworks/vnet-001", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }, { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" } ], "outputs": {}, "parameters": { "name": { "type": "String", "value": "linkeddemo001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Resources", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ null ], "properties": null, "resourceType": "deployments" } ] } ], "provisioningState": "Succeeded", "templateHash": "12700491000282730217", "templateLink": null, "timestamp": "2020-08-19T21:07:18.729310+00:00", "validatedResources": null }, "resourceGroup": "learn-bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", "tags": null, "type": "Microsoft.Resources/deployments" }
Проверьте результаты.
Перейдите на портал Azure и убедитесь, что вы находитесь в подписке песочницы. Для этого щелкните свой аватар в правом верхнем углу страницы. Выберите Переключить каталог. В списке выберите каталог Песочница Microsoft Learn.
В области слева выберите Группы ресурсов.
Выберите "
[имя группы ресурсов песочницы] "В области обзора вы увидите, что развертывание выполнено успешно. Щелкните ссылку 3 Succeeded (3 успешно), чтобы просмотреть сведения о развертывании. (Завершенных развертываний может быть больше в зависимости от того, были ли выполнены упражнения из предыдущего урока.)
Обратите внимание, что вы развернули один шаблон, но в области развертываний на портале перечислено три шаблона. Они соответствуют основному шаблону и двум связанным.