Criar arquivo de parâmetro do Gerenciador de Recursos

Em vez de passar parâmetros como valores embutidos em seu script, você pode usar um arquivo JSON que contém os valores de parâmetro. Este artigo mostra como criar um arquivo de parâmetro que você usa com um modelo JSON.

Gorjeta

Recomendamos o Bicep porque ele oferece os mesmos recursos que os modelos ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte Arquivos de parâmetro.

Arquivo de parâmetros

Um arquivo de parâmetro usa o seguinte formato:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "value": "<second-value>"
    }
  }
}

Vale a pena notar que o arquivo de parâmetros salva valores de parâmetros como texto sem formatação. Por motivos de segurança, essa abordagem não é recomendada para valores confidenciais, como senhas. Se você precisar passar um parâmetro com um valor sensível, mantenha o valor em um cofre de chaves. Em seguida, no arquivo de parâmetros, inclua uma referência ao cofre de chaves. Durante a implantação, o valor confidencial é recuperado com segurança. Para obter mais informações, consulte Usar o Azure Key Vault para passar o valor do parâmetro seguro durante a implantação.

O arquivo de parâmetros a seguir inclui um valor de texto sem formatação e um valor confidencial armazenado em um cofre de chaves.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "reference": {
        "keyVault": {
          "id": "<resource-id-key-vault>"
        },
        "secretName": "<secret-name>"
      }
    }
  }
}

Para obter mais informações sobre como usar valores de um cofre de chaves, consulte Usar o Cofre de Chaves do Azure para passar valor de parâmetro seguro durante a implantação.

Definir valores de parâmetros

Para determinar como definir os nomes e valores dos parâmetros, abra o modelo JSON e revise a parameters seção. O exemplo a seguir mostra os parâmetros do modelo JSON.

"parameters": {
  "storagePrefix": {
    "type": "string",
    "maxLength": 11
  },
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS",
    "Standard_ZRS",
    "Premium_LRS"
    ]
  }
}

No arquivo de parâmetros, o primeiro detalhe a ser observado é o nome de cada parâmetro. Os nomes dos parâmetros no arquivo de parâmetros devem corresponder aos nomes dos parâmetros no modelo.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
    },
    "storageAccountType": {
    }
  }
}

Observe o tipo de parâmetro. Os tipos de parâmetro no arquivo de parâmetros devem usar os mesmos tipos do modelo. Neste exemplo, ambos os tipos de parâmetro são strings.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": ""
    },
    "storageAccountType": {
      "value": ""
    }
  }
}

Verifique o modelo para parâmetros com um valor padrão. Se um parâmetro tiver um valor padrão, você poderá fornecer um valor no arquivo de parâmetro, mas ele não será necessário. O valor do arquivo de parâmetro substitui o valor padrão do modelo.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "" // This value must be provided.
    },
    "storageAccountType": {
      "value": "" // This value is optional. Template will use default value if not provided.
    }
  }
}

Verifique os valores permitidos do modelo e quaisquer restrições, como comprimento máximo. Esses valores especificam o intervalo de valores que você pode fornecer para um parâmetro. Neste exemplo, storagePrefix pode ter um máximo de 11 caracteres e storageAccountType deve especificar um valor permitido.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "storage"
    },
    "storageAccountType": {
      "value": "Standard_ZRS"
    }
  }
}

Nota

Seu arquivo de parâmetros só pode conter valores para parâmetros definidos no modelo. Se o arquivo de parâmetros contiver parâmetros extras que não correspondem aos parâmetros do modelo, você receberá um erro.

Formatos de tipo de parâmetro

O exemplo a seguir mostra os formatos de diferentes tipos de parâmetros: string, integer, boolean, array e object.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "exampleString": {
      "value": "test string"
    },
    "exampleInt": {
      "value": 4
    },
    "exampleBool": {
      "value": true
    },
    "exampleArray": {
      "value": [
        "value 1",
        "value 2"
      ]
    },
    "exampleObject": {
      "value": {
        "property1": "value1",
        "property2": "value2"
      }
    }
  }
}

Implantar modelo com arquivo de parâmetro

Na CLI do Azure, você passa um arquivo de parâmetro local usando @ e o nome do arquivo de parâmetro. Por exemplo, @storage.parameters.json.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Para obter mais informações, consulte Implantar recursos com modelos ARM e CLI do Azure.

No Azure PowerShell, você passa um arquivo de parâmetro local usando o TemplateParameterFile parâmetro.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.json `
  -TemplateParameterFile C:\MyTemplates\storage.parameters.json

Para obter mais informações, consulte Implantar recursos com modelos ARM e Azure PowerShell.

Nota

Não é possível usar um arquivo de parâmetro com a folha de modelo personalizado no portal.

Gorjeta

Se você estiver usando o projeto do Grupo de Recursos do Azure no Visual Studio, verifique se o arquivo de parâmetro tem sua Ação de Criação definida como Conteúdo.

Nome de ficheiro

A convenção geral de nomenclatura para o arquivo de parâmetros é incluir parâmetros no nome do modelo. Por exemplo, se o modelo tiver o nome azuredeploy.json, o arquivo de parâmetros será nomeado azuredeploy.parameters.json. Essa convenção de nomenclatura ajuda você a ver a conexão entre o modelo e os parâmetros.

Para implantar em ambientes diferentes, crie mais de um arquivo de parâmetro. Ao nomear os arquivos de parâmetro, identifique seu uso, como desenvolvimento e produção. Por exemplo, use azuredeploy.parameters-dev.json e azuredeploy.parameters-prod.json para implantar recursos.

Precedência dos parâmetros

Você pode usar parâmetros embutidos e um arquivo de parâmetro local na mesma operação de implantação. Por exemplo, você pode especificar alguns valores no arquivo de parâmetro local e adicionar outros valores embutidos durante a implantação. Se você fornecer valores para um parâmetro no arquivo de parâmetro local e embutido, o valor embutido terá precedência.

É possível usar um arquivo de parâmetro externo, fornecendo o URI para o arquivo. Quando você usa um arquivo de parâmetro externo, não pode passar outros valores embutidos ou de um arquivo local. Todos os parâmetros embutidos são ignorados. Forneça todos os valores de parâmetro no arquivo externo.

Conflitos de nome de parâmetro

Se o seu modelo incluir um parâmetro com o mesmo nome de um dos parâmetros no comando PowerShell, o PowerShell apresentará o parâmetro do seu modelo com o postfix FromTemplate. Por exemplo, um parâmetro nomeado ResourceGroupName em seu modelo entra em conflito com o ResourceGroupName parâmetro no cmdlet New-AzResourceGroupDeployment . Você será solicitado a fornecer um valor para ResourceGroupNameFromTemplate. Para evitar essa confusão, use nomes de parâmetros que não são usados para comandos de implantação.

Próximos passos