Aracılığıyla paylaş


Azure İlkesi deseni: etiketler

Etiketler , Azure kaynaklarınızı yönetmenin, düzenlemenin ve yönetmenin önemli bir parçasıdır. Azure İlkesi, değişiklik etkisi ve düzeltme görevleriyle yeni ve mevcut kaynaklarınızdaki etiketleri uygun ölçekte yapılandırmayı mümkün kılar.

Örnek 1: Etiketleri parametreleştirme

Bu ilke tanımı, ilke atamasının kaynak gruplarında ne arayacağını ayarlamak için tagName ve tagValue olmak üzere iki parametre kullanır. Bu biçim, ilke tanımının herhangi bir sayıda etiket adı ve etiket değeri bileşimi için kullanılmasını sağlar, ancak yalnızca tek bir ilke tanımını korur.

Not

Bu ilke tanımı deseni Desen: Parametreler - Örnek #1'dekine benzer olsa da, bu örnek Tümü modunu kullanır ve kaynak gruplarını hedefler.

{
    "properties": {
        "displayName": "Add or replace a tag on resource groups",
        "mode": "All",
        "description": "Adds or replaces the specified tag and value when any resource group is created or updated. Existing resource groups can be remediated by triggering a remediation task.",
        "metadata": {
            "category": "Tags"
        },
        "parameters": {
            "tagName": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Name",
                    "description": "Name of the tag, such as 'environment'"
                }
            },
            "tagValue": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Value",
                    "description": "Value of the tag, such as 'production'"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Resources/subscriptions/resourceGroups"
                    },
                    {
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[parameters('tagValue')]"
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[parameters('tagValue')]"
                    }]
                }
            }
        }
    }
}

Örnek 1: Açıklama

"properties": {
    "displayName": "Add or replace a tag on resource groups",
    "mode": "All",
    "description": "Adds or replaces the specified tag and value when any resource group is created or updated. Existing resource groups can be remediated by triggering a remediation task.",
    "metadata": {
        "category": "Tags"
    },

Bu örnekte mod, bir kaynak grubunu hedeflediğinden Tümü olarak ayarlanmıştır. Çoğu durumda, etiketlerle çalışırken mod Dizinli olarak ayarlanmalıdır. Daha fazla bilgi için bkz . modlar.

"if": {
    "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[parameters('tagValue')]"
        }
    ]
},

İlke tanımının bu bölümünde, parameterized tagName parametresini ve tags['name'] biçimini birleştirerek alana tagValue parametresi için bu etiketi değerlendirmesini söyler. concat notEquals kullanıldığından, tags[tagName] tagValue değerine eşit değilse, değiştirme efekti tetiklenir.

"operations": [{
    "operation": "addOrReplace",
    "field": "[concat('tags[', parameters('tagName'), ']')]",
    "value": "[parameters('tagValue')]"
}]

Burada, parametreli etiket değerlerini kullanmak için aynı biçim addOrReplace işlemi tarafından, değerlendirilen kaynak grubunda etiketi istenen değere oluşturmak veya güncelleştirmek için kullanılır.

Örnek 2: Etiket değerini kaynak grubundan devralma

Bu ilke tanımı, üst kaynak grubundan hangi etiketin değerinin devralındığını belirlemek için tagName parametresini kullanır.

{
    "properties": {
        "displayName": "Inherit a tag from the resource group",
        "mode": "Indexed",
        "description": "Adds or replaces the specified tag and value from the parent resource group when any resource is created or updated. Existing resources can be remediated by triggering a remediation task.",
        "metadata": {
            "category": "Tags"
        },
        "parameters": {
            "tagName": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Name",
                    "description": "Name of the tag, such as 'environment'"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
                    },
                    {
                        "value": "[resourceGroup().tags[parameters('tagName')]]",
                        "notEquals": ""
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[resourceGroup().tags[parameters('tagName')]]"
                    }]
                }
            }
        }
    }
}

Örnek 2: Açıklama

"properties": {
    "displayName": "Inherit a tag from the resource group",
    "mode": "Indexed",
    "description": "Adds or replaces the specified tag and value from the parent resource group when any resource is created or updated. Existing resources can be remediated by triggering a remediation task.",
    "metadata": {
        "category": "Tags"
    },

Bu örnekte, bir kaynak grubundan değer almasına rağmen bir kaynak grubunu veya aboneliği hedeflemediğinden mod Dizinli olarak ayarlanır. Daha fazla bilgi için bkz . modlar.

"if": {
    "allOf": [{
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
        },
        {
            "value": "[resourceGroup().tags[parameters('tagName')]]",
            "notEquals": ""
        }
    ]
},

policyRule.if, tagName değerini değerlendirmek için Örnek #1 gibi kullanırconcat, ancak üst kaynak grubundaki aynı etiketin değeriyle karşılaştırmak için işlevini kullanırresourceGroup(). Buradaki ikinci yan tümce, kaynak grubundaki etiketin bir değere sahip olduğunu ve null olmadığını denetler.

"operations": [{
    "operation": "addOrReplace",
    "field": "[concat('tags[', parameters('tagName'), ']')]",
    "value": "[resourceGroup().tags[parameters('tagName')]]"
}]

Burada, kaynakta tagName etiketine atanan değer, üst kaynak grubundan değeri almak için işlevini de kullanırresourceGroup(). Bu şekilde etiketleri üst kaynak gruplarından devralabilirsiniz. Kaynağı zaten oluşturduysanız ancak etiketi eklemediyseniz, aynı ilke tanımı ve düzeltme görevi var olan kaynakları güncelleştirebilir.

Sonraki adımlar