Cvičení – nasazení propojených a vnořených šablon ARM

Dokončeno

Poznámka:

Při první aktivaci sandboxu a přijetí podmínek se váš účet Microsoft přidruží k novému adresáři Azure s názvem Microsoft Learn Sandbox. Vy se zařadíte do speciálního předplatného s názvem Concierge.

Tady nasadíte šablonu, která obsahuje dvě propojené šablony v zadaném sandboxovém prostředí.

V tomto cvičení se používá rozšíření Azure Resource Manager Tools pro Visual Studio Code. Nezapomeňte toto rozšíření do Visual Studio Codu nainstalovat.

Nastavení testovacího prostředí se zadaným předplatným sandboxu Azure

Pokud chcete nasazovat prostředky všemi způsoby uvedenými v této lekci, musíte se v terminálu editoru Visual Studio Code přihlásit ke svému účtu Azure.

Ujistěte se, že se přihlašujete ke stejnému účtu, který aktivoval sandbox.

Přihlášení k Azure

  1. V terminálu ve Visual Studio Codu se spuštěním následujícího příkazu přihlaste k Azure. Spuštěním tohoto příkazu otevřete prohlížeč, který vám umožní přihlásit se ke svému účtu.

    Connect-AzAccount
    
  2. Po přihlášení se v terminálu zobrazí seznam předplatných přidružených k tomuto účtu. Pokud jste aktivovali sandbox, mělo by v tomto seznamu být předplatné Concierge.

  3. Zjistěte ID předplatného. Následující příkaz zobrazí seznam předplatných a jejich ID ve snadno čitelné tabulkovém formátu. ID předplatného najdete ve druhém sloupci. Vyhledejte položku Concierge Subscription a zkopírujte druhý sloupec. Vypadá to jako aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  4. Změňte svoje aktivní předplatné na Concierge Subscription. {Your subscription ID} nahraďte identifikátorem vašeho předplatného Concierge, který jste získali předchozím příkazem.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Nastavení výchozí skupiny prostředků

Teď musíte nastavit skupinu prostředků vytvořenou pro vás v sandboxu jako výchozí skupinu prostředků. Abyste tuto operaci mohli provést, potřebujete nejprve následujícím příkazem získat název skupiny prostředků:

Get-AzResourceGroup

V tomto příkazu použijte název prostředku, který jste získali z předchozího příkazu. Vypadá to jako learn-a73131a1-b618-48b8-af70-21af7ca420c4. Tento příkaz umožňuje vynechat tento parametr ze zbývajících příkazů Azure PowerShellu v tomto cvičení.

Poznámka:

Když šablonu nasazujete pomocí příkazu PowerShellu nebo Azure CLI, musíte normálně zadat název cílové skupiny prostředků. Ve cvičení v tomto modulu obcházíme tento požadavek tím, že nastavíme kontext našeho nasazení. Název sandboxové skupiny prostředků určíme v dalším kroku pomocí powershellového příkazu Set-AzDefault.

Set-AzDefault -ResourceGroupName {Resource Group Name}

Nasazení propojené šablony

V tomto cvičení zkontrolujeme a nasadíme šablonu, která obsahuje dvě propojené šablony.

  1. Pokud chcete do šablony ARM přidat propojenou šablonu, přidejte Microsoft.Resources/deployments prostředek a templateLink vlastnost nakonfigurovanou s umístěním šablony.

  2. V následující ukázkové šabloně si všimněte, že dvě proměnné definují vzdálené nebo externí šablony umístěné v úložišti GitHub.

    Projděte si šablonu a poznamenejte si "type": "Microsoft.Resources/deployments" oddíly, které definují, kde a jak se propojené šablony nasazují.

    První propojená šablona nasadí účet úložiště. Používá nadřazené parametry a nasadí šablonu úložiště.

    Druhá propojená šablona je nakonfigurovaná tak, aby závisela na nasazení úložiště a nasadila šablonu virtuální sítě.

    {
    "$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": {}
    }
    
  3. Zkopírujte obsah předchozí šablony a vložte ho do nějakého souboru v místním adresáři. Použijte například C:\JSON\linkedtemplate.json.

  4. Po místním uložení souboru ho pomocí následujícího příkazu PowerShellu nasaďte na úrovni skupiny prostředků, o které jsme mluvili v poslední lekci. Konkrétně použijte příkaz New-AzResourceGroupDeployment.

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

    Po jeho dokončení byste měli mít výsledky jako následující exmaple.

    Výsledky nasazení propojené šablony

  5. Ověřte výsledky.

    1. Přejděte na Azure Portal a ujistěte se, že jste v sandboxovém předplatném. To uděláte tak, že vyberete svůj avatar v pravém horním rohu stránky. Vyberte Přepnout adresář. V seznamu vyberte adresář Microsoft Learn Sandbox.

    2. V levém panelu vyberte Skupiny prostředků.

    3. Vyberte [název skupiny prostředků sandboxu].

    4. V oblasti Přehled vidíte, že nasazení proběhlo úspěšně. Pokud chcete zobrazit podrobnosti o nasazení, vyberte možnost 3 Succeeded (3 – úspěšné). (Nasazení mohou být úplnější v závislosti na tom, jestli jste absolvovali cvičení předchozí lekce.)

    Rozhraní portálu Azure Portal pro nasazení s jedním uvedeným nasazením a stavem Úspěšné

    Všimněte si, že jste nasadili jednu šablonu, ale v podokně nasazení na portálu jsou uvedeny tři. Tato tři nasazení odpovídají jedné hlavní šabloně a dvěma propojeným šablonám.

    Rozhraní portálu Azure Portal pro konkrétní nasazení bez prostředků

Přihlášení k Azure

  1. V terminálu ve Visual Studio Codu se spuštěním následujícího příkazu přihlaste k Azure. Spuštěním tohoto příkazu otevřete prohlížeč, který vám umožní přihlásit se ke svému účtu.

    az login
    
  2. Po přihlášení se v terminálu zobrazí seznam JSON s předplatnými přidruženými k tomuto účtu. Pokud jste aktivovali sandbox, mělo by v tomto seznamu být předplatné Concierge.

  3. Zjistěte ID předplatného. Následující příkaz zobrazí seznam vašich předplatných a jejich ID. ID předplatného najdete ve třetím sloupci. Hledejte Concierge Subscription a zkopírujte třetí sloupec. Vypadá to jako aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    az account list -o table
    
  4. Změňte svoje aktivní předplatné na Concierge Subscription. {Your subscription ID} nahraďte identifikátorem vašeho předplatného Concierge, který jste získali předchozím příkazem.

    az account set -s {Your subscription ID}
    

Nastavení výchozí skupiny prostředků

Teď musíte nastavit skupinu prostředků vytvořenou pro vás v sandboxu jako výchozí skupinu prostředků. Abyste tuto operaci mohli provést, potřebujete nejprve následujícím příkazem získat název skupiny prostředků:

az group list -o table

V tomto příkazu použijte název skupiny prostředků, kterou jste získali z předchozího příkazu. (Vypadá nějak takto learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Nastavení tohoto výchozího nastavení umožňuje vynechat tento parametr ze zbývajících příkazů Azure CLI v tomto cvičení.

Poznámka:

Když pomocí příkazu Azure CLI nasazujete šablonu, obvykle musíte zadat název cílové skupiny prostředků. Ve cvičení v tomto modulu obcházíme tento požadavek tím, že nastavíme kontext našeho nasazení. Název sandboxové skupiny prostředků určíme v dalším kroku pomocí příkazu Azure CLI az configure.

az configure --defaults group={Resource Group Name}

Nasazení propojené šablony

V tomto cvičení zkontrolujeme a nasadíme šablonu, která obsahuje dvě propojené šablony.

  1. Pokud chcete do šablony ARM přidat propojenou šablonu, přidejte Microsoft.Resources/deployments prostředek a templateLink vlastnost nakonfigurovanou s umístěním šablony.

  2. V následující ukázkové šabloně si všimněte, že dvě proměnné definují vzdálené nebo externí šablony umístěné v úložišti GitHub.

    Projděte si šablonu a poznamenejte si "type": "Microsoft.Resources/deployments" oddíly, které definují, kde a jak se propojené šablony nasazují.

    První propojená šablona nasadí účet úložiště. Používá nadřazené parametry a nasadí šablonu úložiště.

    Druhá propojená šablona je nakonfigurovaná tak, aby závisela na nasazení úložiště a nasadila šablonu virtuální sítě.

    {
    "$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": {}
    }
    
  3. Zkopírujte obsah předchozí šablony a vložte ho do nějakého souboru v místním adresáři. Použijte například C:\JSON\linkedtemplate.json or /mnt/c/Users/you/json/linkedtemplate.json.

  4. Jakmile soubor uložíte místně, nasaďte ho na úrovni skupiny prostředků pomocí následujícího příkazu Azure CLI. Konkrétně použijte příkaz 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
    

    Po jeho dokončení byste měli dostat výsledky podobné následujícímu příkladu. Kontrolou hodnoty "provisioningState" ověřte, že nasazení proběhlo úspěšně.

    {- 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"
    }
    
  5. Ověřte výsledky.

    1. Přejděte na Azure Portal a ujistěte se, že jste v sandboxovém předplatném. To uděláte tak, že vyberete svůj avatar v pravém horním rohu stránky. Vyberte Přepnout adresář. V seznamu vyberte adresář Microsoft Learn Sandbox.

    2. V levém panelu vyberte Skupiny prostředků.

    3. Vyberte [název skupiny prostředků sandboxu].

    4. V oblasti Přehled vidíte, že nasazení proběhlo úspěšně. Pokud chcete zobrazit podrobnosti o nasazení, vyberte možnost 3 Succeeded (3 – úspěšné). (Nasazení mohou být úplnější v závislosti na tom, jestli jste absolvovali cvičení předchozí lekce.)

    Rozhraní portálu Azure Portal pro nasazení s jedním uvedeným nasazením a stavem Úspěšné

    Všimněte si, že jste nasadili jednu šablonu, ale v podokně nasazení na portálu jsou uvedeny tři. Tato tři nasazení odpovídají jedné hlavní šabloně a dvěma propojeným šablonám.

    Rozhraní portálu Azure Portal pro konkrétní nasazení bez prostředků