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.
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ámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | boolean | Primer valor cuya veracidad se comprueba. |
arg2 | Sí | boolean | Segundo valor cuya veracidad se comprueba. |
más argumentos | No | boolean | Más argumentos para comprobar si son verdaderos. |
Devuelve True si todos los valores son verdaderos; en caso contrario, devuelve False.
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(arg1)
Convierte el parámetro en un booleano.
En Bicep, use la función lógica bool.
Parámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | cadena o entero | El valor para convertir en booleano. |
Valor booleano del valor convertido.
También puede usar true() y false() para obtener valores booleanos.
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()
Devuelve false.
La función false
no está disponible en Bicep. En su lugar, use la palabra clave false
.
La función false no acepta ningún parámetro.
Valor booleano que siempre es false.
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(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ámetro | Obligatorio | Type | Descripción |
---|---|---|---|
condición | Sí | boolean | El valor que se va a comprobar si es true o false. |
trueValue | Sí | cadena, int, objeto o matriz | Valor que se devuelve cuando la condición es verdadera. |
falseValue | Sí | cadena, int, objeto o matriz | Valor que se devuelve cuando la condición es falsa. |
Devuelve el segundo parámetro si el primer parámetro es True; en caso contrario, devuelve el tercer parámetro.
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.
Tenga en cuenta que la regla anterior solo se aplica cuando la condición se puede evaluar al principio del proceso de implementación de plantillas. Por ejemplo, no se puede usar en reference()
la condición .
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 | sí |
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(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ámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | boolean | Valor que se va a convertir. |
Devuelve True si el parámetro es False. Devuelve False si el parámetro es True.
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(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ámetro | Obligatorio | Type | Descripción |
---|---|---|---|
arg1 | Sí | boolean | Primer valor cuya veracidad se comprueba. |
arg2 | Sí | boolean | Segundo valor cuya veracidad se comprueba. |
más argumentos | No | boolean | Más argumentos para comprobar si son verdaderos. |
Devuelve True si algún valor es verdadero; en caso contrario, devuelve False.
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()
Devuelve true.
La función true
no está disponible en Bicep. En su lugar, use la palabra clave true
.
La función true no acepta ningún parámetro.
Valor booleano que siempre es true.
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 |
- 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.