Ejercicio: uso de variables de Azure Resource Manager para almacenar expresiones

Completado

En este ejercicio, se almacena la expresión de nombre de la cuenta de almacenamiento de Azure en una variable de plantilla de Azure Resource Manager (ARM). A continuación, use esa variable para especificar el nombre de la cuenta de almacenamiento que se va a crear.

En este ejercicio, usaremos las Herramientas de Azure Resource Manager para Visual Studio Code. Asegúrese de instalar esta extensión en Visual Studio Code.

Adición de una variable

Agregue una variable para almacenar la expresión del nombre de su cuenta de almacenamiento en un lugar de la plantilla.

  1. En Visual Studio Code, en el archivo azuredeploy.json, coloque el cursor entre las llaves del bloque de variables "variables":{} y pulse Entrar.

  2. Escriba var dentro de las llaves. Verá una lista de fragmentos de código relacionados. Seleccione arm-variable:

    Screenshot of Visual Studio Code that shows the snippets for Azure Resource Manager template variables.

  3. La sección de variables será similar a este código:

    "variables": {"variable1": "value"},
    
  4. Cambie el nombre de la variable a uniqueStorageName y el valor por "[toLower(concat(parameters("storagePrefix"),uniqueString(resourceGroup().id)))]". La sección de variables será similar a este código:

    "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
    

    Observe que en la expresión se usa el parámetro storagePrefix, en lugar de una cadena literal. Por lo demás, es la misma expresión que ha visto en la unidad anterior.

  5. Use la variable en la sección de recursos. Cambie los valores de los atributos name: y displayName por "[variables('uniqueStorageName')]".

  6. El archivo completo tiene el siguiente aspecto:

    {
        "$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"
                ]
            }
       },
        "functions": [],
        "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
        "resources": [{
            "name": "[variables('uniqueStorageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": {
                "displayName": "[variables('uniqueStorageName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    

Opcionalmente, implemente la plantilla.

La plantilla actualizada no realiza ningún cambio en el recurso implementado, por lo que la implementación de esta plantilla no comporta ningún cambio en el entorno de Azure.

Si quiere implementar la plantilla para comprobar que se aplica correctamente, use los siguientes comandos de la CLI de Azure. Asegúrese de usar el mismo valor de parámetro storagePrefix de la última implementación.

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

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

Si quiere implementar la plantilla para comprobar que se aplica correctamente, use los siguientes comandos de Azure PowerShell. Asegúrese de usar el mismo valor de parámetro storagePrefix de la última implementación.

$templateFile = "azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addVariable-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storagePrefix {your-Prefix}