【问题标题】:Multiple Name Pattern and Parameter definition多名称模式和参数定义
【发布时间】:2020-01-08 20:32:43
【问题描述】:

我制定了一项政策来监控资源的命名约定。我们有一个提供了一些变化的具体指南,我想我已经准确地捕捉到了它。

以此为例

https://docs.microsoft.com/en-us/azure/governance/policy/samples/allow-multiple-name-patterns

我想出了以下我认为可行的方法。问题是当我去部署它时,Azure Policy api 说我已经定义了参数,但它们没有被使用,而且很明显它们是。寻求有关使用参数创建多名称模式的帮助,如果可能的话。

    "properties": {
        "displayName": "Match multiple name patterns.",
        "description": "Allows one of multiple naming patterns for resources.",
        "mode": "Indexed",
        "parameters": {
            "buName": {
               "type": "String",
               "metadata": {
                  "description": "Abbreviated Business Unit / i.e. USNR, SHSD, MAXD"
               }
            },
            "regionShortCode": {
               "type": "String",
               "metadata": {
                  "description": "Shortcode for the region / i.e. CUS, NCU, EUS"
               }
            },
            "environmentShortCode": {
                "type": "String",
                "metadata": {
                   "description": "Environment code / i.e. D (dev), U (uat), P (prod)"
                }
             }
         },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('buName')]-[parameters('regionShortCode')]-[parameters('environmentShortCode')]-???-###"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('buName')]-[parameters('regionShortCode')]-[parameters('environmentShortCode')]-???"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('regionShortCode')]???[parameters('environmentShortCode')]##"
                        }
                    },
                    {
                        "not": {
                            "field": "name",
                            "match": "[parameters('regionShortCode')]???[parameters('environmentShortCode')]###"
                        }
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
} ```

【问题讨论】:

    标签: azure-policy


    【解决方案1】:

    您应该只使用一次括号并将所有内容连接在一起。尝试使用此方法: [concat(parameters('buName'), '-', parameters('regionShortCode'), '-', parameters('environmentShortCode'), '-???-###')]

    【讨论】:

    • 谢谢凯姆利!做到了,我不知道为什么我没有想到这一点。非常感谢第二次对此的关注。
    【解决方案2】:

    你得到的错误是在分配时间吗?

    另外,对于您正在使用的参数?是否有明确的用户必须使用的列表?如果它只是一个模式约定,比如总线它是一个 4 个字母的名称,那么你应该使用通配符。

    请记住,在分配时您必须指定每个参数。

    【讨论】:

    • 不是在赋值时,我正在创建一个定义,在定义创建过程中,它告诉我我已经声明了参数但从未使用过它们。如果您查看规则集,情况并非如此。目标是在赋值期间,操作员将为参数填写适当的值。在 Azure 门户中定义策略时再次出现错误。
    • 另外,我不想将通配符用于名称的特定部分。名称的某些部分可以指定通配符和数字,但有些部分不是,这就是我有参数的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多