【发布时间】:2021-11-10 20:32:09
【问题描述】:
我正在使用 Terraform 在我定义的自定义子模块中构建 Fortigate 资源。子模块的每个实例将使用 fortios_firewall_vip 资源构建 12 个唯一的 VIP。 在根模块中,我尝试使用 fortios_firewall_vipgrp 资源定义一个 VIP 组,该资源将包括从子模块的 ALL 实例构建的 ALL 的 VIP .我似乎在为如何在 vipgrp 资源中构建 member{} 块而苦苦挣扎。
以下是文件夹结构的细分:
root/
| _
fortinet.tf
modules/instance
| _
main.tf
outputs.tf
main.tf 文件是我为 每个 实例构建 12 个唯一 VIP 的位置,outputs.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 的新手,所以我在纠结应该用什么术语在这里谷歌上寻求帮助……这可能吗?
任何输入都会非常有帮助。谢谢!
【问题讨论】: