#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. В любом случае, спасибо за идею.