Добавление политики тегов не работает для некоторых ресурсов
Я создаю одну политику Azure для добавления тегов к вновь создаваемым ресурсам, она хорошо работает для большинства компонентов, но я обнаружил, что эта политика не работает для некоторых компонентов, например: логических приложений.
{
"mode": "All",
"parameters": {
"Environment": {
"type": "String",
"metadata": {
"displayName": "Environment"
},
"defaultValue": "dev"
},
"Owner": {
"type": "String",
"metadata": {
"displayName": "Owner"
},
"defaultValue": "Admin"
},
"CostCenter": {
"type": "String",
"metadata": {
"displayName": "CostCenter"
},
"defaultValue": "NA"
}
},
"policyRule": {
"if": {
"field": "tags",
"exists": "false"
},
"then": {
"effect": "append",
"details": [
{
"field": "tags",
"value": {
"Environment": "[parameters('Environment')]",
"Owner": "[parameters('Owner')]",
"CostCenter": "[parameters('CostCenter')]"
}
}
]
}
}
}
Я добавил аналогичную политику для применения тегов к группам ресурсов, вообще не работает, я понятия не имею, что происходит.
{
"mode": "All",
"parameters": {
"Environment": {
"type": "String",
"metadata": {
"displayName": "Environment"
},
"defaultValue": "dev"
},
"Owner": {
"type": "String",
"metadata": {
"displayName": "Owner"
},
"defaultValue": "admin"
},
"CostCenter": {
"type": "String",
"metadata": {
"displayName": "CostCenter"
},
"defaultValue": "NA"
}
}
"policyRule": {
"if": {
"allOf": [
{
"field": "tags",
"exists": "false"
},
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
}
]
},
"then": {
"effect": "append",
"details": [
{
"field": "tags",
"value": {
"Environment": "[parameters('Environment')]",
"Owner": "[parameters('Owner')]",
"CostCenter": "[parameters('CostCenter')]"
}
}
]
}
}
}
1 ответ
Сам разберись, "exists": "false"
условие в моей политике будет срабатывать только в том случае, если свойство "tags" отсутствует или имеет значение null, поэтому группа ресурсов или ресурс имеют "tags": {}
будет игнорировать мою политику, даже если у нее нет тегов.
Кроме того, простая проверка тегов нецелесообразна, следует проверять имя тега от одного к другому, если не соответствует, принять меры для добавления.
И я также обнаружил, что приведенное ниже утверждение не работает для групп ресурсов, возможно, потому что это нерегулярные практики.
{
"then": {
"effect": "append",
"details": [
{
"field": "tags",
"value": {
"Environment": "[parameters('Environment')]",
"Owner": "[parameters('Owner')]",
"CostCenter": "[parameters('CostCenter')]"
}
}
]
}
}
предложите использовать ниже заявление вместо
{
"then": {
"effect": "append",
"details": [
{
"field": "tags['Environment']",
"value": "[parameters('Environment')]"
},
{
"field": "tags['Owner']",
"value": "[parameters('Owner')]"
},
{
"field": "tags['CostCenter']",
"value": "[parameters('CostCenter')]"
}
]
}
}