эффект Политика Azure определений deployIfNotExists
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
группой ресурсов условия, которая является поведением по умолчанию. - Если задано значение Subscription, запрос применяется ко всей подписке для связанного ресурса. Для правильного вычисления область назначения должна быть задана в подписке или на более высоком уровне.
- По умолчанию задано значение ResourceGroup.
evaluationDelay
(необязательно)- Указывает, когда следует оценивать наличие связанных ресурсов. Задержка используется только для оценок, которые являются результатом запроса на создание или обновление ресурса.
- Допустимые значения:
AfterProvisioning
,AfterProvisioningSuccess
,AfterProvisioningFailure
, или длительность ISO 8601 в диапазоне от 0 до 360 минут. - Значения AfterProvisioning проверяют результат подготовки ресурса, который был оценен в условии правила
if
политики.AfterProvisioning
запускается после завершения подготовки, независимо от результата. Подготовка, которая занимает более шести часов, рассматривается как сбой при определении задержек оценки AfterProvisioning . - По умолчанию используется значение
PT10M
(10 минут). - Указание длительной задержки оценки может привести к тому, что зарегистрированное состояние соответствия ресурса не обновляется до следующего триггера оценки.
existenceCondition
(необязательно)- Если это не указано, любой связанный
type
ресурс удовлетворяет эффекту и не активирует развертывание. - Использует тот же язык, что и правило политики для
if
условия, но вычисляется по отдельности для каждого связанного ресурса. - Если при оценке какого-либо связанного ресурса возвращается значение true, то действие не активирует развертывание.
- Можно использовать [field()] для проверка эквивалентности со значениями в условии
if
. - Например, можно использовать для проверки того, что родительский ресурс (в
if
условии) находится в том же расположении ресурса, что и соответствующий связанный ресурс.
- Если это не указано, любой связанный
roleDefinitionIds
(обязательно)- Это свойство должно содержать массив строк, которые соответствуют идентификатору роли управления доступом на основе ролей, доступному для определенной подписки. Дополнительные сведения см. в разделе Настройка определения политики.
deploymentScope
(необязательно)- Допустимые значения: Subscription и ResourceGroup.
- Задает тип инициируемого развертывания. Подписка указывает развертывание на уровне подписки и ResourceGroup указывает развертывание в группе ресурсов.
- Свойство location должно быть указано для объекта Deployment при использовании развертываний на уровне подписки.
- По умолчанию задано значение ResourceGroup.
deployment
(обязательно)- Это свойство должно содержать полный шаблон развертывания, так как оно будет передано в API PUT
Microsoft.Resources/deployments
. Дополнительные сведения см. в документации по REST API развертываний. - Вложенный объект
Microsoft.Resources/deployments
в шаблоне должен использовать уникальные имена, чтобы избежать конфликта между несколькими оценками политики. Имя родительского развертывания можно использовать как часть имени вложенного развертывания через[concat('NestedDeploymentName-', uniqueString(deployment().name))]
.
Примечание.
Все функции внутри
deployment
свойства оцениваются как компоненты шаблона, а не политики. Исключением являетсяparameters
свойство, которое передает значения из политики в шаблон. Вvalue
этом разделе под именем параметра шаблона используется для передачи этого значения (см . полное имяDbName в примере DeployIfNotExists).- Это свойство должно содержать полный шаблон развертывания, так как оно будет передано в API PUT
Пример 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.