Kurz: Použití souborů parametrů k nasazení šablony ARM

V tomto kurzu se naučíte používat soubory parametrů k ukládání hodnot, které předáváte během nasazování. V předchozích kurzech jste s příkazem nasazení použili vložené parametry. Tento přístup fungoval pro testování šablony Azure Resource Manager (šablona ARM), ale při automatizaci nasazení může být jednodušší předat sadu hodnot pro vaše prostředí. Soubory parametrů usnadňují balení 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é.

Musíte mít Visual Studio Code s rozšířením Resource Manager Tools a Azure PowerShell nebo Rozhraní příkazového řádku (Azure Command-Line Interface). Další informace najdete v tématu Nástroje šablon.

Zkontrolovat šablonu

Š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áváte šabloně.

Přidání souborů parametrů

Soubory parametrů jsou soubory JSON se strukturou, která se podobá 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ě. U názvu se nerozlišují velká a malá písmena, ale pokud chcete snadno zobrazit odpovídající hodnoty, doporučujeme, abyste v šabloně shodovaly velká písmena.

Nemusíte zadávat hodnotu pro každý parametr. Pokud má nespecifikovaný parametr 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 soubor parametrů pro vývojové prostředí. Všimněte si, že pro účet úložiště používá Standard_LRS , pojmenuje prostředky s předponou dev 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 soubor 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žít službu App Service s jinou skladovou položkou než bezplatnou, ale tuto skladovou položku používáme pro tento kurz.

Nasazení šablony

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

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

U š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é závorky {} cestami k souboru šablony a parametrů.

Nejprve ho 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 nasazení selže, použijte verbose přepínač k získání informací o prostředcích, které vytváříte. 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. Uvidíte dvě nové skupiny prostředků, které nasadíte v tomto kurzu.
  4. Vyberte některou ze skupin 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 v nabídce vlevo vyberte Skupiny prostředků.

  2. Zaškrtněte název skupiny prostředků s hypertextovými odkazy vedle zaškrtávacího políčka. Pokud dokončíte tuto řadu, budete mít 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 nějaké komentáře a návrhy v části zpětné vazby.

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