我有一个带有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(