首页 > 解决方案 > Terraform没有将变量传递给模块

问题描述

我正在尝试将环境目录中的变量传递给模块,但遇到了一些问题。我的目录结构看起来像这样

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

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

标签: terraformterraform-provider-aws

解决方案


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

variable "range" {}

推荐阅读