terraform - 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
是否可以将给定环境的文件中的变量传递给模块?
解决方案
确保文件modules/infra/terraform.tf
包含变量:
variable "range" {}
推荐阅读
- javascript - 从 ng-bootstrap 表中删除行
- batch-file - 我的批处理脚本在代码之后停止执行。命令
- python - 在 Python 中用对应的行值填充 NaN
- python - MongoDB如何获得评论+回复的数量
- python - 尝试创建自定义用户表单时在确认密码上出现 FieldError
- node.js - 图像文件的 AJAX 发布请求在 Express Route 处返回空
- node.js - 无法运行:npm start on react
- node.js - 安装 NVM(节点版本管理器)bash:第 5 行:npm:找不到命令时,Laravel Envoy 无法在 Ubuntu 上检测节点/npm
- vue.js - Vuejs 表单需要刷新才能让 router.push 工作
- unity3d - 如何统一使用 MapbBox 制作 2D 地图视图