Samouczek: wdrażanie szablonu usługi ARM przy użyciu plików parametrów

Z tego samouczka dowiesz się, jak używać plików parametrów do przechowywania wartości przekazywanych podczas wdrażania. W poprzednich samouczkach użyto wbudowanych parametrów za pomocą polecenia wdrożenia. Takie podejście działało podczas testowania szablonu usługi Azure Resource Manager (szablonu usługi ARM), ale podczas automatyzowania wdrożeń można łatwiej przekazać zestaw wartości dla danego środowiska. Pliki parametrów ułatwiają pakowanie wartości parametrów dla określonego środowiska. W tym samouczku utworzysz pliki parametrów dla środowisk programistycznych i produkcyjnych. Ukończenie tej instrukcji trwa 12 minut .

Wymagania wstępne

Zalecamy ukończenie samouczka dotyczącego tagów, ale nie jest to wymagane.

Musisz mieć Visual Studio Code z rozszerzeniem Resource Manager Tools oraz interfejsem Azure PowerShell lub interfejsem azure Command-Line (CLI). Aby uzyskać więcej informacji, zobacz narzędzia szablonów.

Przeglądanie szablonu

Szablon ma wiele parametrów, które można podać podczas wdrażania. Na końcu poprzedniego samouczka szablon miał następujący plik 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]"
    }
  }
}

Ten szablon działa dobrze, ale teraz chcesz łatwo zarządzać parametrami przekazywanymi dla szablonu.

Dodawanie plików parametrów

Pliki parametrów to pliki JSON ze strukturą podobną do szablonu. W pliku podaj wartości parametrów, które chcesz przekazać podczas wdrażania.

W pliku parametrów podajesz wartości parametrów w szablonie. Nazwa każdego parametru w pliku parametrów musi być zgodna z nazwą parametru w szablonie. Nazwa jest niewrażliwa na wielkość liter, ale aby łatwo zobaczyć pasujące wartości, zalecamy dopasowanie wielkości liter z szablonu.

Nie musisz podawać wartości dla każdego parametru. Jeśli nieokreślony parametr ma wartość domyślną, ta wartość jest używana podczas wdrażania. Jeśli parametr nie ma wartości domyślnej i nie jest określony w pliku parametrów, zostanie wyświetlony monit o podanie wartości podczas wdrażania.

Nie można określić nazwy parametru w pliku parametrów, który nie jest zgodny z nazwą parametru w szablonie. Podczas podania nieznanych parametrów występuje błąd.

W Visual Studio Code utwórz nowy plik z następującą zawartością. Zapisz plik o nazwie 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"
      }
    }
  }
}

Ten plik to plik parametrów dla środowiska deweloperskiego. Zwróć uwagę, że używa Standard_LRS dla konta magazynu, nazwuje zasoby z prefiksem deweloperskim i ustawia Environment tag na Dev.

Ponownie utwórz nowy plik z następującą zawartością. Zapisz plik pod nazwą 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"
      }
    }
  }
}

Ten plik jest plikiem parametrów dla środowiska produkcyjnego. Zwróć uwagę, że używa Standard_GRS dla konta magazynu, nazw zasobów z prefiksem contoso i ustawia Environment tag na Production. W rzeczywistym środowisku produkcyjnym warto również używać usługi App Service z jednostkami SKU inną niż bezpłatna, ale używamy tej jednostki SKU na potrzeby tego samouczka.

Wdrażanie szablonu

Użyj interfejsu wiersza polecenia platformy Azure lub Azure PowerShell, aby wdrożyć szablon.

W ramach ostatniego testu szablonu utwórzmy dwie nowe grupy zasobów. Jeden dla środowiska deweloperskiego i jeden dla środowiska produkcyjnego.

W przypadku zmiennych szablonu i parametrów zastąp {path-to-the-template-file}nawiasy klamrowe , {path-to-azuredeploy.parameters.dev.json}{path-to-azuredeploy.parameters.prod.json}i nawiasy klamrowe {} ścieżkami pliku szablonu i parametru.

Najpierw wdróżmy je w środowisku deweloperskim.

$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

Teraz wdrożymy w środowisku produkcyjnym.

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

Uwaga

Jeśli wdrożenie zakończy się niepowodzeniem, użyj przełącznika verbose , aby uzyskać informacje o tworzonych zasobach. Użyj przełącznika, debug aby uzyskać więcej informacji na temat debugowania.

Weryfikowanie wdrożenia

Wdrożenie można zweryfikować, eksplorując grupy zasobów z Azure Portal.

  1. Zaloguj się do Azure portal.
  2. W menu po lewej stronie wybierz pozycję Grupy zasobów.
  3. W tym samouczku zostaną wyświetlone dwie nowe grupy zasobów wdrożone.
  4. Wybierz grupę zasobów i wyświetl wdrożone zasoby. Zwróć uwagę, że są one zgodne z wartościami określonymi w pliku parametrów dla tego środowiska.

Czyszczenie zasobów

  1. W Azure Portal wybierz pozycję Grupy zasobów z menu po lewej stronie.

  2. Wybierz nazwę hiperlinkowanej grupy zasobów obok pola wyboru. Jeśli ukończysz tę serię, masz trzy grupy zasobów do usunięcia — myResourceGroup, myResourceGroupDev i myResourceGroupProd.

  3. Wybierz ikonę Usuń grupę zasobów w górnym menu.

    Przestroga

    Usunięcie grupy zasobów jest nieodwracalne.

  4. Wpisz nazwę grupy zasobów w wyświetlonym oknie podręcznym i wybierz pozycję Usuń.

Następne kroki

Gratulacje. Ukończono to wprowadzenie do wdrażania szablonów na platformie Azure. Daj nam znać, jeśli masz jakiekolwiek komentarze i sugestie w sekcji opinii.

Następna seria samouczków zawiera bardziej szczegółowe informacje na temat wdrażania szablonów.