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
作为必需的非默认参数,并且您在调用模块时没有提供它(您只将源参数传递给链接到模块,而没有其他参数)。