【问题标题】:Terraform not passing variable to moduleTerraform没有将变量传递给模块
【发布时间】:2023-03-23 07:28:02
【问题描述】:

我正在尝试将变量从环境目录传递到模块,但遇到了一些问题。我的目录结构是这样的

repository
 -> prod
 -> test
      main.tf 
      terraform.tf
      vars.tfvars
 -> modules
     infra
       main.tf
       terraform.tf

在 test/main.tf 我有

terraform {
  required_providers {
    aws = {
      source = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

provider "aws" {
  region = "eu-west-1"
}

module "launch" {
  source = "../../modules/infra"
  range = var.range
}

test/terraform.tf 看起来像这样

variable "range" {}

测试/vars.tfvars

range="10.0.0.0/16"

模块/infra/main.tf

resource "aws_vpc" "testvpc" {
  cidr_block = var.range
}

当我运行它时,我得到提示

var.range
  Enter a value:

我希望它自动从变量中获取值,但即使我输入了值,我也会收到错误

│ Error: Unsupported argument
on main.tf line 20, in module "launch":
range = var.range 
An argument named "range" is not expected here

是否可以将给定环境的文件中的变量传递给模块?

【问题讨论】:

  • modules/infra/terraform.tf 中有什么内容?

标签: terraform terraform-provider-aws


【解决方案1】:

确保文件modules/infra/terraform.tf 包含变量:

variable "range" {}

【讨论】:

  • 谢谢!这有助于使计划发挥作用。它仍然提示变量实际上是什么,有什么方法可以从 test/dir vars 动态处理它?
  • 在 vars.tfvars 而不是 terraform.tf 中,感谢您的帮助!
  • 您应该在vars.tfvars 中拥有范围(range="10.0.0.0/16")的实际值,但您需要在 terraform 命令中指定输入文件:terraform plan -var-file="vars.tfvars",除非您将文件命名为 terraform.tfvars是它默认拾取的内容。
猜你喜欢
  • 2018-09-07
  • 1970-01-01
  • 2020-10-13
  • 2019-05-20
  • 1970-01-01
  • 2020-12-10
  • 2020-05-16
  • 1970-01-01
  • 2021-01-20
相关资源
最近更新 更多