我有一个名为subnets的远程状态属性,它存储在: data.terraform_remote_state.alb.subnets中
根据我部署的内容,这个属性要么存在,要么不存在。
当我尝试创建ECS集群时,它需要输入我想要在其中使用的子网组:
data.terraform_remote_state.alb.subnets或var.vpc_subnets (私有网络的子网)
不幸的是,由于插值的工作方式,它需要合并在一起:
"${split(",", length(var.vpc_subnets) == 0 ? join(",",data.terraform_remote_state.alb.subnets) : join(",",var.vpc_subnets))}"(参考:https://github.com/hashicorp/terraform/issues/12453)
然而,由于Terraform似乎并不“懒惰”地计算三元运算符,所以即使var.vpc_subnets不为零,它也会抛出以下错误:
Resource 'data.terraform_remote_state.alb' does not have attribute 'subnets' for variable 'data.terraform_remote_state.alb.subnets'如何正确处理可能未定义的远程状态资源?
编辑:输入错误:子网->子网
发布于 2018-03-12 19:06:52
设法弄清楚了。使用Terraform远程状态时,您可以设置默认值:https://www.terraform.io/docs/providers/terraform/d/remote_state.html
在我的data "terraform_remote_state.alb.subnets没有返回值的情况下,这是有效的。我可以将变量预置为"“,并使用本地变量对此变量进行检查。
发布于 2018-03-09 06:18:48
它会是subnet还是subnets?
假设您有以下数据源:
data "terraform_remote_state" "alb" {
backend = "s3"
config {
name = "alb"
}
}您需要检查远程状态属性是否有名称为subnet的输出。或者密钥名是subnets,需要您自己确认。
https://stackoverflow.com/questions/49182983
复制相似问题