Terraform 本地_文件和提供程序之间的地形依赖性问题
Rabbitmq terraform supportTerraform 本地_文件和提供程序之间的地形依赖性问题,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,Rabbitmq terraform supportcacert_file作为参数,是指向自定义CA的文件路径。我的自定义CA存储在AWS ssm参数中。我需要获取它,将它放入一个文件,并使用cacert\u file的文件值路径 因此,首先我获取值: data "aws_ssm_parameter" "rabbitmq_cacert_file" { name = "/shared/${var.metaenv}/rabbitmq/ca&quo
cacert_file
作为参数,是指向自定义CA的文件路径。我的自定义CA存储在AWS ssm参数中。我需要获取它,将它放入一个文件,并使用cacert\u 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" {
我认为这是一个依赖性问题:当提供者的配置试图读取文件时,文件尚未创建
由于无法添加属性,是否有办法解决我的问题?如果
local\u file.rabbitmq\u ca.filename
是一个导出属性,那么这里将存在一个隐式依赖项。不幸的是,这是资源的一个论点。这应该只是初始应用的问题,对吗?这里的解决方法是在完整的计划和应用之前,可能target
rabbitmq_ca资源,这不是很好,但对您来说很有用。target
资源确实是可能的,但在我的情况下并不适合,因为terraform流是CI/CD管道的一部分,而不是所有rabbitmq提供者。无论如何,谢谢你的主意。