Логические функции для шаблонов ARM
Resource Manager предоставляет ряд функций для выполнения сравнений в шаблонах Azure Resource Manager (шаблон ARM):
Совет
Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в описании логической функции bool и логических операторов.
и
and(arg1, arg2, ...)
Проверяет, соответствуют ли истине все значения параметров.
Функция and
не поддерживается в Bicep. Вместо этого используйте оператор &>.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | boolean | Первое значение, которое необходимо проверить на соответствие истине. |
arg2 | Да | boolean | Второе значение, которое необходимо проверить на соответствие истине. |
дополнительные аргументы | No | boolean | Дополнительные аргументы для проверки соответствия истине. |
Возвращаемое значение
Возвращает результат True, если все значения соответствуют истине. В противном случае — False.
Примеры
В следующем примере показано, как использовать логические функции.
{
"$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'))]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
andExampleOutput | Bool | False |
orExampleOutput | Bool | Истина |
notExampleOutput | Bool | False |
bool
bool(arg1)
Преобразует параметр в логическое значение.
В Bicep используйте логическую функцию bool.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | строка или целое число | Значение, которое необходимо преобразовать в логическое. |
Возвращаемое значение
Логическое выражение преобразованного значения.
Замечания
Для получения логических значений также можно использовать операторы true () и false ().
Примеры
В следующем примере показано, как использовать функцию bool со строкой или целым числом:
{
"$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)]"
}
}
}
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
trueString | Bool | Истина |
falseString | Bool | False |
trueInt | Bool | Истина |
falseInt | Bool | False |
false
false()
Возвращает значение false.
Функция false
недоступна в Bicep. Вместо этого используйте ключевое слово false
.
Параметры
Функция false не принимает никакие параметры.
Возвращаемое значение
Логическое значение, всегда равное false.
Пример
В следующем примере возвращается выходное значение 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()]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
falseOutput | Bool | False |
if
if(condition, trueValue, falseValue)
Возвращает значение в зависимости от того, выполняется ли условие.
Функция if
не поддерживается в Bicep. Вместо нее используйте оператор ?:.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
condition | Да | boolean | Значение для проверки истинности или ложности. |
trueValue | Да | строка, целое число, объект или массив | Возвращаемое значение, если условие выполняется. |
falseValue | Да | строка, целое число, объект или массив | Возвращаемое значение, если условие не выполняется. |
Возвращаемое значение
Возвращает второй параметр, если первый параметр имеет значение True (Истина). В противном случае возвращает третий параметр.
Замечания
Для условия True вычисляется только истинное значение. Для условия False вычисляется только ложное значение. С помощью функции if
можно включать выражения, которые являются только условно допустимыми. Например, можно сослаться на ресурс, который существует при одном условии, но не существует при другом. Пример условной оценки выражений показан в следующем разделе.
Примеры
Ниже представлен пример использования функции 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'))]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
yesOutput | Строка | yes |
noOutput | Строка | no |
objectOutput | Object | { "test": "value1" } |
В следующем примере шаблона показано использование этой функцию с выражениями, которые являются только условно допустимыми.
{
"$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)
Преобразует логическое значение в противоположное ему значение.
Функция not
не поддерживается в Bicep. Вместо нее используйте оператор !.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | boolean | Преобразуемое значение . |
Возвращаемое значение
Возвращает значение True (Истина), если параметр имеет значение False (Ложь). Возвращает значение False (Ложь), если параметр имеет значение True (Истина).
Примеры
В следующем примере показано, как использовать логические функции.
{
"$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'))]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
andExampleOutput | Bool | False |
orExampleOutput | Bool | Истина |
notExampleOutput | Bool | False |
В следующем примере используется функция not
с 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))]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
checkNotEquals | Bool | Истина |
or
or(arg1, arg2, ...)
Проверяет, соответствует ли истине какое-либо значение параметров.
Функция or
не поддерживается в Bicep. Вместо нее используйте оператор ||.
Параметры
Параметр | Обязательное поле | Type | Описание |
---|---|---|---|
arg1 | Да | boolean | Первое значение, которое необходимо проверить на соответствие истине. |
arg2 | Да | boolean | Второе значение, которое необходимо проверить на соответствие истине. |
дополнительные аргументы | No | boolean | Дополнительные аргументы для проверки соответствия истине. |
Возвращаемое значение
Возвращает результат True, если какое-либо значение соответствует истине. В противном случае — False.
Примеры
В следующем примере показано, как использовать логические функции.
{
"$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'))]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
andExampleOutput | Bool | False |
orExampleOutput | Bool | Истина |
notExampleOutput | Bool | False |
true
true()
Возвращает значение true.
Функция true
недоступна в Bicep. Вместо этого используйте ключевое слово true
.
Параметры
Функция true не принимает никакие параметры.
Возвращаемое значение
Логическое значение, всегда равное true.
Пример
В следующем примере возвращается выходное значение 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()]"
}
}
}
Выходные данные из предыдущего примера:
Имя. | Тип | значение |
---|---|---|
trueOutput | Bool | Истина |
Следующие шаги
- Описание разделов в шаблоне ARM приведено в статье Общие сведения о структуре и синтаксисе шаблонов ARM.