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

Ukończone

W tym ćwiczeniu dodasz parametr, aby zdefiniować nazwę konta usługi Azure Storage 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. Dodasz również 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

W tym miejscu szablon usługi ARM będzie bardziej elastyczny, dodając parametry, które można ustawić 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 to tak:

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Zmień parametr na 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 parametru powinien 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 będzie 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": [
        {
          "name": "[parameters('storageName')]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS",
            "tier": "Standard"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Zapisz plik.

Wdrażanie sparametryzowanego szablonu usługi ARM

W tym miejscu zmienisz nazwę wdrożenia, aby lepiej odzwierciedlić to wdrożenie i wypełnić 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

$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.

Dodawanie kolejnego parametru ograniczającego dozwolone wartości

W tym miejscu użyjesz parametrów, aby ograniczyć 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:

    "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 są umieszczane wartości, na które zezwoli ten parametr. Jeśli szablon zostanie uruchomiony z niedozwoloną wartością, wdrożenie zakończy się niepowodzeniem.

  4. Dodaj komentarz do tego parametru.

    Screenshot of the azuredeploy.json file showing the comment This is the allowed values for an Azure storage account in the line preceding the storageSKU parameter.

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

  5. Zaktualizuj sekcję resources, aby użyć parametru storageSKU. Ten krok ułatwi funkcja IntelliSense w programie Visual Studio Code.

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

    Cały plik będzie 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": [
        {
          "name": "[parameters('storageName')]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]",
            "tier": "Standard"
          }
        }
      ],
      "outputs": {}
    }
    
  6. Zapisz plik.

Wdrażanie szablonu usługi ARM

W tym miejscu wdrożysz pomyślnie 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 zakończy się niepowodzeniem zgodnie z oczekiwaniami.

  1. Uruchom następujące polecenia, aby wdrożyć szablon. 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

    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. Dozwolone wartości uniemożliwiają 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

    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.

    Screenshot of the Terminal window showing the deployment validation error.

  1. Uruchom następujące polecenia, aby wdrożyć szablon. 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

    $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. Dozwolone wartości uniemożliwiają 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

    $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.

    Screenshot of the Terminal window showing the deployment validation error.

Dodawanie danych wyjściowych do szablonu usługi ARM

W tym miejscu dodasz do outputs sekcji szablonu usługi ARM, aby wyświetlić punkty końcowe 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 klawisz Enter, a następnie wprowadź wartość out. Uzyskasz listę powiązanych fragmentów kodu. Wybierz pozycję new-output. Spowoduje to dodanie ogólnych danych wyjściowych do szablonu. Będzie to 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, zostanie zwrócony 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 punktów końcowych jako dane 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 zaktualizuje istniejący zasób, zamiast tworzyć nowy.

  1. Uruchom następujące polecenia, aby wdrożyć szablon. 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.

    Screenshot of the Terminal window showing the primary endpoints output as JSON.

  1. Uruchom następujące polecenia, aby wdrożyć szablon. 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.

    Screenshot of the Terminal window showing the primary endpoints output as 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.

Screenshot of the Azure portal showing the output selection in the left menu.