Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Por vezes, é necessário implementar opcionalmente um recurso num template do Azure Resource Manager (template ARM). Use o condition elemento para especificar se o recurso é implementado. O valor da condição resolve-se para verdadeiro ou falso. Quando o valor é verdadeiro, o recurso é criado. Quando o valor é false, o recurso não é criado. O valor só pode ser aplicado a todo o recurso.
Observação
A implantação condicional não se propaga para recursos filhos. Se desejar implantar condicionalmente um recurso e os seus recursos filiais, deverá aplicar a mesma condição a todos os tipos de recurso.
Sugestão
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 Implementações condicionais.
Condição de implantação
Pode passar um valor de parâmetro que indica se um recurso foi implementado. O exemplo seguinte implementa condicionalmente uma zona DNS.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"deployZone": {
"type": "bool",
"defaultValue": true
}
},
"functions": [],
"resources": [
{
"condition": "[parameters('deployZone')]",
"type": "Microsoft.Network/dnsZones",
"apiVersion": "2023-07-01-preview",
"name": "myZone",
"location": "global",
"properties": {
"zoneType": "Public"
}
}
]
}
Para um exemplo mais complexo, veja Azure SQL logical server.
Recurso novo ou existente
Você pode usar a implantação condicional para criar um novo recurso ou usar um existente. O exemplo seguinte mostra como implementar uma nova conta de armazenamento ou usar uma conta de armazenamento existente.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"newOrExisting": {
"type": "string",
"defaultValue": "new",
"allowedValues": [
"new",
"existing"
]
}
},
"resources": [
{
"condition": "[equals(parameters('newOrExisting'), 'new')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
{
"condition": "[equals(parameters('newOrExisting'), 'existing')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]"
}
],
"outputs": {
"storageAccountId": {
"type": "string",
"value": "[if(equals(parameters('newOrExisting'), 'new'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]"
}
}
}
Quando o parâmetro newOrExisting é definido como novo, a condição é avaliada como true. A conta de armazenamento foi implantada. Caso contrário, a conta de armazenamento existente é utilizada.
Para um modelo completo que utiliza o condition elemento, veja VM com uma Rede Virtual, Armazenamento e IP Público novos ou existentes.
Funções de tempo de execução
Se usares uma função de referência ou lista com um recurso que está condicionalmente implantado, a função é avaliada mesmo que o recurso não seja implementado. Recebes um erro se a função se referir a um recurso que não existe.
Use a função if para garantir que a função só é avaliada para condições quando o recurso é implementado. Consulte a função if para um modelo de exemplo que utiliza if e reference com um recurso condicionalmente implantado.
Defines um recurso como dependente de um recurso condicional exatamente como farias com qualquer outro recurso. Quando um recurso condicional não é implementado, o Azure Resource Manager remove-o automaticamente das dependências necessárias.
Modo completo
Se implementares um template em modo completo e um recurso não for implementado porque condition avalia falso, o resultado depende da versão da API REST que usas para implementar o template. Se usar uma versão anterior a 2019-05-10, o recurso não é eliminado. A partir de 2019-05-10, o recurso é eliminado. As versões mais recentes do Azure PowerShell e do Azure CLI eliminam o recurso quando a condição é falsa.
Próximos passos
- Para um módulo Learn que cobre a implementação condicional, consulte Gerir implementações complexas na cloud utilizando funcionalidades avançadas de templates ARM.
- Para obter recomendações sobre como criar modelos, consulte Práticas recomendadas de modelo ARM.
- Para criar múltiplas instâncias de um recurso, veja Iteração de recursos em templates ARM.