使用tfvars文件中的属性



我有一个带有2个资源块的文件fsx.tf和一个文件prod.tfvars:

我的fsx.tf看起来像:

resource "aws_fsx_ontap_storage_virtual_machine" "fsx_svm" {
for_each                       = var.fsx_svm
file_system_id                 = aws_fsx_ontap_file_system.fsx.id
name                           = each.value.name
}
resource "aws_fsx_ontap_volume" "fsx_volumes" {
for_each                    = var.fsx_volumes
name                        = var.name
storage_virtual_machine_id  = each.value.storage_virtual_machine_id

我的产品.tfvar看起来像:

fsx_svm = {
svm01 = {
name = "svm01-single-az"
}
}

fsx_volumes = {
vol01 = {
name  = "FS"
storage_virtual_machine_id  = fsx_svm.svm01.id
}
}

我得到以下错误:

错误:storage_virtual_machine_id的预期长度在(21-21(范围内,得到fsx_svm.svm01.id

OR

此处不允许使用变量

如何在fsx_volumes变量中设置资源aws_fsx_ontap_storage_virtual_machine的属性id?我的目标是能够将资源块重新用于其他.tfvars文件。

在这种情况下,最好的方法可能是使用for_each[1]进行资源链接。这意味着不必依赖变量,你可以这样做:

resource "aws_fsx_ontap_storage_virtual_machine" "fsx_svm" {
for_each                       = var.fsx_svm
file_system_id                 = aws_fsx_ontap_file_system.fsx.id
name                           = each.value.name
}
resource "aws_fsx_ontap_volume" "fsx_volumes" {
for_each                    = aws_fsx_ontap_storage_virtual_machine.fsx_svm
name                        = "${each.key}-${var.name}"
storage_virtual_machine_id  = each.value.id
}

[1]https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#chaining-对于每种资源(_E(

相关内容

  • 没有找到相关文章

最新更新