Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Иногда необходимо по выбору развернуть ресурс в шаблоне Azure Resource Manager (шаблон ARM). Используйте элемент condition, чтобы указать, развернут ли ресурс. Значение условия принимает значение true или false. Если значение равно true, создается ресурс. Если значение false, ресурс не создан. Значение может применяться только ко всему ресурсу.
Замечание
Условное развертывание не распространяется каскадом на дочерние ресурсы. Если требуется условно развернуть ресурс и его дочерние ресурсы, необходимо применить одно и то же условие к каждому типу ресурсов.
Подсказка
Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в статье об условных развертываниях.
Условие развертывания
Можно передать значение параметра, указывающее, развертывается ли ресурс. В следующем примере выполняется условное развертывание зоны DNS.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"deployZone": {
"type": "bool",
"defaultValue": true
}
},
"functions": [],
"resources": [
{
"condition": "[parameters('deployZone')]",
"type": "Microsoft.Network/dnsZones",
"apiVersion": "2023-07-01-preview",
"name": "myZone",
"location": "global",
"properties": {
"zoneType": "Public"
}
}
]
}
Более сложный пример см. в разделе "Логический сервер SQL Azure".
Новый или существующий ресурс
Вы можете воспользоваться условным развертыванием, чтобы создать новый ресурс или использовать существующий. В следующем примере показано, как развернуть новую учетную запись хранения или использовать существующую учетную запись хранения.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"newOrExisting": {
"type": "string",
"defaultValue": "new",
"allowedValues": [
"new",
"existing"
]
}
},
"resources": [
{
"condition": "[equals(parameters('newOrExisting'), 'new')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
{
"condition": "[equals(parameters('newOrExisting'), 'existing')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]"
}
],
"outputs": {
"storageAccountId": {
"type": "string",
"value": "[if(equals(parameters('newOrExisting'), 'new'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]"
}
}
}
Если для параметра newOrExisting задано значение new, условие принимает значение true. Учетная запись хранения развертывается. В противном случае используется существующая учетная запись хранения.
Полный пример шаблона, использующего condition элемент, см. в статье " Виртуальная машина" с новой или существующей виртуальной сетью, хранилищем и общедоступным IP-адресом.
Функции времени выполнения
Если вы используете функцию ссылки или списка с ресурсом, который условно развернут, функция оценивается даже в том случае, если ресурс не развернут. Вы получите ошибку, если функция ссылается на ресурс, который не существует.
Используйте функцию if , чтобы убедиться, что функция вычисляется только для условий при развертывании ресурса. Ознакомьтесь с функцией , если для примера шаблона, использующего if и reference с условно развернутыми ресурсами.
Вы устанавливаете ресурс в зависимости от условного ресурса точно так же, как и любой другой ресурс. Если условный ресурс не развернут, Azure Resource Manager автоматически удаляет его из необходимых зависимостей.
Полный режим
Если вы развертываете шаблон в полном режиме и ресурс не развертывается, так как condition равняется false, результат зависит от версии REST API, используемой для развертывания шаблона. Если вы используете версию ранее 2019-05-10, ресурс не удаляется. При использовании 2019-05-10 или более поздней версии ресурс удаляется. Последние версии Azure PowerShell и Azure CLI удаляют ресурс, если условие равно false.
Дальнейшие шаги
- Модуль Learn, охватывающий условное развертывание, см. в статье "Управление сложными облачными развертываниями с помощью расширенных функций шаблона ARM".
- Рекомендации по созданию шаблонов см. в статье Рекомендации по работе с шаблонами ARM.
- Сведения о создании нескольких экземпляров ресурса см. в разделе "Итерация ресурсов" в шаблонах ARM.