未从命令行应用 Terraform 变量

Terraform variables not applied from command line

我有下面的文件结构,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"
  }
}

所有子文件夹都是 terraform 中的模块,变量不是全局的...您需要在每个级别上声明变量,如果它们相同,您可以对一个文件进行符号链接以减少复制粘贴。


如果它只是一个平面结构你就不需要了,
如果你想试试这个:

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

output "test" {
  value = "${var.build-number}"
}

terraform apply -var "build-number=2"

输出正确的变量值