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

时间:2020-06-03 10:51:53

标签: 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 { }
}

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”是必需的,但未找到定义?

1 个答案:

答案 0 :(得分:4)

您尚未提供env输入变量。

由于没有默认值,因此terraform不知道您要使用什么环境。您有几个解决方案。首先,可以在调用模块时将变量值包括在main.tf中。看起来像这样:

module "app-rg" {
source = "./modules/Resource_Group"
env = "dev"
}

您还可以将此输入变量包括在外部变量定义文件中,例如terraform.tfvars,或将其作为环境变量传递,或在/modules/resource_group/vars.tf中设置默认值

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