我正在使用 Terraform 在我定义的自定义子模块中构建 Fortigate 资源。子模块的每个实例将使用fortios_firewall_vip资源构建 12 个唯一的 VIP。在根模块中,我尝试使用fortios_firewall_vipgrp资源定义一个 VIP 组,该资源将包括从子模块的所有实例构建的所有 VIP 。我似乎在为如何在 vipgp 资源中构建 member{} 块而苦苦挣扎。
以下是文件夹结构的细分:
root/
| _
fortinet.tf
modules/instance
| _
main.tf
outputs.tf
main.tf文件是我为每个实例构建 12 个唯一 VIP 的位置,output.tf文件是我保存所有 VIP 名称以在fortinet.tf根文件中引用的位置。
我尝试将 VIP 名称保存为列表和地图,但我不确定哪种方法更好。
列表输出示例:
output "vips" {
value = [
fortios_firewall_vip.vip1.name,
fortios_firewall_vip.vip2.name,
etc...
]
}
地图输出示例:
output "vips" {
value = {
name = fortios_firewall_vip.vip1.name
name = fortios_firewall_vip.vip2.name
etc...
}
}
在根 fortinet.tf 文件中,我使用成员块定义了一个 VIP 组,并尝试在其中“分解”所有实例 VIP。我想也许有了地图输出,我可以简单地将它们全部合并成一个巨大的块,如下所示:
resource "fortios_firewall_vipgrp" "vipgrp" {
name = "example-vipgrp"
member = merge(module.instance[*].vips)
}
但是,我收到一条错误消息An argument named "member" is not expected here. Did you mean to define a block of type "member"?
我是 Terraform 的新手,所以我正在努力寻找我应该在这里搜索帮助的术语......这甚至可能吗?
任何输入都会非常有帮助。谢谢!