我正在尝试编写一个 Azure 策略,将特定标记的标记值从资源组继承到资源。 例如,请考虑以下事项: 我有一个带有标签应用程序的虚拟机:Appname1 该虚拟机位于带有标签应用程序的资源组中:Appname2
我需要一个策略来检查虚拟机(Appname1)的标签值是否与资源组(Appname2)的标签值匹配。更改值的操作很简单,但我很难改进 if/check 来获取标签值。
内置继承策略具有以下规则:
"if": {
"allOf": [
{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"notEquals": "[resourceGroup().tags[parameters('tagName')]]"
},
{
"value": "[resourceGroup().tags[parameters('tagName')]]",
"notEquals": ""
}
]
},
这会检查 RG 标签键不为空,并且资源的标签键不等于 RG 的标签键。
这仅比较资源/RG 的标签键或标签名称,而不是标签值。
是否可以让 Azure 策略比较特定标签键的标签值?
您可以使用下面的策略将特定标签的标签值从资源组继承到资源。
{
"mode": "Indexed",
"policyRule": {
"if": {
"allOf": [
{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"exists": "false"
},
{
"value": "[resourceGroup().tags[parameters('tagName')]]",
"notEquals": ""
}
]
},
"then": {
"effect": "append",
"details": [
{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[resourceGroup().tags[parameters('tagName')]]"
}
]
}
},
"parameters": {
"tagName": {
"type": "String",
"metadata": {
"displayName": "Tag Name",
"description": "Name of the tag, such as 'environment'"
}
}
}
}
确保在分配策略时启用修复并分配角色以附加标签。
政策分配: