Azure DevOps Terraform - ошибка с azurerm_policy_assignment - "невозможно проанализировать идентификатор области исправления: идентификатор пуст" - PullRequest
0 голосов
/ 21 апреля 2020

У нас есть конвейер выпуска, использующий серию задач Terraform 0.12.3 для создания виртуальной машины, часть из которых включает создание политики для автоматической маркировки ресурсов. Вот соответствующий код Terraform, который выдает ошибку:

# Assign tagging policy
resource "azurerm_policy_assignment" "tag_policy" {
  count                = length(var.tagNames)
  name                 = "Apply${var.tagNames[count.index]}Tag"
  scope                = azurerm_resource_group.rsg.id
  policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498"
  description          = "Assign policy for Tag '${var.tagNames[count.index]}' Value '${var.tagValues[count.index]}'"
  display_name         = "Apply${var.tagNames[count.index]}Tag"

  parameters           = <<PARAMETERS
{
    "tagName": {
      "value": "${var.tagNames[count.index]}"
    },
    "tagValue": {
      "value": "${var.tagValues[count.index]}"
    }
}
PARAMETERS
}

(части кода "count" должны иметь 3 применяемых тега, которые определены в variables.tf)

Полученная ошибка:

2020-04-17T15:40:29.5769619Z Error: cannot parse "policy_definition_id" as a Policy Definition ID: unable to parse Policy Definition ID "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498": unable to parse Remediation Scope ID: ID is empty
2020-04-17T15:40:29.5771388Z 
2020-04-17T15:40:29.5771960Z   on main.tf line 62, in resource "azurerm_policy_assignment" "tag_policy":
2020-04-17T15:40:29.5772430Z   62: resource "azurerm_policy_assignment" "tag_policy" {

Я дважды проверил, правильно ли указан идентификатор определения политики:

Имя: добавьте тег и его значение к ресурсам

Идентификатор определения: /providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498

В руководстве Hashicorp для azurerm_policy_assignment не упоминается о необходимости установки флажка игнорирования или идентификатора области исправления, в Hashicorp это.

1 Ответ

0 голосов
/ 23 апреля 2020

Для этой проблемы, я думаю, введение для свойства policy_definition_id ресурса azurerm_policy_assignment вводит вас в заблуждение неверным образом. Вы можете видеть, что оно указывает azurerm_policy_definition.example.id для свойства, но когда вы выводите этот идентификатор, вы будете знать, что это идентификатор ресурса определения политики, а не идентификатор, который вы указали. Так что policy_definition_id выглядит так:

/subscriptions/xxxxxxxx/providers/Microsoft.Authorization/policyDefiniti
ons/my-policy-definition
...