Ćwiczenie — dodawanie parametrów i danych wyjściowych do szablonu usługi Azure Resource Manager

Ukończone

W tym ćwiczeniu dodasz parametr definiujący nazwę konta magazynu platformy Azure podczas wdrażania. Następnie dodasz parametr, aby zdefiniować dozwolone jednostki SKU konta magazynu i zdefiniować, który z nich ma być używany na potrzeby tego wdrożenia. Można również dodać użyteczność do szablonu usługi Azure Resource Manager (szablon usługi ARM), dodając dane wyjściowe, których można użyć w dalszej części procesu wdrażania.

Tworzenie parametrów szablonu usługi ARM

Zwiększysz teraz elastyczność swojego szablonu usługi ARM przez dodanie parametrów, które można ustawiać w czasie wykonywania. Utwórz parametr dla wartości storageName.

  1. W pliku azuredeploy.json w programie Visual Studio Code umieść kursor wewnątrz nawiasów klamrowych w atrybucie parameters. Wygląda na to: "parameters":{},

  2. Naciśnij klawisz Enter, a następnie wprowadź ciąg par. Zostanie wyświetlona lista powiązanych fragmentów kodu. Wybierz nowy parametr, który dodaje do szablonu parametr ogólny. Wygląda na to, że ten przykład:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Zmień parametr z parametru1 na storageName i pozostaw typ jako ciąg. Dodaj właściwość minLength o wartości 3 i właściwość maxLength o wartości 24. Dodaj wartość opisu Nazwa zasobu usługi Azure Storage.

  4. Blok parametrów powinien teraz wyglądać następująco:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. Użyj nowego parametru w bloku resources zarówno dla wartości name, jak i displayName. Cały plik wygląda następująco:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2023-05-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Zapisz plik.

Wdrażanie sparametryzowanego szablonu usługi ARM

W tym miejscu zmienisz nazwę wdrożenia, aby lepiej odzwierciedlała jego funkcję, i wypełnisz wartość nowego parametru.

Uruchom następujące polecenia interfejsu wiersza polecenia platformy Azure w terminalu. Jest to ten sam fragment kodu, który był wcześniej używany, ale nazwa wdrożenia została zmieniona. Podaj unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej lekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storageName={your-unique-name}

Uruchom następujące polecenia programu Azure PowerShell w terminalu. Jest to ten sam fragment kodu, który był wcześniej używany, ale nazwa wdrożenia została zmieniona. Podaj unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej lekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storageName {your-unique-name}

Sprawdzanie wdrożenia

  1. Po zakończeniu wdrażania wróć do witryny Azure Portal w przeglądarce. Przejdź do grupy zasobów i sprawdź, czy istnieją teraz 3 Pomyślnie wdrożeń. Wybierz ten link.

    Zauważ, że wszystkie trzy wdrożenia znajdują się na liście.

  2. Zapoznaj się z wdrożeniem addnameparameter, tak jak wcześniej.

Dodaj inny parametr, który ogranicza dozwolone wartości

W tym miejscu za pomocą parametrów ograniczysz wartości dozwolone dla parametru.

  1. Umieść kursor za zamykającym nawiasem klamrowym parametru storageName. Dodaj przecinek i naciśnij klawisz Enter.

  2. Ponownie wprowadź ciąg par i wybierz pozycję new-parameter.

  3. Zmień nowy parametr ogólny na następujący kod:

    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    W tym miejscu znajduje się lista wartości dozwolonych przez ten parametr. Jeśli szablon zostanie uruchomiony z wartością, która nie jest dozwolona, wdrożenie zakończy się niepowodzeniem.

  4. Dodaj komentarz do tego parametru.

    Zrzut ekranu przedstawiający plik azuredeploy.json z komentarzem To są dozwolone wartości dla konta usługi Azure Storage w wierszu poprzedzającym parametr storageSKU.

    Szablony usługi Resource Manager obsługują komentarze // i /* */.

  5. Zaktualizuj sekcję resources, aby użyć parametru storageSKU. Jeśli korzystasz z funkcji IntelliSense w programie Visual Studio Code, ułatwi to wykonanie tego kroku.

    "sku": {
         "name": "[parameters('storageSKU')]"
       }
    

    Cały plik wygląda następująco:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageName": {
          "type": "string",
          "minLength": 3,
          "maxLength": 24,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        },
        "storageSKU": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_RAGRS",
            "Standard_ZRS",
            "Premium_LRS",
            "Premium_ZRS",
            "Standard_GZRS",
            "Standard_RAGZRS"
          ]
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2023-05-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Zapisz plik.

Wdrażanie szablonu usługi ARM

W tej lekcji pomyślnie wdrożysz aplikację przy użyciu parametru storageSKU, który znajduje się na liście dozwolonych. Następnie spróbujesz wdrożyć szablon przy użyciu storageSKU parametru, który nie znajduje się na liście dozwolonych. Drugie wdrożenie kończy się niepowodzeniem zgodnie z oczekiwaniami.

  1. Wdróż szablon, uruchamiając następujące polecenia. Podaj unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_GRS storageName={your-unique-name}
    

    Zezwól na zakończenie tego wdrożenia. Zgodnie z oczekiwaniami to wdrożenie kończy się powodzeniem. Lista dozwolonych wartości uniemożliwia użytkownikom szablonu przekazywanie wartości parametrów, które nie działają dla zasobu. Zobaczmy, co się stanie w przypadku podania nieprawidłowej jednostki SKU.

  2. Uruchom następujące polecenia, aby wdrożyć szablon z niedozwolonym parametrem. Zmieniono parametr storageSKU na Podstawowa. Podaj unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Basic storageName={your-unique-name}
    

    To wdrożenie kończy się niepowodzeniem. Zwróć uwagę na błąd.

    Zrzut ekranu przedstawiający okno terminalu z wyświetlonym błędem weryfikacji wdrożenia.

  1. Wdróż szablon, uruchamiając następujące polecenia. Podaj unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_GRS
    

    Zezwól na zakończenie tego wdrożenia. Zgodnie z oczekiwaniami to wdrożenie kończy się powodzeniem. Lista dozwolonych wartości uniemożliwia użytkownikom szablonu przekazywanie wartości parametrów, które nie działają dla zasobu. Zobaczmy, co się stanie w przypadku podania nieprawidłowej jednostki SKU.

  2. Uruchom następujące polecenia, aby wdrożyć szablon z niedozwolonym parametrem. Zmieniono parametr storageSKU na Podstawowa. Podaj unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Basic
    

    To wdrożenie kończy się niepowodzeniem. Zwróć uwagę na błąd.

    Zrzut ekranu przedstawiający okno terminalu z wyświetlonym błędem weryfikacji wdrożenia.

Dodawanie danych wyjściowych do szablonu usługi ARM

W tym miejscu dodasz do sekcji outputs szablonu usługi Resource Manager kod umożliwiający wyprowadzenie informacji o punktach końcowych dla zasobu konta magazynu.

  1. W pliku azuredeploy.json w programie Visual Studio Code umieść kursor wewnątrz nawiasów klamrowych w atrybucie "outputs":{},outputs .

  2. Naciśnij Enter, a następnie wprowadź wartość out. Zostanie wyświetlona lista powiązanych fragmentów kodu. Wybierz pozycję new-output. Dodaje ogólne dane wyjściowe do szablonu, który wygląda następująco:

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Zmień wartość "output1" na "storageEndpoint", a następnie zmień wartość type na "object". Zmień wartość na value "[reference(parameters('storageName')).primaryEndpoints]". To wyrażenie jest tym, które zostało opisane w poprzedniej lekcji, która pobiera dane punktu końcowego. Ponieważ określono obiekt jako typ, zwraca on obiekt w formacie JSON.

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    
  4. Zapisz plik.

Wdrażanie szablonu usługi ARM z danymi wyjściowymi

W tym miejscu wdrożysz szablon i zobaczysz dane wyjściowe z informacjami o punktach końcowych w formacie JSON. Musisz podać unikatową nazwę dla parametru storageName. Pamiętaj, że ta nazwa musi być unikatowa na całej platformie Azure. Możesz użyć unikatowej nazwy utworzonej w ostatniej sekcji. W takim przypadku platforma Azure aktualizuje zasób zamiast tworzyć nowe.

  1. Wdróż szablon, uruchamiając następujące polecenia. Pamiętaj, aby zastąpić frazę {your-unique-name} unikatowym ciągiem.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addoutputs-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_LRS storageName={your-unique-name}
    

    Zwróć uwagę na dane wyjściowe.

    Zrzut ekranu przedstawiający okno terminalu z danymi wyjściowymi podstawowych punktów końcowych w formacie JSON.

  1. Wdróż szablon, uruchamiając następujące polecenia. Pamiętaj, aby zastąpić frazę {your-unique-name} unikatowym ciągiem.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addOutputs-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_LRS
    

    Zwróć uwagę na dane wyjściowe.

    Zrzut ekranu przedstawiający okno terminalu z danymi wyjściowymi podstawowych punktów końcowych w formacie JSON.

Sprawdzanie wdrożenia z danymi wyjściowymi

W witrynie Azure Portal przejdź do wdrożenia addOutputs. Możesz tu również znaleźć dane wyjściowe.

Zrzut ekranu witryny Azure Portal przedstawiający wybór danych wyjściowych w menu po lewej stronie.