Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Аналогично auditIfNotExists, определение политики deployIfNotExists выполняет развертывание шаблона при выполнении условия. Назначения политик с эффектом DeployIfNotExists требуют управляемой идентификации для восстановления.
Примечание.
Вложенные шаблоны поддерживаются; deployIfNotExistsно связанные шаблоны в настоящее время не поддерживаются.
Оценка функции DeployIfNotExists
deployIfNotExists выполняется после настраиваемой задержки, когда поставщик ресурсов обрабатывает запрос на создание или обновление подписки или ресурса и возвращает код состояния успешного выполнения. Развертывание шаблона происходит, если нет связанных ресурсов или если ресурсы, определенные existenceCondition не оцениваются как истинные. Длительность развертывания зависит от сложности ресурсов, включенных в шаблон.
Во время цикла оценки определения политик с эффектом DeployIfNotExists, которые соответствуют ресурсам, помечены как несоответствующие требованиям, но никаких действий для этого ресурса не выполняется. Существующие несоответствующие ресурсы можно исправить с помощью задачи исправления.
Свойства «DeployIfNotExists»
Свойство details эффекта DeployIfNotExists содержит все подсвойства, которые определяют, какие связанные ресурсы должны сопоставляться, и какой шаблон развертывать.
-
type(обязательно)- Указывает тип связанного ресурса для соответствия.
- Если
typeявляется подтипом ресурсаifусловия, политика запрашивает ресурсы этогоtypeв рамках области оцениваемого ресурса. В противном случае запросы политики в той же группе ресурсов или подписке, что и оцененного ресурса, зависят отexistenceScope.
-
name(необязательно)- Указывает точное имя ресурса для сопоставления и приводит к тому, что политика получает один конкретный ресурс вместо всех ресурсов указанного типа.
- Если значения условий для
if.field.typeиthen.details.typeсовпадают, тоnameстановится обязательным и должен быть[field('name')], или[field('fullName')]для дочернего ресурса.
Примечание.
type и name сегменты можно объединить для извлечения вложенных ресурсов в общем виде.
Чтобы получить определенный ресурс, можно использовать "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" и "name": "parentResourceName/nestedResourceName".
Чтобы получить коллекцию вложенных ресурсов, вместо последнего сегмента имени можно указать подстановочный знак ?. Например, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" и "name": "parentResourceName/?". Это можно объединить с функциями полей для доступа к ресурсам, связанным с вычисленным ресурсом, например "name": "[concat(field('name'), '/?')]".
resourceGroupName(необязательно)- Позволяет сопоставить связанный ресурс из другой группы ресурсов.
- Не применяется, если
typeпредставляет собой ресурс, который будет находиться под ресурсом условияif. - По умолчанию используется группа ресурсов ресурса условия
if. - Если развертывание шаблона выполняется, оно развертывается в группе ресурсов заданного значения.
existenceScope(необязательно)- Допустимые значения : Subscription и ResourceGroup.
- Задает область, из которой следует получить связанный ресурс для соответствия.
- Не применяется, если
typeпредставляет собой ресурс, который будет находиться под ресурсом условияif. - Для ResourceGroup ограничение будет применено к группе ресурсов, если
resourceGroupNameзадано. ЕслиresourceGroupNameне указан, будет ограничено группой ресурсов условияif, что соответствует поведению по умолчанию. - Для подписки запрашивает всю подписку для связанного ресурса. Охват задачи должен быть установлен на уровне подписки или выше для правильной оценки.
- По умолчанию используется ResourceGroup.
evaluationDelay(необязательно)- Указывает, когда необходимо оценить существование связанных ресурсов. Задержка используется только для вычислений, которые являются результатом запроса на создание или обновление ресурса.
- Допустимые значения:
AfterProvisioning,AfterProvisioningSuccessAfterProvisioningFailureили длительность ISO 8601 в диапазоне от 0 до 360 минут. - Значения AfterProvisioning проверяют результат подготовки ресурса, который был оценен в условии правила политики
if.AfterProvisioningвыполняется после завершения подготовки, независимо от результата. При определении задержек оценки AfterProvisioning, подготовка, которая занимает более шести часов, рассматривается как сбой. - Значение по умолчанию —
PT10M10 минут. - Указание длительной задержки оценки может привести к тому, что зарегистрированное состояние соответствия ресурса не обновляется до следующего триггера оценки.
existenceCondition(необязательно)- Если это не указано, любой ресурс, связанный с
type, удовлетворяет эффекту и не активирует развертывание. - Использует тот же язык, что и правило политики для
ifусловия, но оценивается по отдельности для каждого связанного ресурса. - Если любой соответствующий связанный ресурс оценивается как истинный, условие выполнено и не запускает развертывание.
- Можно использовать [field()] для проверки эквивалентности со значениями в условии
if. - Например, можно использовать для проверки того, что родительский ресурс (в
ifусловии) находится в том же расположении ресурса, что и соответствующий связанный ресурс.
- Если это не указано, любой ресурс, связанный с
roleDefinitionIds(обязательно)- Это свойство должно содержать массив строк, которые соответствуют идентификаторам ролей управления доступом на основе ролей, доступных для подписки. Для получения дополнительной информации см. раздел Устранение - настройка определения политики.
deploymentScope(необязательно)- Допустимые значения : Subscription и ResourceGroup.
- Задает тип запуска развертывания. Подписка указывает развертывание на уровне подписки и ResourceGroup указывает развертывание в группе ресурсов.
- Свойство расположения должно быть указано в развертывании при использовании развертывания на уровне подписки.
- По умолчанию используется ResourceGroup.
deployment(обязательно)- Это свойство должно включать полное развертывание шаблона, которое будет передано в
Microsoft.Resources/deploymentsAPI PUT. Дополнительные сведения см. в REST API развертываний. - Вложенные в шаблон
Microsoft.Resources/deploymentsдолжны использовать уникальные имена, чтобы избежать конфликтов между несколькими оценками политик. Имя родительского развертывания можно использовать как часть вложенного имени развертывания с помощью[concat('NestedDeploymentName-', uniqueString(deployment().name))].
Примечание.
Все функции внутри
deploymentсвойства оцениваются как компоненты шаблона, а не политики. Исключением являетсяparametersсвойство, которое передает значения из политики в шаблон. Вvalueэтом разделе под именем параметра шаблона используется для передачи этого значения (см. полное имяDbName в примере DeployIfNotExists).- Это свойство должно включать полное развертывание шаблона, которое будет передано в
Пример DeployIfNotExists
Пример: Оценивает базы данных SQL Server, чтобы определить, включена ли transparentDataEncryption эта функция. В противном случае выполняется развертывание для включения.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}
]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
Дальнейшие действия
- Изучите примеры на странице примеров Политики Azure.
- Изучите статью о структуре определения Политики Azure.
- Узнайте о программном создании политик.
- Узнайте, как получать данные о соответствии.
- Узнайте, как исправлять несоответствующие ресурсы.
- Просмотрите группы управления Azure.