Terraform模块引发有关要求字符串的错误

时间:2019-11-19 18:41:40

标签: terraform terraform-provider-azure terraform-modules

我一直在尝试将terraform代码从一个大文件拆分为单独的模块。我一直遇到运行Terraform Plan时出现以下错误的问题。

Error: Incorrect attribute value type

  on modules/nsg/main.tf line 11, in resource "azurerm_network_security_group" "InternalProdNSGPrivate":
  11:   resource_group_name = "${module.rg.main-rg-id}"

Inappropriate value for attribute "resource_group_name": string required.

我创建了一个outputs.tf文件,该文件具有以下内容:

output "main-rg-id" {
  value = "${azurerm_resource_group.InternalProd}"
}

此模块的main.tf具有以下内容:

module "global_variables" {
  source = "../global_variables"
}

resource "azurerm_resource_group" "InternalProd" {
  name     = "Internal"
  location = "${module.global_variables.location}"
}

在NSG的main.tf文件中,我进行了以下配置:

module "rg" {
  source = "../rg"
}
module "global_variables" {
  source = "../global_variables"
}

resource "azurerm_network_security_group" "InternalProdNSGPrivate" {
  name                = "Internal-NSG"
  location            = "${module.global_variables.location}"
  resource_group_name = "${module.rg.main-rg-id}"
....
}

不确定我的配置哪里出问题了。尝试查看多种不同的资源,博客等,但是没有运气。

1 个答案:

答案 0 :(得分:1)

azurerm_resource_group.InternalProd是代表整个resource "azurerm_resource_group" "InternalProd"的对象。

要仅生成该对象的ID,可以访问属性id,如下所示:

output "main-rg-id" {
  value = azurerm_resource_group.InternalProd.id
}