计数为 0 的 Terraform 资源和一个取决于资源的变量
Terraform resource with count 0 and a variable depending on the resource
我正在尝试使用 Terraform 在 aws 上创建 s3 存储桶,所有环境(开发、qa 和生产)中都存在很少的存储桶,而大多数存储桶仅存在于 1 或 2 个环境中。我正在使用计数来有选择地定义资源
所以在下面的代码中,仅当环境是开发或质量保证时,我才使用计数和条件在 S3 中创建存储桶。但是当我 运行 生产环境的代码时,我得到 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 因为 bucket 存在于 dev 和 qa 中。但是由于产品中不存在存储桶,为什么我会收到定义 lifecycle_rule 变量的错误?我的猜测是,由于产品的计数 = 0,因此剩余变量的 none 在模块中应该很重要。
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}"
}
在 AWS(或与此相关的任何其他提供商)中实际创建任何资源之前,Terraform 会执行验证以检查是否定义了所有变量等。
这样可以减少 运行 在资源创建过程中出错的几率。
我猜你必须为你的产品环境定义变量以及一个虚拟值...
我正在尝试使用 Terraform 在 aws 上创建 s3 存储桶,所有环境(开发、qa 和生产)中都存在很少的存储桶,而大多数存储桶仅存在于 1 或 2 个环境中。我正在使用计数来有选择地定义资源
所以在下面的代码中,仅当环境是开发或质量保证时,我才使用计数和条件在 S3 中创建存储桶。但是当我 运行 生产环境的代码时,我得到 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 因为 bucket 存在于 dev 和 qa 中。但是由于产品中不存在存储桶,为什么我会收到定义 lifecycle_rule 变量的错误?我的猜测是,由于产品的计数 = 0,因此剩余变量的 none 在模块中应该很重要。
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}"
}
在 AWS(或与此相关的任何其他提供商)中实际创建任何资源之前,Terraform 会执行验证以检查是否定义了所有变量等。
这样可以减少 运行 在资源创建过程中出错的几率。
我猜你必须为你的产品环境定义变量以及一个虚拟值...