Terraform 为什么我会得到这个论点;环境";是必需的,但未找到定义?

Terraform 为什么我会得到这个论点;环境";是必需的,但未找到定义?,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我有以下目录/文件结构: . ├── 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 {

我有以下目录/文件结构:

.
├── 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)}"
}
/模块/资源组/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:模块“应用程序rg”{

参数“env”是必需的,但未找到定义


为什么我得到参数“env”是必需的,但没有找到定义?

您没有提供
env
输入变量

由于没有默认值,terraform不知道您要使用什么env。您有几个选项可以解决这个问题。首先,您可以在调用模块时将变量值包含在
main.tf
中。它看起来如下:

module "app-rg" {
source = "./modules/Resource_Group"
env = "dev"
}
您还可以将此输入变量包括在外部变量定义文件中,如
terraform.tfvars
,或将其作为环境变量传递,或在
/modules/resource\u group/vars.tf
中设置默认值

以下是HasiCorp关于变量和模块的一些资源:


错误告诉您,您的模块将
env
作为必需的非默认参数,并且您在调用模块时没有提供它(您只将源参数传递给链接到模块,而没有其他参数)。