Exerciții - Adăugarea parametrilor și ieșirilor la șablonul Azure Resource Manager

Finalizat

În acest exercițiu, adăugați un parametru pentru a defini numele contului de stocare Azure în timpul implementării. Apoi adăugați un parametru pentru a defini SKU-urile de cont de stocare permise și a defini pe care să le utilizați pentru această implementare. De asemenea, adăugați utilitate la șablonul Azure Resource Manager (șablon ARM), adăugând un rezultat pe care îl puteți utiliza mai târziu în procesul de implementare.

Crearea parametrilor pentru șablonul ARM

Aici vă faceți șablonul ARM mai flexibil, adăugând parametri care pot fi setați la momentul rulării. Creați un parametru pentru valoarea storageName.

  1. În fișierul azuredeploy.json din Visual Studio Code, actualizați "parameters":{},, astfel încât să arate astfel:

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    

    Pentru a formata corect fișierul JSON, apăsați Alt+Shift+F.

  2. Utilizați noul parametru din blocul resources atât din valorile name, cât și displayName. Întregul fișier arată astfel:

    {
      "$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": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  3. Salvați fișierul.

Implementarea șablonului ARM parametrizat

Aici modificați numele implementării pentru a reflecta mai bine ce face această implementare și a completa o valoare pentru parametrul nou.

Rulați următoarele comenzi Azure CLI în terminal. Acest script este identic cu cel pe care l-ați utilizat anterior, cu excepția faptului că numele implementării a fost modificat. Introduceți o valoare unică pentru storageName parametru. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

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}

Rulați următoarele comenzi Azure PowerShell în terminal. Acest script este identic cu cel pe care l-ați utilizat mai devreme, cu excepția faptului că numele implementării a fost schimbat. Introduceți o valoare unică pentru storageName parametru. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

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

Verificați implementarea

  1. Când se termină implementarea, reveniți la portalul Azure în browser. Accesați grupul de resurse și vedeți că există acum 3 implementări reușite. Selectați acest link.

    Observați că toate cele trei implementări se află în listă.

  2. Explorați implementarea addnameparameter așa cum ați procedat anterior.

Adăugați un alt parametru care limitează valorile permise

Aici utilizați parametri pentru a limita valorile permise pentru un parametru.

  1. Adăugați un nou parametru numit storageSKU la parameters secțiunea fișierului azuredeploy.json .

    // This is the allowed values for an Azure storage account
    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    Prima linie este un comentariu. Șabloanele ARM acceptă // și /* */ comentarii.

  2. Actualizați resursele pentru a utiliza parametrul storageSKU. Dacă beneficiați de IntelliSense în Visual Studio Code, acest pas vă ajută să faceți acest pas mai ușor.

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

    Întregul fișier arată astfel:

    {
      "$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": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  3. Salvați fișierul.

Implementarea șablonului ARM

Aici implementați cu succes utilizând un parametru storageSKU care se află în lista de permisiuni. Apoi încercați să implementați șablonul utilizând un parametru storageSKU care nu se află în lista permisă. A doua implementare nu reușește așa cum era de așteptat.

  1. Implementați șablonul rulând următoarele comenzi. Completați un nume unic pentru parametrul storageName. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

    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}
    

    Permiteți terminarea acestei implementări. Această implementare reușește așa cum era de așteptat. Lista de valori permise împiedică utilizatorii șablonului să treacă în valori parametri care nu funcționează pentru resursă. Să vedem ce se întâmplă atunci când furnizați un SKU nevalid.

  2. Rulați următoarele comenzi pentru a implementa șablonul cu un parametru care nu este permis. Aici ați modificat parametrul storageSKU la De bază. Completați un nume unic pentru parametrul storageName. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

    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}
    

    Această implementare nu reușește. Observați eroarea.

    Captură de ecran a ferestrei Terminal care afișează eroarea de validare a implementării.

  1. Implementați șablonul rulând următoarele comenzi. Completați un nume unic pentru parametrul storageName. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

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

    Permiteți terminarea acestei implementări. Această implementare reușește așa cum era de așteptat. Lista de valori permise împiedică utilizatorii șablonului să treacă în valori parametri care nu funcționează pentru resursă. Să vedem ce se întâmplă atunci când furnizați un SKU nevalid.

  2. Rulați următoarele comenzi pentru a implementa șablonul cu un parametru care nu este permis. Aici ați modificat parametrul storageSKU la De bază. Completați un nume unic pentru parametrul storageName. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

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

    Această implementare nu reușește. Observați eroarea.

    Captură de ecran a ferestrei Terminal care afișează eroarea de validare a implementării.

Adăugarea de ieșire la șablonul ARM

Aici adăugați la secțiunea outputs a șablonului ARM pentru a genera punctele finale pentru resursa contului de stocare.

  1. În fișierul azuredeploy.json din Visual Studio Code, actualizați "outputs":{}, astfel încât să arate astfel:

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    }
    
  2. Salvați fișierul.

Implementarea șablonului ARM cu o ieșire

Aici implementați șablonul și vedeți rezultatul punctelor finale ca JSON. Trebuie să completați un nume unic pentru parametrul storageName. Trebuie să fie unic la nivel global în Azure, să conțină între 3 și 24 de caractere și să includă numai litere mici, cifre și cratime. Puteți reutiliza numele unic pe care l-ați creat în unitatea anterioară; dacă faceți acest lucru, Azure va actualiza resursa existentă în loc să creeze una nouă.

  1. Implementați șablonul rulând următoarele comenzi. Nu uitați să înlocuiți {your-unique-name} cu un șir unic pentru dvs.

    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}
    

    Observați rezultatul.

    Captură de ecran a ferestrei Terminal care afișează rezultatul punctelor finale principale ca JSON.

  1. Implementați șablonul rulând următoarele comenzi. Nu uitați să înlocuiți {your-unique-name} cu un șir unic pentru dvs.

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

    Observați rezultatul.

    Captură de ecran a ferestrei Terminal care afișează rezultatul punctelor finale principale ca JSON.

Verificați implementarea de ieșire

În portalul Azure, accesați addOutputs implementare. Puteți găsi ieșirea și acolo.

Captură de ecran a portalului Azure care afișează selecția de ieșire în meniul din stânga.