Cvičení – nasazení š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.

Zde nasadíte šablonu Azure Resource Manageru (ARM) z počítače a z úložiště GitHubu tím, že zadáte identifikátor URI.

Důležité

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í prostředí s použitím předplatného Microsoft Learn Sandbox

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. Ověřte název předplatného. Následující příkaz zobrazí seznam předplatných, názvů a jejich ID ve snadno čitelné tabulkovém formátu. Concierge SubscriptionHledejte .

    Get-AzSubscription
    
  4. Změňte svoje aktivní předplatné na Concierge Subscription.

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

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ů. Pokud chcete tuto operaci provést, musíte nejprve získat název skupiny prostředků spuštěním následujícího příkazu.

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

V tomto příkazu použijte název prostředku, který jste získali z předchozího příkazu. (Vypadá to nějak takto 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:

Obvykle při spuštění příkazu PowerShellu nebo Azure CLI pro nasazení šablony musíte zadat název cílové skupiny prostředků. Spuštěním předchozího příkazu jsme nastavili kontext našeho nasazení. Název skupiny prostředků sandboxu jsme zadali spuštěním příkazu Set-AzDefault PowerShellu:

Set-AzDefault -ResourceGroupName {Resource Group Name}

Nasazení místní šablony

V následujícím cvičení nasadíte šablonu z místního počítače. Název skupiny prostředků, který normálně používáte při nasazení ve vlastním prostředí, zde není potřeba, protože výchozí skupinu prostředků jsme už definovali v předchozí části.

  1. Začněte tím, že zkopírujete obsah následující šablony a vložíte ho do nějakého souboru v místním adresáři. Použijte například 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. Jakmile soubor uložíte místně, můžete ho pomocí příkazu PowerShellu nasadit na úrovni skupiny prostředků, o které jsme mluvili v poslední lekci. Konkrétně použijte příkaz New-AzResourceGroupDeployment .

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

    Po dokončení by měly být výsledky podobné tomuto příkladu.

    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 :
    
    

Nasazení stejné místní šablony s použitím hodnot parametrů

V posledním cvičení jste šablonu nasadili pomocí výchozí hodnoty parametru. Při nasazování místní šablony ARM můžete potřebovat předat hodnoty parametrů. Můžete použít buď vložené parametry, nebo soubor parametrů.

Pokud chcete nasazení předat vložené parametry, potřebujete předat názvy parametrů příkazem New-AzResourceGroupDeployment. V dalším cvičení předáte tyto parametry ve formě vložených parametrů a souboru parametrů.

  1. Pomocí stejné šablony jako v posledním cvičení vytvořte tabulku hash, která obsahuje hodnoty požadovaných parametrů šablony.

    $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
    

    Po jeho dokončení byste měli dostat podobné výsledky:

    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 :
    

    Místo předání parametrů ve formě hodnot vložených do skriptu může být jednodušší použít soubor JSON, který obsahuje hodnoty parametrů. Souborem parametrů může být místní soubor nebo externí/vzdálený soubor s přístupovým identifikátorem URI. Další informace o souboru parametrů najdete v tématu Vytvoření souboru parametrů Resource Manageru.

  2. K předání místního souboru parametrů použijeme parametr TemplateParameterFile ve stejném příkazu jako předtím. Ale napřed potřebujete vytvořit soubor parametrů a uložit ho.

    1. Vzhledem k tomu, že používáme Visual Studio Code s rozšířením Azure Resource Manager Tools, můžete otevřít šablonu ARM, kterou jste uložili místně, a vybrat odkaz Vybrat/vytvořit soubor parametrů...

    2. V nabídce vyberte Nový a pak vyberte Pouze požadované parametry. Přípona vytvoří soubor parametrů na základě aktuálně otevřené šablony.

    Snímek obrazovky znázorňující výběry pro vytvoření souboru parametrů v editoru Visual Studio Code

  3. Použijte následující příkaz PowerShellu s parametrem 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
    

    Po nasazení by výsledky měly vypadat jako v následujícím příkladu.

    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 :
    
    

Nasazení externí nebo vzdálené šablony

V některých případech potřebujete prostředky nasadit z externího nebo vzdáleného umístění místo z šablony v místním počítači. Šablony můžete uložit do úložiště pro správu zdrojového kódu (jako je GitHub). Nebo je můžete uložit do účtu úložiště v Azure, abyste k nim mohli v organizaci sdílet přístup.

  1. K nasazení externí šablony použijte parametr TemplateUri.

    V dalším cvičení nasadíte šablonu ARM z úložiště GitHubu. Toto úložiště je veřejné, takže si nemusíte dělat starosti ohledně nasazení šablony, která vyžaduje token SAS (sdílený přístupový podpis). Podrobnosti o používání privátního nebo zabezpečeného vzdáleného umístění najdete v článku Nasazení privátní šablony pomocí tokenu SAS.

    Identifikátor URI šablony pro toto cvičení je https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Jedná se o krátkou šablonu, která ve vašem sandboxovém prostředí nasadí základní účet úložiště.

  2. Powershellový příkaz je zcela shodný jako při použití místní šablony. Jediný rozdíl spočívá v tom, že parametr -TemplateFile je nahrazen parametrem -TemplateUri.

    K nasazení do zadaného sandboxu použijte následující kód:

    $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
    

    Výsledky jsou podobné následujícímu snímku obrazovky. Podrobně popisují umístění šablony.

    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 :
    
    

Poznámka:

K napsání této části byly použity příkazy Azure CLI v subsystému Windows Linux (WSL2) ve Windows 10. Příkazy jsou stejné bez ohledu na to, jestli používáte Azure CLI v PowerShellu, příkazovém řádku nebo v prostředí Bash. Může se ale lišit způsob adresování proměnných.

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. Měl by vypadat nějak takto 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 prostředku, který jste získali z předchozího příkazu. (Vypadá nějak takto learn-a73131a1-b618-48b8-af70-21af7ca420c4.) Tento příkaz 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í místní šablony

V následujícím cvičení nasadíte šablonu z místního počítače. Název skupiny prostředků, který normálně používáte při nasazení ve vlastním prostředí, zde není potřeba, protože výchozí skupinu prostředků jsme už definovali v předchozí části.

  1. Začněte tím, že zkopírujete obsah následující šablony a vložíte ho do nějakého souboru v místním adresáři. Použijte například C:\JSON\maintemplate.json nebo /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. Jakmile soubor uložíte místně, můžete ho pomocí příkazu Azure CLI nasadit na úrovni skupiny prostředků, o které jsme mluvili v poslední lekci. Konkrétně použijte příkaz az deployment group create.

    Poznámka:

    V následujícím příkladu se soubor šablony nachází ve složce json na jednotce home v subsystému Windows Linux (WSL2). Upravte tento příkaz podle toho, jaké prostředí používáte.

    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
    

    Po dokončení by výsledný výstup měl vypadat jako v následujícím příkladu. Pokud chcete ověřit, že nasazení bylo úspěšně, najděte řádek "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"
    }
    

Nasazení stejné místní šablony s použitím hodnot parametrů

V posledním cvičení jste šablonu nasadili pomocí výchozí hodnoty parametru. Při nasazování místní šablony ARM můžete potřebovat předat hodnoty parametrů. Můžete použít buď vložené parametry, nebo soubor parametrů.

V dalším cvičení předáte do nasazení vložené parametry. Pomocí příkazu je potřeba zadat názvy parametrů bez ohledu na to, az deployment group create jestli používáte vložené parametry nebo soubor parametrů.

  1. Pomocí stejné šablony jako v posledním cvičení vytvořte proměnnou, která obsahuje parametry ve formátu řetězce JSON pro požadované parametry šablony.

    Poznámka:

    V následujícím příkladu se soubor šablony nachází ve složce json v subsystému Windows Linux (WSL2). Upravte tento příkaz podle toho, jaké prostředí a operační systém používáte.

    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"
    

    Po jeho dokončení byste měli dostat výsledky podobné následujícímu příkladu. Pokud chcete zajistit, aby byl příkaz úspěšný, přečtěte "parameters" si část a "provisioningState" hodnotu.

      {- 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"
      }
    

    Místo předání parametrů ve formě hodnot vložených do skriptu může být jednodušší použít soubor JSON, který obsahuje hodnoty parametrů. Souborem parametrů může být místní soubor nebo externí/vzdálený soubor s přístupovým identifikátorem URI. Další informace o souboru parametrů najdete v tématu Vytvoření souboru parametrů Resource Manageru.

  2. K předání místního souboru parametrů použijeme parametr --parameters ve stejném příkazu jako předtím. Ale napřed potřebujete vytvořit soubor parametrů a uložit ho.

    1. Vzhledem k tomu, že používáme Visual Studio Code s rozšířením Azure Resource Manager Tools, můžete otevřít šablonu ARM, kterou jste uložili místně, a vybrat nebo vytvořit soubor parametrů, který povolí úplné ověření odkazu.

    2. V nabídce vyberte příkaz New (Nový). Přípona vytvoří soubor parametrů na základě aktuálně otevřené šablony.

    Snímek obrazovky znázorňující výběry pro vytvoření souboru parametrů v editoru Visual Studio Code

  3. Použijte následující příkaz Azure CLI s parametrem --parameters.

    Poznámka:

    V následujícím příkladu se soubor šablony nachází ve složce json v subsystému Windows Linux (WSL2). Upravte tento příkaz podle toho, jaké prostředí a operační systém používáte.

    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
    

    Po nasazení vypadají výsledky jako v následujícím příkladu.

      {- 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"
      }
    

Nasazení externí nebo vzdálené šablony

V některých případech potřebujete prostředky nasadit z externího nebo vzdáleného umístění místo z šablony v místním počítači. Šablony můžete uložit do úložiště pro správu zdrojového kódu (jako je GitHub). Nebo je můžete uložit do účtu úložiště v Azure, abyste k nim mohli v organizaci sdílet přístup.

  1. K nasazení externí šablony použijte parametr --template-uri.

V tomto cvičení nasadíte šablonu ARM z úložiště GitHub. Toto úložiště je veřejné, takže si nemusíte dělat starosti ohledně nasazení šablony, která vyžaduje token SAS (sdílený přístupový podpis). Podrobnosti o používání privátního nebo zabezpečeného vzdáleného umístění najdete v článku Nasazení privátní šablony pomocí tokenu SAS.

Identifikátor URI šablony pro toto cvičení je https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Jedná se o krátkou šablonu, která ve vašem sandboxovém prostředí nasadí základní účet úložiště.

  1. Příkaz Azure CLI je zcela shodný jako při použití místní šablony. Jediný rozdíl spočívá v tom, že parametr --template-file je nahrazen parametrem --template-uri.

  2. K nasazení do zadaného sandboxu použijte následující kód:

    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
    

    Výsledky jsou podobné následujícímu bloku kódu. V sekci "templateLink" podrobně popisují umístění šablony. Zobrazí se také, jestli je nasazení v oddílu "provisioningState" úspěšné.

    {- 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"
    }