gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:26:53 26 4
gpt4 key购买 nike

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

.
├── 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"
}
}

当我运行“terraform plan”时,我会收到以下错误。

Error: Missing required argument

on main.tf line 6, in module "app-rg": 6: module "app-rg" {

The argument "env" is required, but no definition was found.



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

最佳答案

您尚未提供 env输入变量。

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

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

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

以下是 HasiCorp 关于变量和模块的一些资源:
  • https://learn.hashicorp.com/terraform/getting-started/variables
  • https://learn.hashicorp.com/terraform/modules/using-modules
  • https://www.terraform.io/docs/configuration/modules.html#calling-a-child-module
  • 关于terraform - 为什么我得到参数 "env"是必需的,但没有找到定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62171080/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com