Проблема зависимости Terraform между local_file и provider

#terraform #terraform-provider-aws

#terraform #terraform-provider-aws

Вопрос:

Поддержка Rabbitmq terraform provider cacert_file в качестве аргумента указывает путь к файлу пользовательского центра сертификации. Мой пользовательский центр сертификации хранится в параметрах AWS ssm. Мне нужно извлечь его, поместить в файл и использовать путь к значению файла для cacert_file .

Итак, сначала я извлекаю значение :

 data "aws_ssm_parameter" "rabbitmq_cacert_file" {
  name = "/shared/${var.metaenv}/rabbitmq/ca"
}
  

Затем я использую это значение для создания временного файла :

 resource "local_file" "rabbitmq_ca" {
  content  = data.aws_ssm_parameter.rabbitmq_cacert_file.value
  filename = "${path.module}/rabbitmq_cacert_file"
}
  

и, наконец, я использую этот файл в своем провайдере :

 provider "rabbitmq" {

  endpoint        = "https://myhost:8443"
  username        = myuser
  password        = mypass

  cacert_file     = local_file.rabbitmq_ca.filename
}
  

но у меня проблема с созданием плана исключения :

 Error: open ./rabbitmq_cacert_file: no such file or directory
  on main.tf line 28, in provider "rabbitmq":
  28: provider "rabbitmq" {
  

Я думаю, что это проблема зависимости: файл еще не создан, когда конфигурация поставщика пытается его прочитать.

Поскольку невозможно добавить зависимость от provider, есть ли способ решить мою проблему?

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

1. Если local_file.rabbitmq_ca.filename бы был экспортированный атрибут, то здесь была бы неявная зависимость. К сожалению, это аргумент для ресурса. Это должно быть проблемой только для первоначального применения, правильно? Обходной путь здесь, вероятно target rabbitmq_ca , заключается в том, чтобы использовать ресурс до полного планирования и применения, что не очень здорово, но сработало бы для вас.

2. target ресурс действительно возможен, но не адаптирован в моем случае, поскольку поток terraform является частью конвейеров CI / CD, и не каждый использует поставщика rabbitmq. В любом случае, спасибо за идею.