首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform:未定义的远程状态处理

Terraform:未定义的远程状态处理
EN

Stack Overflow用户
提问于 2018-03-09 05:42:41
回答 2查看 1.1K关注 0票数 2

我有一个名为subnets的远程状态属性,它存储在: data.terraform_remote_state.alb.subnets中

根据我部署的内容,这个属性要么存在,要么不存在。

当我尝试创建ECS集群时,它需要输入我想要在其中使用的子网组:

data.terraform_remote_state.alb.subnets或var.vpc_subnets (私有网络的子网)

不幸的是,由于插值的工作方式,它需要合并在一起:

代码语言:javascript
复制
"${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不为零,它也会抛出以下错误:

代码语言:javascript
复制
Resource 'data.terraform_remote_state.alb' does not have attribute 'subnets' for variable 'data.terraform_remote_state.alb.subnets'

如何正确处理可能未定义的远程状态资源?

编辑:输入错误:子网->子网

EN

回答 2

Stack Overflow用户

发布于 2018-03-12 19:06:52

设法弄清楚了。使用Terraform远程状态时,您可以设置默认值:https://www.terraform.io/docs/providers/terraform/d/remote_state.html

在我的data "terraform_remote_state.alb.subnets没有返回值的情况下,这是有效的。我可以将变量预置为"“,并使用本地变量对此变量进行检查。

票数 2
EN

Stack Overflow用户

发布于 2018-03-09 06:18:48

它会是subnet还是subnets

假设您有以下数据源:

代码语言:javascript
复制
data "terraform_remote_state" "alb" {
  backend = "s3"
  config {
    name = "alb"
  }
}

您需要检查远程状态属性是否有名称为subnet的输出。或者密钥名是subnets,需要您自己确认。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49182983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档