Exercício – Utilizar variáveis do Azure Resource Manager para armazenar expressões

Concluído

Neste exercício, armazenará a expressão do nome de conta de armazenamento do Azure numa variável de modelo do Azure Resource Manager (ARM). Em seguida, use essa variável para especificar o nome da conta de armazenamento a ser criada.

Neste exercício, usamos as Ferramentas do Gerenciador de Recursos do Azure para Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.

Adicionar uma variável

Adicione uma variável para armazenar a expressão do nome da conta de armazenamento em um só lugar no modelo.

  1. No Visual Studio Code, no arquivo azuredeploy.json, coloque o cursor entre as chaves no bloco "variables":{} de variáveis e pressione Enter.

  2. Escreva var entre as chavetas. Verá uma lista de fragmentos relacionados. Selecione arm-variable:

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

  3. Sua seção de variáveis se parece com este código:

    "variables": {"variable1": "value"},
    
  4. Altere o nome da variável para uniqueStorageName e altere o valor para "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]". Sua seção de variáveis se parece com este código:

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

    Repare que está a utilizar o parâmetro storagePrefix na expressão em vez de uma cadeia literal. De resto, esta é a mesma expressão que aprendeu na unidade anterior.

  5. Utilize a variável na secção de recursos. Altere os valores dos atributos name: e displayName para "[variables('uniqueStorageName')]"

  6. O arquivo inteiro se parece com este exemplo:

    {
        "$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, implementar o modelo

O modelo atualizado não tem alterações no recurso que você implantou, portanto, implantar esse modelo não faz alterações em seu ambiente do Azure.

Se quiser implementar este modelo com êxito, utilize os comandos da CLI do Azure abaixo. Certifique-se de que utiliza o mesmo valor de parâmetro storagePrefix que utilizou na última implementação.

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

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

Se quiser implementar este modelo com êxito, utilize os comandos do Azure PowerShell abaixo. Certifique-se de que utiliza o mesmo valor de parâmetro storagePrefix que utilizou na última implementação.

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