У нас есть конвейер выпуска, использующий серию задач 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 это.