Как прочитать output_content из azurerm_resource_group_template_deployment

#azure #terraform #terraform-provider-azure

#azure #терраформирование #terraform-provider-azure

Вопрос:

Я определил azurerm_resource_group_template_deployment my_rm, который имеет источник шаблона ARM:

 {
  ...
  "parameters": {...  }, 
  "resources": [ ...  ],
  "outputs": {
    "db_name": {
      "type": "string",
      "value": "test_value"
    } 
  }
}
  

Я хотел бы использовать этот вывод в terraform, например:

 output "db_name" {
  value = azurerm_resource_group_template_deployment.my_rm.output_content["db_name"]
}
  

К сожалению, приведенное выше определение возвращает пустое значение.

Как правильно определить выходные данные в terraform?

Ответ №1:

output_content экспортирует содержимое JSON выходных данных развертывания шаблона ARM.

После моей проверки вы можете вывести содержимое с помощью

 output "db_name" {
  value = azurerm_resource_group_template_deployment.my_rm.output_content
}
  

Затем запустите terraform apply , вы увидите результат вывода, затем вы можете изменить, чтобы отфильтровать результат с помощью

 output "db_name" {
  value = jsondecode(azurerm_resource_group_template_deployment.my_rm.output_content).db_name.value
}
  

Пожалуйста, обратите внимание, что db_name это не то же самое объявление db_name в вашем коде terraform, оно действительно должно соответствовать ключу вывода JSON на первом шаге выше.

Например,

введите описание изображения здесь

Комментарии:

1. К сожалению, если вы добавите оба вывода одновременно terraform plan , это не сработает. Посмотрите на это: github.com/hashicorp/terraform/issues/29292