Упражнение. Развертывание шаблонов Resource Manager

Завершено

Примечание.

Когда вы в первый раз активируете песочницу и принимаете условия, ваша учетная запись Майкрософт связывается с новым каталогом Azure с именем Microsoft Learn Sandbox. Вы будете добавлены в специальную подписку с именем "Подписка Concierge".

В этом разделе вы развернете шаблон Azure Resource Manager (ARM) со своего компьютера и из репозитория GitHub, указав универсальный код ресурса (URI).

Внимание

В этом упражнении используются средства Azure Resource Manager для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.

Настройка среды с использованием подписки песочницы Microsoft Learn

Чтобы выполнить каждое развертывание в этом уроке, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code.

Обязательно войдите в ту же учетную запись, которая активировала песочницу.

Вход в Azure

  1. В окне терминала Visual Studio Code выполните следующую команду, чтобы войти в Azure. При выполнении этой команды откроется браузер, позволяющий войти в учетную запись.

    Connect-AzAccount
    
  2. После входа в окне терминала появится список подписок, связанных с этой учетной записью. Если вы активировали песочницу, в этом списке должна быть подписка Concierge.

  3. Проверьте имя подписки. В следующей команде перечислены подписки, имена и их идентификаторы в удобном для чтения формате таблицы. Поищите Concierge Subscription.

    Get-AzSubscription
    
  4. Измените свою активную подписку на подписку Concierge.

    $context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
    

Установка группы ресурсов по умолчанию

Теперь нужно установить в качестве группы ресурсов по умолчанию группу ресурсов, созданную для вас в песочнице. Чтобы выполнить эту операцию, сначала необходимо получить имя группы ресурсов с помощью указанной ниже команды:

Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault

В этой команде используйте имя ресурса, полученное из предыдущей команды. (Похоже, что-то подобное learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Эта команда позволяет опустить этот параметр из остальных команд Azure PowerShell в этом упражнении.

Примечание.

Обычно при использовании команды PowerShell или Azure CLI для развертывания шаблона необходимо указать имя целевой группы ресурсов. Выполнив предыдущую команду, мы установили контекст развертывания. Мы указали имя группы ресурсов песочницы с помощью команды PowerShell Set-AzDefault:

Set-AzDefault -ResourceGroupName {Resource Group Name}

Развертывание локального шаблона

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

  1. Сначала скопируйте приведенный ниже код шаблона и вставьте его в файл в локальном каталоге. Например, используйте C:\JSON\maintemplate.json.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "VnetName": {
            "type": "string",
            "defaultValue": "VNet-001",
            "metadata": {
              "description": "Virtual Network Name"
            }
          },
          "CostCenterIO": {
            "type": "string",
            "defaultValue": "12345",
            "metadata": {
              "description": "Cost Center IO number for cross billing"
            }
          },
          "OwnerName": {
            "type": "string",
            "defaultValue": "John Smith",
            "metadata": {
              "description": "Name of the stakeholder responsible for this resource"
            }
          }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },  
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  2. После локального сохранения файла можно использовать команду PowerShell для его развертывания на уровне группы ресурсов, о котором мы говорили в последнем уроке. А именно используйте команду New-AzResourceGroupDeployment .

    $templateFile="C:\JSON\maintemplate.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-"+"$today"
    
    New-AzResourceGroupDeployment `
    -Name $DeploymentName `
    -TemplateFile $templateFile
    

    После завершения работы должны быть результаты, как в этом примере.

    DeploymentName          : DeployLocalTemplate-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:50:04 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    
    

Развертывание того же локального шаблона со значениями параметров

В предыдущем упражнении вы развернули шаблон со значениями параметров по умолчанию. При развертывании локального шаблона Resource Manager может потребоваться передать значения параметров. Можно использовать встроенные параметры либо файл параметров.

Чтобы передать встроенные параметры в развертывание, необходимо указать имена параметров с помощью командлета New-AzResourceGroupDeployment. В следующем упражнении вы передадите параметры как встроенные и в виде файла параметров.

  1. Используя тот же шаблон, что и последнее упражнение, создайте хэш-таблицу, содержащую значения необходимых параметров шаблона.

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $templateFile="C:\JSON\maintemplate.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-2-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile `
        -TemplateParameterObject $parameters
    

    После выполнения команды результат должен выглядеть следующим образом:

    DeploymentName          : DeployLocalTemplate-2-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:51:55 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

    Вместо того чтобы передавать параметры в виде встроенных значений в скрипте, иногда проще использовать JSON-файл, содержащий значения параметров. Файл параметров может быть локальным или храниться во внешнем (удаленном) расположении с доступным кодом URI. Дополнительные сведения о файле параметров см. в статье Создание файла параметров Resource Manager.

  2. Чтобы передать локальный файл параметров, используйте параметр TemplateParameterFile в той же команде, что и ранее. Но сначала необходимо создать и сохранить файл параметров.

    1. Так как мы используем Visual Studio Code с расширением средств Azure Resource Manager, вы можете открыть шаблон ARM, сохраненный локально, и выбрать ссылку Select/create parameter file... .

    2. Выберите "Создать " в меню и выберите "Только необходимые параметры". Расширение создает файл параметров на основе открытого шаблона.

    Снимок экрана: элементы, выделенные для создания файла параметров в Visual Studio Code.

  3. Используйте следующую команду PowerShell с параметром TemplateParameterFile .

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $templateFile="C:\JSON\maintemplate.json"
    $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-3-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateFile $templateFile `
        -TemplateParameterFile $TemplateParameterFile
    

    После развертывания результаты должны выглядеть следующим образом.

    DeploymentName          : DeployLocalTemplate-3-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:54:40 p.m.
    Mode                    : Incremental
    TemplateLink            :
    Parameters              :
                              Name             Type                       Value
                              ===============  =========================  ==========
                              vnetName         String                     VNet-001
                              costCenterIO     String                     12345
                              ownerName        String                     John Smith
    
    Outputs                 :
    DeploymentDebugLogLevel :
    
    

Развертывание внешнего или удаленного шаблона

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

  1. Для развертывания внешнего шаблона используйте параметр TemplateUri.

    В следующем упражнении вы развернете шаблон Resource Manager из репозитория GitHub. Репозиторий является общедоступным, поэтому вам не нужно беспокоиться о наличии маркера подписанного URL-адреса (SAS). Дополнительные сведения об использовании частного или защищенного удаленного расположения см. в разделе Развертывание частного шаблона с маркером SAS.

    Универсальный код ресурса (URI) шаблона для этого упражнения — https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Это короткий шаблон, который развертывает базовую учетную запись хранения в среде песочницы.

  2. Команда PowerShell точно такая же, как и для локального шаблона. Единственное отличие заключается в том, что параметр -TemplateUri заменяет параметр -TemplateFile.

    Используйте приведенный ниже код для развертывания в предоставленной песочнице:

    $parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"}
    $today=Get-Date -Format "MM-dd-yyyy"
    $DeploymentName="DeployLocalTemplate-4-"+"$today"
    
    New-AzResourceGroupDeployment `
        -Name $DeploymentName `
        -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    

    Результаты похожи на следующую запись экрана. В них представлены сведения о расположении шаблона.

    DeploymentName          : DeployLocalTemplate-4-08-24-2020
    ResourceGroupName       : learn-03f041a7-cd17-4f50-9c81-5f6678feb217
    ProvisioningState       : Succeeded
    Timestamp               : 2020-08-24 5:56:55 p.m.
    Mode                    : Incremental
    TemplateLink            :
                              Uri            :
                              https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
                              ContentVersion : 1.0.0.0
    
    Parameters              :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              storageAccountType    String                     Standard_LRS
                              location              String                     westus
    
    Outputs                 :
                              Name                  Type                       Value
                              ====================  =========================  ==========
                              storageAccountName    String                     storepgxosadmbq77e
    
    DeploymentDebugLogLevel :
    
    

Примечание.

В этом разделе используются команды Azure CLI для подсистемы Windows для Linux (WSL2) в Windows 10. Эти команды одинаковы, независимо от применяемой с Azure CLI оболочки: PowerShell, CMD или bash. Однако способ обращения к переменным может отличаться.

Вход в Azure

  1. В окне терминала Visual Studio Code выполните следующую команду, чтобы войти в Azure. При выполнении этой команды откроется браузер, позволяющий войти в учетную запись.

    az login
    
  2. После входа в окне терминала появится список в формате JSON, который содержит подписки, связанные с этой учетной записью. Если вы активировали песочницу, в этом списке должна быть подписка Concierge.

  3. Получите идентификатор подписки. Следующая команда содержит список подписок и их идентификаторов. Идентификатор подписки находится во втором столбце. Найдите Concierge Subscription и скопируйте третий столбец. Она должна выглядеть примерно так: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    az account list -o table
    
  4. Измените свою активную подписку на подписку 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}

Развертывание локального шаблона

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

  1. Сначала скопируйте приведенный ниже код шаблона и вставьте его в файл в локальном каталоге. Например, используйте C:\JSON\maintemplate.json или /mnt/c/Users/you/json/maintemplate.json.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "VnetName": {
            "type": "string",
            "defaultValue": "VNet-001",
            "metadata": {
              "description": "Virtual Network Name"
            }
          },
          "CostCenterIO": {
            "type": "string",
            "defaultValue": "12345",
            "metadata": {
              "description": "Cost Center IO number for cross billing"
            }
          },
          "OwnerName": {
            "type": "string",
            "defaultValue": "John Smith",
            "metadata": {
              "description": "Name of the stakeholder responsible for this resource"
            }
          }
        },
        "variables": {},
        "resources": [
            {
                "apiVersion": "2018-10-01",
                "type": "Microsoft.Network/virtualNetworks",
                "name": "[parameters('VnetName')]",
                "location": "[resourceGroup().location]",
                "tags": {
                    "CostCenter": "[parameters('CostCenterIO')]",
                    "Owner": "[parameters('OwnerName')]"
                },  
                "properties": {
                    "addressSpace": {
                        "addressPrefixes": [
                            "10.0.0.0/16"
                        ]
                    },
                    "enableVmProtection": false,
                    "enableDdosProtection": false,
                    "subnets": [
                        {
                            "name": "subnet001",
                            "properties": {
                                "addressPrefix": "10.0.0.0/24"
                            }
                        },
                        {
                            "name": "subnet002",
                            "properties": {
                                "addressPrefix": "10.0.1.0/24"
                            }
                        }
                    ]
                }
            }
        ]
    }
    
  2. После локального сохранения файла можно использовать команду Azure CLI для развертывания на уровне группы ресурсов, о котором мы говорили в последнем уроке. А именно, используйте команду az deployment group create.

    Примечание.

    В приведенном ниже примере файл шаблона находится в папке json на диске домашней папки в подсистеме Windows для Linux (WSL2). Скорректируйте команду в зависимости от выбранной оболочки.

    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-"$today
    
    az deployment group create \
      --name $deploymentname \
      --template-file $templateFile
    

    После завершения выходные данные должны выглядеть следующим образом. Чтобы убедиться, что развертывание прошло успешно, обратите внимание на строку "provisioningState": "Succeeded".

    {
      "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-2020-08-19",
      "properties": {
        "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "debugSetting": null,
        "dependencies": [],
        "duration": "PT8.9060761S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/    learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001",
            "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a"
          }
        ],
        "outputs": null,
        "parameters": {
          "costCenterIO": {
            "type": "String",
            "value": "12345"
          },
          "ownerName": {
            "type": "String",
            "value": "John Smith"
          },
          "vnetName": {
            "type": "String",
            "value": "VNet-001"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Network",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  "westus"
                ],
                "properties": null,
                "resourceType": "virtualNetworks"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "11553431046699679955",
        "templateLink": null,
        "timestamp": "2020-08-19T14:47:06.403362+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }
    

Развертывание того же локального шаблона со значениями параметров

В предыдущем упражнении вы развернули шаблон со значениями параметров по умолчанию. При развертывании локального шаблона Resource Manager может потребоваться передать значения параметров. Можно использовать встроенные параметры либо файл параметров.

В следующем упражнении вы передаете встроенные параметры в развертывание. Необходимо указать имена параметров, использующих встроенные параметры или файл параметров, с помощью az deployment group create команды.

  1. Используя тот же шаблон, что и последнее упражнение, создайте переменную, содержащую параметры в формате строки JSON для необходимых параметров шаблона.

    Примечание.

    В приведенном ниже примере файл шаблона находится в папке json в подсистеме Windows для Linux (WSL2). Скорректируйте команду в зависимости от выбранной оболочки и ОС.

    parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}"
    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-2-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile \
    --parameters "$parameters"
    

    В итоге вы получите результат, как в следующем примере. Чтобы убедиться, что команда выполнена успешно, см "parameters" . раздел и "provisioningState" значение.

      {- Finished ..
        "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19",      
        "location": null,
        "name": "DeployLocalTemplate-2-2020-08-19",
        "properties": {
          "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
          "debugSetting": null,
          "dependencies": [],
          "duration": "PT4.6990388S",
          "error": null,
          "mode": "Incremental",
          "onErrorDeployment": null,
          "outputResources": [
            {
              "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001",
              "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a"
            }
          ],
          "outputs": null,
          "parameters": {
            "costCenterIO": {
              "type": "String",
              "value": "12345"
            },
            "ownerName": {
              "type": "String",
              "value": "John Smith"
            },
            "vnetName": {
              "type": "String",
              "value": "VNet-001"
            }
          },
          "parametersLink": null,
          "providers": [
            {
              "id": null,
              "namespace": "Microsoft.Network",
              "registrationPolicy": null,
              "registrationState": null,
              "resourceTypes": [
                {
                  "aliases": null,
                  "apiVersions": null,
                  "capabilities": null,
                  "locations": [
                    "westus"
                  ],
                  "properties": null,
                  "resourceType": "virtualNetworks"
                }
              ]
            }
          ],
          "provisioningState": "Succeeded",
          "templateHash": "11553431046699679955",
          "templateLink": null,
          "timestamp": "2020-08-19T16:40:20.249786+00:00",
          "validatedResources": null
        },
        "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
        "tags": null,
        "type": "Microsoft.Resources/deployments"
      }
    

    Вместо того чтобы передавать параметры в виде встроенных значений в скрипте, иногда проще использовать JSON-файл, содержащий значения параметров. Файл параметров может быть локальным или храниться во внешнем (удаленном) расположении с доступным кодом URI. Дополнительные сведения о файле параметров см. в статье Создание файла параметров Resource Manager.

  2. Чтобы передать локальный файл параметров, используйте параметр --parameters в той же команде, что и ранее. Но сначала необходимо создать и сохранить файл параметров.

    1. Так как мы используем Visual Studio Code с расширением средств Azure Resource Manager, вы можете открыть шаблон ARM, сохраненный локально, и выбрать файл параметров, чтобы включить полную ссылку проверки .

    2. Выберите пункт меню Создать. Расширение создает файл параметров на основе открытого шаблона.

    Снимок экрана: элементы, выделенные для создания файла параметров в Visual Studio Code.

  3. Используйте следующую команду Azure CLI с параметром --parameters.

    Примечание.

    В приведенном ниже примере файл шаблона находится в папке json в подсистеме Windows для Linux (WSL2). Скорректируйте команду в зависимости от выбранной оболочки и ОС.

    templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json
    templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-3-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-file $templateFile \
    --parameters $templateparameterfile
    

    После развертывания результаты houdl выглядят следующим образом.

      {- Finished ..
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19",
        "location": null,
        "name": "DeployLocalTemplate-3-2020-08-19",
        "properties": {
          "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff",
          "debugSetting": null,
          "dependencies": [],
          "duration": "PT4.2058912S",
          "error": null,
          "mode": "Incremental",
          "onErrorDeployment": null,
          "outputResources": [
            {
              "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Network/virtualNetworks/VNet-001",
              "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b"
            }
          ],
          "outputs": null,
          "parameters": {
            "costCenterIO": {
              "type": "String",
              "value": "12345"
            },
            "ownerName": {
              "type": "String",
              "value": "John Smith"
            },
            "vnetName": {
              "type": "String",
              "value": "VNet-001"
            }
          },
          "parametersLink": null,
          "providers": [
            {
              "id": null,
              "namespace": "Microsoft.Network",
              "registrationPolicy": null,
              "registrationState": null,
              "resourceTypes": [
                {
                  "aliases": null,
                  "apiVersions": null,
                  "capabilities": null,
                  "locations": [
                    "westus"
                  ],
                  "properties": null,
                  "resourceType": "virtualNetworks"
                }
              ]
            }
          ],
          "provisioningState": "Succeeded",
          "templateHash": "11553431046699679955",
          "templateLink": null,
          "timestamp": "2020-08-19T20:42:44.069215+00:00",
          "validatedResources": null
        },
        "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b",
        "tags": null,
        "type": "Microsoft.Resources/deployments"
      }
    

Развертывание внешнего или удаленного шаблона

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

  1. Для развертывания внешнего шаблона используйте параметр --template-uri.

В этом упражнении вы развернете шаблон ARM из репозитория GitHub. Репозиторий является общедоступным, поэтому вам не нужно беспокоиться о наличии маркера подписанного URL-адреса (SAS). Дополнительные сведения об использовании частного или защищенного удаленного расположения см. в разделе Развертывание частного шаблона с маркером SAS.

Универсальный код ресурса (URI) шаблона для этого упражнения — https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Это короткий шаблон, который развертывает базовую учетную запись хранения в среде песочницы.

  1. Команда Azure CLI точно такая же, как и для локального шаблона. Единственное отличие заключается в том, что параметр --template-uri заменяет параметр --template-file.

  2. Используйте приведенный ниже код для развертывания в предоставленной песочнице:

    parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}"
    today=$(date +"%Y-%m-%d")
    deploymentname="DeployLocalTemplate-4-"$today
    
    az deployment group create \
    --name $deploymentname \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    

    Результаты похожи на следующий блок кода. Вы увидите сведения о расположении шаблона в разделе "templateLink". Они также показывают, успешно ли развертывание выполнено "provisioningState" в разделе.

    {- Finished ..
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19",
      "location": null,
      "name": "DeployLocalTemplate-4-2020-08-19",
      "properties": {
        "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa",
        "debugSetting": null,
        "dependencies": [],
        "duration": "PT24.3286124S",
        "error": null,
        "mode": "Incremental",
        "onErrorDeployment": null,
        "outputResources": [
          {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4",
            "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b"
          }
        ],
        "outputs": {
          "storageAccountName": {
            "type": "String",
            "value": "store7zk7eyqew54l4"
          }
        },
        "parameters": {
          "location": {
            "type": "String",
            "value": "westus"
          },
          "storageAccountType": {
            "type": "String",
            "value": "Standard_LRS"
          }
        },
        "parametersLink": null,
        "providers": [
          {
            "id": null,
            "namespace": "Microsoft.Storage",
            "registrationPolicy": null,
            "registrationState": null,
            "resourceTypes": [
              {
                "aliases": null,
                "apiVersions": null,
                "capabilities": null,
                "locations": [
                  "westus"
                ],
                "properties": null,
                "resourceType": "storageAccounts"
              }
            ]
          }
        ],
        "provisioningState": "Succeeded",
        "templateHash": "12600309984865991765",
        "templateLink": {
          "contentVersion": "1.0.0.0",
          "id": null,
          "relativePath": null,
          "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json"
        },
        "timestamp": "2020-08-19T20:53:36.759312+00:00",
        "validatedResources": null
      },
      "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b",
      "tags": null,
      "type": "Microsoft.Resources/deployments"
    }