Funciones de comparación 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 el operador lógico coalesce y los operadores de comparación.
coalesce
coalesce(arg1, arg2, arg3, ...)
Devuelve el primer valor no nulo de los parámetros. Las cadenas vacías, las matrices vacías y los objetos vacíos no son nulos.
En Bicep, use el operador ??
en su lugar. Vea Coalesce ??.
Parámetros
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | int, string, array u object | El primer valor para comprobar si hay valores nulos. |
más argumentos | No | int, string, array u object | Más valores para probar si hay valores nulos. |
Valor devuelto
El valor de los primeros parámetros que no son nulos, que puede ser una cadena, un entero, una matriz o un objeto. Es nulo si todos los parámetros son nulos.
Ejemplo
En la plantilla de ejemplo siguiente se muestra el resultado de los diferentes usos de coalesce.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"objectToTest": {
"type": "object",
"defaultValue": {
"null1": null,
"null2": null,
"string": "default",
"int": 1,
"object": { "first": "default" },
"array": [ 1 ]
}
}
},
"resources": [
],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').string)]"
},
"intOutput": {
"type": "int",
"value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').int)]"
},
"objectOutput": {
"type": "object",
"value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').object)]"
},
"arrayOutput": {
"type": "array",
"value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').array)]"
},
"emptyOutput": {
"type": "bool",
"value": "[empty(coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2))]"
}
}
}
La salida del ejemplo anterior con el valor predeterminado es:
Nombre | Tipo | Value |
---|---|---|
stringOutput | String | default |
intOutput | Int | 1 |
objectOutput | Object | {"first": "default"} |
arrayOutput | Array | [1] |
emptyOutput | Bool | True |
equals
equals(arg1, arg2)
Comprueba si dos valores son idénticos. En la comparación se distinguen mayúsculas de minúsculas.
En Bicep, use el operador ==
en su lugar. Vea Equals ==.
Parámetros
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | int, string, array u object | El primer valor en el que comprobar la igualdad. |
arg2 | Sí | int, string, array u object | El segundo valor en el que comprobar la igualdad. |
Valor devuelto
Devuelve True si los valores son iguales; en caso contrario, False.
Comentarios
La función equals se suele usar con el elemento condition
para comprobar si está implementado un recurso.
{
"condition": "[equals(parameters('newOrExisting'),'new')]",
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"apiVersion": "2022-09-01",
"location": "[resourceGroup().location]",
"sku": {
"name": "[variables('storageAccountType')]"
},
"kind": "Storage",
"properties": {}
}
Ejemplo
En el ejemplo siguiente se comprueba la igualdad de diferentes tipos de valores. Todos los valores predeterminados devuelven True.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"firstInt": {
"type": "int",
"defaultValue": 1
},
"secondInt": {
"type": "int",
"defaultValue": 1
},
"firstString": {
"type": "string",
"defaultValue": "demo"
},
"secondString": {
"type": "string",
"defaultValue": "Demo"
},
"firstArray": {
"type": "array",
"defaultValue": [ "a", "b" ]
},
"secondArray": {
"type": "array",
"defaultValue": [ "a", "b" ]
},
"firstObject": {
"type": "object",
"defaultValue": { "a": "b" }
},
"secondObject": {
"type": "object",
"defaultValue": { "a": "b" }
}
},
"resources": [
],
"outputs": {
"checkInts": {
"type": "bool",
"value": "[equals(parameters('firstInt'), parameters('secondInt') )]"
},
"checkStrings": {
"type": "bool",
"value": "[equals(parameters('firstString'), parameters('secondString'))]"
},
"checkArrays": {
"type": "bool",
"value": "[equals(parameters('firstArray'), parameters('secondArray'))]"
},
"checkObjects": {
"type": "bool",
"value": "[equals(parameters('firstObject'), parameters('secondObject'))]"
}
}
}
La salida del ejemplo anterior con el valor predeterminado es:
Nombre | Tipo | Value | Nota: |
---|---|---|---|
checkInts | Bool | True | |
checkStrings | Bool | False | El resultado es false porque la comparación distingue mayúsculas de minúsculas. |
checkArrays | Bool | True | |
checkObjects | Bool | True |
En la plantilla de ejemplo siguiente se usa not con equals.
{
"$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 |
greater
greater(arg1, arg2)
Comprueba si el primer valor es mayor que el segundo.
En Bicep, use el operador >
en su lugar. Vea Mayor que >.
Parámetros
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | entero o cadena | El primer valor de la comparación mayor. |
arg2 | Sí | entero o cadena | El segundo valor de la comparación mayor. |
Valor devuelto
Devuelve True si el primer valor es mayor que el segundo; en caso contrario, False.
Ejemplo
En el ejemplo siguiente se comprueba si un valor es mayor que el otro.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"firstInt": {
"type": "int",
"defaultValue": 1
},
"secondInt": {
"type": "int",
"defaultValue": 2
},
"firstString": {
"type": "string",
"defaultValue": "A"
},
"secondString": {
"type": "string",
"defaultValue": "a"
}
},
"resources": [
],
"outputs": {
"checkInts": {
"type": "bool",
"value": "[greater(parameters('firstInt'), parameters('secondInt') )]"
},
"checkStrings": {
"type": "bool",
"value": "[greater(parameters('firstString'), parameters('secondString'))]"
}
}
}
La salida del ejemplo anterior con el valor predeterminado es:
Nombre | Tipo | Value |
---|---|---|
checkInts | Bool | False |
checkStrings | Bool | True |
greaterOrEquals
greaterOrEquals(arg1, arg2)
Comprueba si el primer valor es mayor o igual que el segundo.
En Bicep, use el operador >=
en su lugar. Vea Mayor o igual que >=.
Parámetros
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | entero o cadena | El primer valor de la comparación mayor o igual. |
arg2 | Sí | entero o cadena | El segundo valor de la comparación mayor o igual. |
Valor devuelto
Devuelve True si el primer valor es mayor o igual que el segundo; en caso contrario, False.
Ejemplo
En el ejemplo siguiente se comprueba si un valor es mayor o igual que el otro.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"firstInt": {
"type": "int",
"defaultValue": 1
},
"secondInt": {
"type": "int",
"defaultValue": 2
},
"firstString": {
"type": "string",
"defaultValue": "A"
},
"secondString": {
"type": "string",
"defaultValue": "a"
}
},
"resources": [
],
"outputs": {
"checkInts": {
"type": "bool",
"value": "[greaterOrEquals(parameters('firstInt'), parameters('secondInt') )]"
},
"checkStrings": {
"type": "bool",
"value": "[greaterOrEquals(parameters('firstString'), parameters('secondString'))]"
}
}
}
La salida del ejemplo anterior con el valor predeterminado es:
Nombre | Tipo | Value |
---|---|---|
checkInts | Bool | False |
checkStrings | Bool | True |
less
less(arg1, arg2)
Comprueba si el primer valor es menor que el segundo.
En Bicep, use el operador <
en su lugar. Vea Menor que <.
Parámetros
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | entero o cadena | El primer valor de la comparación menor. |
arg2 | Sí | entero o cadena | El segundo valor de la comparación menor. |
Valor devuelto
Devuelve True si el primer valor es menor que el segundo; en caso contrario, False.
Ejemplo
En el ejemplo siguiente se comprueba si un valor es menor que el otro.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"firstInt": {
"type": "int",
"defaultValue": 1
},
"secondInt": {
"type": "int",
"defaultValue": 2
},
"firstString": {
"type": "string",
"defaultValue": "A"
},
"secondString": {
"type": "string",
"defaultValue": "a"
}
},
"resources": [
],
"outputs": {
"checkInts": {
"type": "bool",
"value": "[less(parameters('firstInt'), parameters('secondInt') )]"
},
"checkStrings": {
"type": "bool",
"value": "[less(parameters('firstString'), parameters('secondString'))]"
}
}
}
La salida del ejemplo anterior con el valor predeterminado es:
Nombre | Tipo | Value |
---|---|---|
checkInts | Bool | True |
checkStrings | Bool | False |
lessOrEquals
lessOrEquals(arg1, arg2)
Comprueba si el primer valor es menor o igual que el segundo.
En Bicep, use el operador <=
en su lugar. Vea Menor o igual que <=.
Parámetros
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | entero o cadena | El primer valor de la comparación menor o igual. |
arg2 | Sí | entero o cadena | El segundo valor de la comparación menor o igual. |
Valor devuelto
Devuelve True si el primer valor es menor o igual que el segundo; en caso contrario, False.
Ejemplo
En el ejemplo siguiente se comprueba si un valor es menor o igual que el otro.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"firstInt": {
"type": "int",
"defaultValue": 1
},
"secondInt": {
"type": "int",
"defaultValue": 2
},
"firstString": {
"type": "string",
"defaultValue": "A"
},
"secondString": {
"type": "string",
"defaultValue": "a"
}
},
"resources": [
],
"outputs": {
"checkInts": {
"type": "bool",
"value": "[lessOrEquals(parameters('firstInt'), parameters('secondInt') )]"
},
"checkStrings": {
"type": "bool",
"value": "[lessOrEquals(parameters('firstString'), parameters('secondString'))]"
}
}
}
La salida del ejemplo anterior con el valor predeterminado es:
Nombre | Tipo | Value |
---|---|---|
checkInts | Bool | True |
checkStrings | Bool | False |
Pasos siguientes
- Para obtener una descripción de las secciones de una plantilla de ARM, vea Nociones sobre la estructura y la sintaxis de las plantillas de Azure Resource Manager.