Funciones lógicas para plantillas de ARM

Resource Manager ofrece varias funciones para realizar comparaciones en las plantillas de Azure Resource Manager:

Sugerencia

Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM y la sintaxis es más fácil de usar. Para obtener más información, consulte la función lógica bool y los operadores lógicos.

y

and(arg1, arg2, ...)

Comprueba si todos los valores de parámetros son verdaderos.

La función and no es compatible con Bicep. En su lugar, use el operador &&.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 boolean Primer valor cuya veracidad se comprueba.
arg2 boolean Segundo valor cuya veracidad se comprueba.
más argumentos No boolean Más argumentos para comprobar si son verdaderos.

Valor devuelto

Devuelve True si todos los valores son verdaderos; en caso contrario, devuelve False.

Ejemplos

En el ejemplo siguiente se muestra cómo usar las funciones 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'))]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre Tipo Valor
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

bool

bool(arg1)

Convierte el parámetro en un booleano.

En Bicep, use la función lógica bool.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 cadena o entero El valor para convertir en booleano.

Valor devuelto

Valor booleano del valor convertido.

Observaciones

También puede usar true() y false() para obtener valores booleanos.

Ejemplos

En el ejemplo siguiente se muestra cómo usar bool con una cadena o un entero.

{
  "$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)]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Valor
trueString Bool True
falseString Bool False
trueInt Bool True
falseInt Bool False

false

false()

Devuelve false.

La función false no está disponible en Bicep. En su lugar, use la palabra clave false.

Parámetros

La función false no acepta ningún parámetro.

Valor devuelto

Valor booleano que siempre es false.

Ejemplo

El ejemplo siguiente devuelve un valor como de salida false.

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

El resultado del ejemplo anterior es:

Nombre Tipo Valor
falseOutput Bool False

if

if(condition, trueValue, falseValue)

Devuelve un valor dependiendo de si una condición es verdadera o falsa.

La función if no es compatible con Bicep. En su lugar, utilice el operador ?:.

Parámetros

Parámetro Obligatorio Type Descripción
condición boolean El valor que se va a comprobar si es true o false.
trueValue cadena, int, objeto o matriz Valor que se devuelve cuando la condición es verdadera.
falseValue cadena, int, objeto o matriz Valor que se devuelve cuando la condición es falsa.

Valor devuelto

Devuelve el segundo parámetro si el primer parámetro es True; en caso contrario, devuelve el tercer parámetro.

Observaciones

Si la condición es True, solo se evalúa el valor true. Si la condición es False, solo se evalúa el valor false. Con la función if, puede incluir expresiones que solo son válidas con ciertas condiciones. Por ejemplo, puede hacer referencia a un recurso que existe bajo una condición, pero no bajo la otra. En la sección siguiente se muestra un ejemplo de las expresiones de evaluación con ciertas condiciones.

Ejemplos

En el ejemplo siguiente se muestra cómo usar la función 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'))]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre Tipo Valor
yesOutput String
noOutput String no
objectOutput Object { "test": "value1" }

En la plantilla de ejemplo siguiente se muestra cómo usar esta función con expresiones que solo son válidas bajo ciertas condiciones.

{
  "$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)

Convierte el valor booleano en su valor opuesto.

La función not no es compatible con Bicep. En su lugar, utilice el operador !.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 boolean Valor que se va a convertir.

Valor devuelto

Devuelve True si el parámetro es False. Devuelve False si el parámetro es True.

Ejemplos

En el ejemplo siguiente se muestra cómo usar las funciones 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'))]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre Tipo Valor
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

En el siguiente ejemplo se usa not con 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))]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre Tipo Valor
checkNotEquals Bool True

or

or(arg1, arg2, ...)

Comprueba si algún valor de parámetro es verdadero.

La función or no es compatible con Bicep. En su lugar, utilice el operador ||.

Parámetros

Parámetro Obligatorio Type Descripción
arg1 boolean Primer valor cuya veracidad se comprueba.
arg2 boolean Segundo valor cuya veracidad se comprueba.
más argumentos No boolean Más argumentos para comprobar si son verdaderos.

Valor devuelto

Devuelve True si algún valor es verdadero; en caso contrario, devuelve False.

Ejemplos

En el ejemplo siguiente se muestra cómo usar las funciones 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'))]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre Tipo Valor
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

true

true()

Devuelve true.

La función true no está disponible en Bicep. En su lugar, use la palabra clave true.

Parámetros

La función true no acepta ningún parámetro.

Valor devuelto

Valor booleano que siempre es true.

Ejemplo

El ejemplo siguiente devuelve un valor como de salida true.

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

El resultado del ejemplo anterior es:

Nombre Tipo Valor
trueOutput Bool True

Pasos siguientes