terraform 计划错误“功能”:未设置必填字段

Vip*_*pul 0 terraform infrastructure-as-code

terraform init 初始化成功,下面是我的main.tf

############################################################################
# VARIABLES
#############################################################################

variable "resource_group_name" {
  type  = string
}

variable "location" {
  type    = string
  default = "eastus"
}


variable "vnet_cidr_range" {
  type    = string
  default = "10.0.0.0/16"
}

variable "subnet_prefixes" {
  type    = list(string)
  default = ["10.0.0.0/24", "10.0.1.0/24"]
}

variable "subnet_names" {
  type    = list(string)
  default = ["web", "database"]
}

#############################################################################
# PROVIDERS
#############################################################################

provider "azurerm" {

}

#############################################################################
# RESOURCES
#############################################################################

module "vnet-main" {
  source              = "Azure/vnet/azurerm"
  resource_group_name = var.resource_group_name
  location            = var.location
  vnet_name           = var.resource_group_name
  address_space       = var.vnet_cidr_range
  subnet_prefixes     = var.subnet_prefixes
  subnet_names        = var.subnet_names
  nsg_ids             = {}

  tags = {
    environment = "dev"
    costcenter  = "it"

  }
}

#############################################################################
# OUTPUTS
#############################################################################

output "vnet_id" {
  value = module.vnet-main.vnet_id
}
Run Code Online (Sandbox Code Playgroud)

当我运行时terraform plan -var resource_group_name=vnet-main -out vnet.tfplan 收到以下警告:

警告:不推荐使用仅插值表达式

在 .terraform/modules/vnet-main/Azure-terraform-azurerm-vnet-e0b9155/main.tf 第 3 行,在资源 "azurerm_resource_group" "vnet": 3: name
= "${var.resource_group_name}"

警告:不推荐使用带引号的类型约束

在 .terraform/modules/vnet-main/Azure-terraform-azurerm-vnet-e0b9155/variables.tf 第 39 行,在变量 "nsg_ids": 39: type = "map"

最终得到以下错误:

错误:“功能”:未设置必填字段

根据下面stackoverflow文章中提到的建议,如果我运行升级命令(terraform 0.12upgrade)升级到0.12得到以下错误:

修复 Terraform 中的“不推荐使用仅插值表达式”警告

错误:配置文件中的语法错误

在 main.tf 第 6 行,在变量“resource_group_name”中:6:type = string

解析时出错:在 6:11:未知标记:6:11 IDENT 字符串

小智 5

嘿,您必须指定features如下块来解决问题

provider "azurerm" {
  version = "=2.4.0"
  features {}
}
Run Code Online (Sandbox Code Playgroud)