Logical functions for ARM templates
Resource Manager provides several functions for making comparisons in your Azure Resource Manager template (ARM template):
Tip
We recommend Bicep because it offers the same capabilities as ARM templates and the syntax is easier to use. To learn more, see the bool logical function and logical operators.
and
and(arg1, arg2, ...)
Checks whether all parameter values are true.
The and
function isn't supported in Bicep. Use the && operator instead.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
arg1 | Yes | boolean | The first value to check whether is true. |
arg2 | Yes | boolean | The second value to check whether is true. |
more arguments | No | boolean | More arguments to check whether are true. |
Return value
Returns True if all values are true; otherwise, False.
Examples
The following example shows how to use logical functions.
{
"$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'))]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
andExampleOutput | Bool | False |
orExampleOutput | Bool | True |
notExampleOutput | Bool | False |
bool
bool(arg1)
Converts the parameter to a boolean.
In Bicep, use the bool logical function.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
arg1 | Yes | string or int | The value to convert to a boolean. |
Return value
A boolean of the converted value.
Remarks
You can also use true() and false() to get boolean values.
Examples
The following example shows how to use bool with a string or integer.
{
"$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)]"
}
}
}
The output from the preceding example with the default values is:
Name | Type | Value |
---|---|---|
trueString | Bool | True |
falseString | Bool | False |
trueInt | Bool | True |
falseInt | Bool | False |
false
false()
Returns false.
The false
function isn't available in Bicep. Use the false
keyword instead.
Parameters
The false function doesn't accept any parameters.
Return value
A boolean that is always false.
Example
The following example returns a false output value.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"falseOutput": {
"type": "bool",
"value": "[false()]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
falseOutput | Bool | False |
if
if(condition, trueValue, falseValue)
Returns a value based on whether a condition is true or false.
The if
function isn't supported in Bicep. Use the ?: operator instead.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
condition | Yes | boolean | The value to check whether it's true or false. |
trueValue | Yes | string, int, object, or array | The value to return when the condition is true. |
falseValue | Yes | string, int, object, or array | The value to return when the condition is false. |
Return value
Returns second parameter when first parameter is True; otherwise, returns third parameter.
Remarks
When the condition is True, only the true value is evaluated. When the condition is False, only the false value is evaluated. With the if
function, you can include expressions that are only conditionally valid. For example, you can reference a resource that exists under one condition but not under the other condition. An example of conditionally evaluating expressions is shown in the following section.
Examples
The following example shows how to use the if
function.
{
"$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'))]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
yesOutput | String | yes |
noOutput | String | no |
objectOutput | Object | { "test": "value1" } |
The following example template shows how to use this function with expressions that are only conditionally valid.
{
"$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": "2017-03-30",
"name": "[concat(parameters('vmName'),'/omsOnboarding')]",
"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, json('null'))]"
},
"protectedSettings": {
"workspaceKey": "[if(not(empty(parameters('logAnalytics'))), listKeys(parameters('logAnalytics'), '2015-11-01-preview').primarySharedKey, json('null'))]"
}
}
}
],
"outputs": {
"mgmtStatus": {
"type": "string",
"value": "[if(not(empty(parameters('logAnalytics'))), 'Enabled monitoring for VM!', 'Nothing to enable')]"
}
}
}
not
not(arg1)
Converts boolean value to its opposite value.
The not
function isn't supported in Bicep. Use the ! operator instead.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
arg1 | Yes | boolean | The value to convert. |
Return value
Returns True when parameter is False. Returns False when parameter is True.
Examples
The following example shows how to use logical functions.
{
"$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'))]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
andExampleOutput | Bool | False |
orExampleOutput | Bool | True |
notExampleOutput | Bool | False |
The following example uses not
with 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))]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
checkNotEquals | Bool | True |
or
or(arg1, arg2, ...)
Checks whether any parameter value is true.
The or
function isn't supported in Bicep. Use the || operator instead.
Parameters
Parameter | Required | Type | Description |
---|---|---|---|
arg1 | Yes | boolean | The first value to check whether is true. |
arg2 | Yes | boolean | The second value to check whether is true. |
more arguments | No | boolean | More arguments to check whether are true. |
Return value
Returns True if any value is true; otherwise, False.
Examples
The following example shows how to use logical functions.
{
"$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'))]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
andExampleOutput | Bool | False |
orExampleOutput | Bool | True |
notExampleOutput | Bool | False |
true
true()
Returns true.
The true
function isn't available in Bicep. Use the true
keyword instead.
Parameters
The true function doesn't accept any parameters.
Return value
A boolean that is always true.
Example
The following example returns a true output value.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"trueOutput": {
"type": "bool",
"value": "[true()]"
}
}
}
The output from the preceding example is:
Name | Type | Value |
---|---|---|
trueOutput | Bool | True |
Next steps
- For a description of the sections in an ARM template, see Understand the structure and syntax of ARM templates.