Json 强制执行标签和it';使用Terraform的s值Azure策略

Json 强制执行标签和it';使用Terraform的s值Azure策略,json,azure,azure-devops,terraform,terraform-provider-azure,Json,Azure,Azure Devops,Terraform,Terraform Provider Azure,我试图强制用户添加一个标记及其值,在我的示例中,名称为“Environment”,值为“Production”。但是这里我的代码有一个问题,一个我无法解决的错误,这就是为什么我在这里。该错误与参数“tagValue”有关,而现有策略(此处为“azurerm_policy_definition”)似乎无法识别该参数。提前感谢您的帮助 variable "requiredTag" { default = "environment" } variable "requiredValue" {

我试图强制用户添加一个标记及其值,在我的示例中,名称为“Environment”,值为“Production”。但是这里我的代码有一个问题,一个我无法解决的错误,这就是为什么我在这里。该错误与参数“tagValue”有关,而现有策略(此处为“azurerm_policy_definition”)似乎无法识别该参数。提前感谢您的帮助

variable "requiredTag" {
  default = "environment"
}

variable "requiredValue" {
  default = "production"
}

resource "azurerm_policy_assignment" "requiredTag" {
  name                 = "Deny-RequiredTag-${var.requiredTag}"
  display_name         = "Tag obligatoire '${var.requiredTag}'"
  description          = "Affectation de la stratégie de balise requise pour '${var.requiredTag}'"
  policy_definition_id = "${azurerm_policy_definition.requiredTag.id}"
  scope                = "/subscriptions/0000000000/resourceGroups/PolicyLab"
  parameters           = <<PARAMETERS
  {
    "tagValue": {
        "value": "${var.requiredValue}"
    },
    "tagName": {
        "value": "${var.requiredTag}"
    }
}
PARAMETERS
}

resource "azurerm_policy_definition" "requiredTag" {
  name         = "Deny-RequiredTag-Resource"
  display_name = "Deny a Required Tag on a Resource"
  description  = "Deny all resources for a required tag"
  policy_type  = "Custom"
  mode         = "All"
  policy_rule  = <<POLICY_RULE
  {
    "if": {
      "not": {
        "field": "[concat('tags[', parameters('tagName'), ']')]",
        "equals": "[parameters('tagValue')]"
      }
    },
    "then": {
        "effect": "deny"
    }
}
POLICY_RULE

  parameters   = <<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'"
        }
    }
}
PARAMETERS

}
策略包含现有策略中不存在且没有默认值的新参数“tagValue”。 只有当新参数具有默认值时,才能将其添加到策略中

删除现有策略,或向terraform脚本添加默认值


    "tagValue": {
        "type": "String",
        "metadata": {
            "displayName": "Tag Value",
            "description": "Value of the tag, such as 'production'"
        },
        "defaultValue": [ "production" ]
    }

谢谢你知道吗,我添加了一个默认值,如果我有其他问题,我可以pm你吗?打开另一个问题,有更多的人乐于帮助。如果我的答案解决了你的问题,你应该点击复选标记接受它,这样我们就可以保持平台整洁:-)

    "tagValue": {
        "type": "String",
        "metadata": {
            "displayName": "Tag Value",
            "description": "Value of the tag, such as 'production'"
        },
        "defaultValue": [ "production" ]
    }