阅读本文后https://developer.hashicorp.com/terraform/language/values/variables#assigning-值到根模块变量,我确信有3种方法可以设置变量值。
最近,我在我们的一个项目中遇到了在导入模块时传递变量的代码。
module "robot_shell" {
source = "./modules/xx_shell"
xx_resource_name_prefix = local.resource_name_prefix
cloudwatch_log_group_retention_days = 30
s3_expiration_days = 30
}
模块./modules/xx_shell
中的文件
resource "aws_s3_bucket_lifecycle_configuration" "dest" {
bucket = aws_s3_bucket.dest.bucket
rule {
id = "expire"
status = "Enabled"
expiration {
days = var.s3_expiration_days
}
}
}
变量定义变量.tf
variable "s3_expiration_days" {
type = number
description = "S3 bucket objects expiration days https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_lifecycle_configuration#days"
}
为什么terraform文档没有讨论它?还是这是一种不再使用的旧方法?
如您所述,将变量传递给模块是一种正常方式。这在中的TF文档中有描述
- 添加模块配置
您在问题中提供的链接是关于在运行plan/apply
时将变量传递给根/父模块的。但是,当您想将变量传递给使用module
块定义的子模块时,您可以通过module
参数传递它们。