local_file和提供程序之间的地形依赖问题

时间:2020-09-18 09:07:51

标签: terraform terraform-provider-aws

Rabbitmq地形provider支持cacert_file作为自变量,即自定义CA的文件路径。我的自定义CA存储在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" {

我认为这是一个依赖性问题:当提供程序的配置尝试读取该文件时,尚未创建该文件。

由于无法添加dependency on provider,有没有办法解决我的问题?

0 个答案:

没有答案