未从命令行应用地形变量



我在下面有文件结构,terraform CLI 没有在 S3 文件的内容中使用运行时变量值。它始终默认为 0 值。


结构:

terraform
main.tf
api/
variables.tf
s3.tf

main.tf

module "api" {
source = "./api"
providers = {
aws = "aws.us-east-1"
}
}

variables.tf

variable "build-number" {
description = "jenkins build number"
type        = "string"
default = "0"
}

s3.tf

resource "aws_s3_bucket_object" "api-build-version" {
bucket = "api-code"
key    = "build-version"
content = "${var.build-number}"
etag = "${md5("${var.build-number}")}"
}
terraform plan -var "build-number=2" -target aws_s3_bucket_object.api-build-version

我的 Terraform 版本是 v0.11.8

在您的结构中,您的变量仅在 API 模块下

terraform
main.tf
api/
variables.tf
s3.tf

您需要在根目录中使用相同的变量,将其添加到 main.tf 或自己的文件中,然后像这样传递它:

module "api" {
source = "./api"
build-number = "${var.build-number}"
providers = {
aws = "aws.us-east-1"
}
}

所有子文件夹都是地形形式的模块,变量不是全局的...您可以在每个级别上声明变量,如果它们相同,则可以执行指向一个文件的符号链接以减少复制粘贴。


如果它只是一个平面结构,你不需要它,如果你愿意,
试试这个:

variable "build-number" {
type    = "string"
default = "0"
}
output "test" {
value = "${var.build-number}"
}

terraform apply -var "build-number=2"

输出正确的变量值

相关内容

  • 没有找到相关文章

最新更新