Kurz: Nasazení šablony ARM pomocí souborů parametrů

V tomto kurzu se dozvíte, jak pomocí souborů parametrů ukládat hodnoty, které předáváte během nasazování. V předchozích kurzech jste použili vložené parametry s příkazem nasazení. Tento přístup fungoval pro testování šablony Azure Resource Manager (šablona ARM), ale při automatizaci nasazení může být snazší předat sadu hodnot pro vaše prostředí. Soubory parametrů usnadňují zabalení hodnot parametrů pro konkrétní prostředí. V tomto kurzu vytvoříte soubory parametrů pro vývojová a produkční prostředí. Dokončení této instrukce trvá 12 minut .

Požadavky

Doporučujeme, abyste dokončili kurz o značkách, ale není to nutné.

Potřebujete Visual Studio Code s rozšířením Resource Manager Tools a rozhraním příkazového řádku Azure PowerShell nebo Azure Command-Line. Další informace najdete v nástrojích šablon.

Kontrola šablony

Šablona má mnoho parametrů, které můžete zadat během nasazování. Na konci předchozího kurzu měla vaše šablona následující soubor JSON:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Tato šablona funguje dobře, ale teď chcete snadno spravovat parametry, které předáte šabloně.

Přidání souborů parametrů

Soubory parametrů jsou soubory JSON se strukturou, která je podobná vaší šabloně. V souboru zadáte hodnoty parametrů, které chcete předat během nasazování.

V souboru parametrů zadáte hodnoty parametrů v šabloně. Název každého parametru v souboru parametrů musí odpovídat názvu parametru v šabloně. Název nerozlišuje velká a malá písmena, ale pokud chcete snadno zobrazit odpovídající hodnoty, doporučujeme, abyste odpovídali velikosti písmen ze šablony.

Nemusíte zadávat hodnotu pro každý parametr. Pokud má nezadaná hodnota výchozí hodnotu, použije se tato hodnota během nasazení. Pokud parametr nemá výchozí hodnotu a není zadaný v souboru parametrů, zobrazí se výzva k zadání hodnoty během nasazení.

V souboru parametrů nemůžete zadat název parametru, který neodpovídá názvu parametru v šabloně. Při zadání neznámých parametrů se zobrazí chyba.

V editoru Visual Studio Code vytvořte nový soubor s následujícím obsahem. Uložte soubor s názvem azuredeploy.parameters.dev.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

Tento soubor je vaším souborem parametrů pro vývojové prostředí. Všimněte si, že používá Standard_LRS pro účet úložiště, pojmenuje prostředky s předponou pro vývoj a nastaví Environment značku na Dev.

Znovu vytvořte nový soubor s následujícím obsahem. Uložte soubor s názvem azuredeploy.parameters.prod.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

Tento soubor je vaším souborem parametrů pro produkční prostředí. Všimněte si, že pro účet úložiště používá Standard_GRS , pojmenuje prostředky s předponou contoso a nastaví Environment značku na Produkční. V reálném produkčním prostředí byste také chtěli používat službu App Service s jinou skladovou jednotkou než bezplatnou, ale tuto skladovou položku používáme pro účely tohoto kurzu.

Nasazení šablony

K nasazení šablony použijte Azure CLI nebo Azure PowerShell.

Jako konečný test šablony vytvoříme dvě nové skupiny prostředků. Jeden pro vývojové prostředí a druhý pro produkční prostředí.

V případě šablony a proměnných parametrů nahraďte {path-to-the-template-file}, {path-to-azuredeploy.parameters.dev.json}, {path-to-azuredeploy.parameters.prod.json}a složené složené závorky {} pomocí šablony a cest k souborům parametrů.

Nejprve nasadím do vývojového prostředí.

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Teď nasadíme do produkčního prostředí.

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Poznámka

Pokud se nasazení nezdaří, získejte informace o prostředcích, které vytváříte, pomocí verbose přepínače. debug Pomocí přepínače získáte další informace pro ladění.

Ověření nasazení

Nasazení můžete ověřit prozkoumáním skupin prostředků z Azure Portal.

  1. Přihlaste se k webu Azure Portal.
  2. V nabídce vlevo vyberte skupiny prostředků.
  3. V tomto kurzu uvidíte dvě nové skupiny prostředků, které nasadíte.
  4. Vyberte některou skupinu prostředků a zobrazte nasazené prostředky. Všimněte si, že odpovídají hodnotám zadaným v souboru parametrů pro dané prostředí.

Vyčištění prostředků

  1. V Azure Portal vyberte v nabídce vlevo skupiny prostředků.

  2. Zaškrtněte vedle zaškrtávacího políčka název skupiny prostředků s hypertextovým odkazem. Pokud dokončíte tuto řadu, máte tři skupiny prostředků, které chcete odstranit – myResourceGroup, myResourceGroupDev a myResourceGroupProd.

  3. V horní nabídce vyberte ikonu Odstranit skupinu prostředků .

    Upozornění

    Odstranění skupiny prostředků je nevratné.

  4. Do automaticky otevíraných oken, které se zobrazí, zadejte název skupiny prostředků a vyberte Odstranit.

Další kroky

Blahopřejeme. Dokončili jste tento úvod k nasazení šablon do Azure. Dejte nám vědět, pokud máte v části pro zpětnou vazbu nějaké komentáře a návrhy.

Další série kurzů se podrobněji seznámí s nasazením šablon.