我具有以下目录/文件结构:
.
├── main.tf
├── modules
│ └── Resource_group
│ ├── main.tf
│ └── vars.tf
配置文件
./ main.tf
module "app-rg" {
source = "./modules/Resource_Group"
}
./ modules / resource_group / main.tf
provider "azurerm" {
version = "=2.11.0"
features { }
}
resource "azurerm_resource_group" "rg" {
name = "${lookup(var.resource_group, var.env)}"
location = "${lookup(var.location, var.env)}"
}
./ modules / resource_group / vars.tf
variable "env" {
description = "env : dev or prod"
}
variable "resource_group" {
type = "map"
default = {
dev = "rg-dev"
prod = "rg-prod"
}
}
variable "location" {
type = "map"
default = {
dev = "westindia"
prod = "westeurope"
}
}
当我运行“地形计划”时,会出现以下错误。
错误:缺少必需的参数
在main.tf第6行上的模块“ app-rg”中: 6:模块“ app-rg” {
参数“ env”是必需的,但未找到定义。
为什么得到参数“ env”是必需的,但未找到定义?
答案 0 :(得分:4)
您尚未提供env
输入变量。
由于没有默认值,因此terraform不知道您要使用什么环境。您有几个解决方案。首先,可以在调用模块时将变量值包括在main.tf
中。看起来像这样:
module "app-rg" {
source = "./modules/Resource_Group"
env = "dev"
}
您还可以将此输入变量包括在外部变量定义文件中,例如terraform.tfvars
,或将其作为环境变量传递,或在/modules/resource_group/vars.tf
中设置默认值
以下是HasiCorp提供的有关变量和模块的一些资源: