首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有计数0和取决于资源的变量的Terraform资源

具有计数0和取决于资源的变量的Terraform资源
EN

Stack Overflow用户
提问于 2019-05-31 04:32:45
回答 1查看 1.1K关注 0票数 0

我正在尝试使用Terraform在亚马逊网络服务上创建s3存储桶,很少有存储桶存在于所有环境(开发、质量和生产)中,而大多数存储桶只存在于1到2个环境中。我使用count有选择地定义资源

因此,在下面的代码中,只有当环境是dev或qa时,我才使用count和conditionals在S3中创建存储桶。但是当我运行prod环境的代码时,我得到了Error: module 's3-bucket-example': unknown variable referenced: 'lifecycle_rule_s3_bucket_example'; define it with a 'variable' block

每个存储桶的lifecycle_rule是在每个环境的相应var文件中定义的,就像lifecycle_rule_s3_bucket_example是在var-file.dev和var-file.qa中定义的一样,而不是在var-file.prod中定义,因为存储桶存在于开发和qa中。但是既然存储桶在prod中不存在,为什么我在定义lifecycle_rule变量时会出现错误?我的猜测是,由于prod的计数=0,其余的变量在模块中应该都不重要。

代码语言:javascript
复制
module "s3-bucket-example" {
  source             = "./modules/s3"
  count              = "${var.aws-account == "dev"|| var.aws-account == "qa" ? 1 :0}"
  bucketname         = "${local.this_env_prefix}-s3-bucket-example"
  versioning-enabled = "true"
  lifecycle_rule     = "${var.lifecycle_rule_s3_bucket_example}"
  aws_account        = "${var.aws-account}"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 05:35:08

在AWS (或任何其他提供商)中实际创建任何资源之前,Terraform会执行验证,以检查是否定义了所有变量等。

这样就减少了在资源创建过程中出错的机会。

我猜你还得为你的prod env定义一个虚值的变量……

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

https://stackoverflow.com/questions/56385252

复制
相关文章

相似问题

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