Funções lógicas para modelos do ARM

O Resource Manager oferece diversas funções para fazer comparações no modelo do ARM (Azure Resource Manager):

Dica

Recomendamos o Bicep porque ele oferece as mesmas funcionalidades que os modelos do ARM e a sintaxe é mais fácil de usar. Para saber mais, confira a função lógica bool e os operadores lógicos.

e

and(arg1, arg2, ...)

Verifica se todos os valores de parâmetros são verdadeiros.

Não há suporte para a função and no Bicep. Use o operador && em vez disso.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim booleano O primeiro valor para verificar se é verdadeiro.
arg2 Sim booleano O segundo valor para verificar se é verdadeiro.
mais argumentos Não booleano Argumentos adicionais para verificar se são verdadeiros.

Valor retornado

Retorna True se todos os valores forem verdadeiros; caso contrário, False.

Exemplos

O exemplo a seguir mostra como usar funções lógicas.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
andExampleOutput Bool Falso
orExampleOutput Bool True
notExampleOutput Bool Falso

bool

bool(arg1)

Converte o parâmetro em um booliano.

Para arquivos Bicep, use a função lógica bool.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim cadeia de caracteres ou inteiro O valor a ser convertido em um booliano.

Valor retornado

Um booliano do valor convertido.

Comentários

Você também pode usar true() e false() para obter valores boolianos.

Exemplos

O exemplo a seguir mostra como usar um booliano com uma cadeia de caracteres ou um inteiro.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueString": {
      "type": "bool",
      "value": "[bool('true')]"
    },
    "falseString": {
      "type": "bool",
      "value": "[bool('false')]"
    },
    "trueInt": {
      "type": "bool",
      "value": "[bool(1)]"
    },
    "falseInt": {
      "type": "bool",
      "value": "[bool(0)]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo Valor
trueString Bool True
falseString Bool Falso
trueInt Bool True
falseInt Bool Falso

false

false()

Retorna false.

A função false não está disponível no Bicep. Em vez disso, use a palavra-chave false.

Parâmetros

A função false não aceita nenhum parâmetro.

Valor retornado

Um booliano que é sempre falso.

Exemplo

O exemplo a seguir retorna um valor de saída falso.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "falseOutput": {
      "type": "bool",
      "value": "[false()]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
falseOutput Bool Falso

if

if(condition, trueValue, falseValue)

Retorna um valor com base em se uma condição é verdadeira ou falsa.

Não há suporte para a função if no Bicep. Use o operador ?: em vez disso.

Parâmetros

Parâmetro Obrigatório Type Descrição
condition Sim booleano O valor para verificar se é true ou false.
trueValue Sim cadeia de caracteres, inteiro, objeto ou matriz O valor a ser retornado quando a condição é verdadeira.
falseValue Sim cadeia de caracteres, inteiro, objeto ou matriz O valor a ser retornado quando a condição é falsa.

Valor retornado

Retorna o segundo parâmetro quando o primeiro parâmetro é True; caso contrário, retorna o terceiro parâmetro.

Comentários

Quando a condição for True, somente o valor verdadeiro será avaliado. Quando a condição for False, somente o valor falso será avaliado. Com a função if, você pode incluir expressões que são apenas condicionalmente válidas. Por exemplo, você pode fazer referência a um recurso que existe sob uma condição, mas não sob a outra condição. Um exemplo de avaliação condicional de expressões é mostrado na seção a seguir.

Exemplos

O exemplo a seguir mostra como usar a função if.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "yesOutput": {
      "type": "string",
      "value": "[if(equals('a', 'a'), 'yes', 'no')]"
    },
    "noOutput": {
      "type": "string",
      "value": "[if(equals('a', 'b'), 'yes', 'no')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[if(equals('a', 'a'), json('{\"test\": \"value1\"}'), json('null'))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
yesOutput String sim
noOutput String não
objectOutput Objeto { "test": "value1" }

O modelo de exemplo a seguir mostra como usar essa função com expressões que só são válidas condicionalmente.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "logAnalytics": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
   {
      "condition": "[not(empty(parameters('logAnalytics')))]",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2022-11-01",
      "name": "[format('{0}/omsOnboarding', parameters('vmName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
        "type": "MicrosoftMonitoringAgent",
        "typeHandlerVersion": "1.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "workspaceId": "[if(not(empty(parameters('logAnalytics'))), reference(parameters('logAnalytics'), '2015-11-01-preview').customerId, null())]"
        },
        "protectedSettings": {
          "workspaceKey": "[if(not(empty(parameters('logAnalytics'))), listKeys(parameters('logAnalytics'), '2015-11-01-preview').primarySharedKey, null())]"
        }
      }
    }
  ],
  "outputs": {
    "mgmtStatus": {
      "type": "string",
      "value": "[if(not(empty(parameters('logAnalytics'))), 'Enabled monitoring for VM!', 'Nothing to enable')]"
    }
  }
}

not

not(arg1)

Converte o valor booliano em seu valor oposto.

Não há suporte para a função not no Bicep. Use o operador ! em vez disso.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim booleano O valor a ser convertido.

Valor retornado

Retorna True quando o parâmetro é False. Retorna False quando o parâmetro é True.

Exemplos

O exemplo a seguir mostra como usar funções lógicas.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
andExampleOutput Bool Falso
orExampleOutput Bool True
notExampleOutput Bool Falso

O exemplo a seguir usa not com not.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "checkNotEquals": {
      "type": "bool",
      "value": "[not(equals(1, 2))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
checkNotEquals Bool True

ou

or(arg1, arg2, ...)

Verifica se qualquer valor do parâmetro é verdadeiro.

Não há suporte para a função or no Bicep. Use o operador || em vez disso.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim booleano O primeiro valor para verificar se é verdadeiro.
arg2 Sim booleano O segundo valor para verificar se é verdadeiro.
mais argumentos Não booleano Argumentos adicionais para verificar se são verdadeiros.

Valor retornado

Retorna True se qualquer valor for verdadeiro; caso contrário, False.

Exemplos

O exemplo a seguir mostra como usar funções lógicas.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
andExampleOutput Bool Falso
orExampleOutput Bool True
notExampleOutput Bool Falso

true

true()

Retorna verdadeiro.

A função true não está disponível no Bicep. Em vez disso, use a palavra-chave true.

Parâmetros

A função true não aceita nenhum parâmetro.

Valor retornado

Um booliano que é sempre verdadeiro.

Exemplo

O exemplo a seguir retorna um valor de saída verdadeiro.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueOutput": {
      "type": "bool",
      "value": "[true()]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
trueOutput Bool True

Próximas etapas