Terraform を使用して、定義したカスタム子モジュール内に Fortigate リソースを構築しています。子モジュールの各インスタンスは、fortios_firewall_vipリソースを使用して 12 の一意の VIP を構築します。ルート モジュール内で、 fortios_firewall_vipgrpリソースを使用して VIP グループを定義しようとしています。これには、子モジュールのすべてのインスタンスから構築されたすべての VIPが含まれます。vipgrp リソース内で member{} ブロックを構築する方法に苦労しているようです。
フォルダ構造の内訳は次のとおりです。
root/
| _
fortinet.tf
modules/instance
| _
main.tf
outputs.tf
main.tfファイルは、インスタンスごとに 12 の一意の VIP を構築する場所であり、outputs.tfファイルは、 fortinet.tfルート ファイルで参照するすべての VIP 名を保存する場所です。
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 ファイルで、メンバー ブロックを使用して 1 つの VIP グループを定義し、そこにすべてのインスタンス VIP を「分割」しようとしています。おそらくマップ出力を使用して、次のようにすべてを 1 つの巨大なブロックに単純にマージできると考えました。
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 の初心者なので、ここで支援を求めてグーグルで検索する必要がある用語に苦労しています...これは可能ですか?
どんな入力も非常に役に立ちます。ありがとう!