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

Concluído

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

Neste exercício, nós usamos as Ferramentas do Azure Resource Manager para Visual Studio Code. É necessário que você instale essa extensão no Visual Studio Code.

Adicionar uma variável

Adicionar uma variável para armazenar a expressão de nome da conta de armazenamento em um único lugar no modelo.

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

  2. Digite var dentro das chaves. Você verá uma lista de snippets de código 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)))]"
      },
    

    Observe que você está usando o parâmetro storagePrefix na expressão, em vez de uma cadeia de caracteres literal. Exceto por esse detalhe, essa é a mesma expressão sobre a qual você aprendeu na unidade anterior.

  5. Use a variável na seção 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, implante o modelo

O modelo atualizado não tem nenhuma alteração no recurso implantado; portanto, a implantação desse modelo não faz nenhuma alteração no ambiente do Azure.

Se você quiser implantar esse modelo para ver se ele foi bem-sucedido, use os comandos da CLI do Azure a seguir. É preciso que você use o mesmo valor do parâmetro storagePrefix usado na última implantaçã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 você quiser implantar esse modelo para ver se ele foi bem-sucedido, use os comandos do Azure PowerShell a seguir. É preciso que você use o mesmo valor do parâmetro storagePrefix usado na última implantação.

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