Логические функции для шаблонов 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 Истина

Следующие шаги