私が達成したいこと:
Terraform で GCP にクラシック ルート ベースの VPN トンネルを作成する必要があります。
バックグラウンド:
GCP で VPN トンネルを設定する場合、BGP ルート ベースのルーティングには 3 つのオプションがあります ポリシー ベース
GCP でルート ベースの VPN トンネルを作成する場合、リモート サブネットを指定する必要があります。ポリシー ベースの VPN トンネルを作成する場合は、ローカル サブネットも指定する必要があります。
ルート ベースの VPN トンネルを作成したいので、リモート サブネットを提供するだけで済みます。
問題:
ただし、Terraform では、使用するルーティング タイプに関係するリソース「google_compute_vpn_tunnel」のオプションはありません。「local_traffic_selector」の欠如によって決定され、ルートベースの VPN トンネルになる可能性があります。しかし、main.tf で「local_traffic_selector」オプションを省略しても、それはまだ計画に含まれています。
' + local_traffic_selector = (適用後に判明)
値を指定していないため、Terraform は空の値で使用しようとしますが、これは不可能です。
Error: Error creating VpnTunnel: googleapi: Error 400: Invalid value for field 'resource.localTrafficSelector[0]': ''. The local_traffic_selector field cannot be empty for network in custom subnet mode., invalid
on main.tf line 51, in resource "google_compute_vpn_tunnel" "tunnel1":
51: resource "google_compute_vpn_tunnel" "tunnel1" {
指定すると、VPN トンネルのタイプはルート ベースではなくポリシー ベースになります。
GCP でルート ベースの従来の VPN トンネルを作成するための Terraform のサポートはありませんか?
もう 1 つの奇妙な点は、VPN ゲートウェイを作成するときです。GCP コンソールでこれを行う場合、VPN ゲートウェイが持つ外部 IP アドレスを指定する必要があります。それはかなり重要な性質です。ただし、Terraform にはリソース「google_compute_vpn_gateway」の IP アドレスを設定するオプションがありません: https://www.terraform.io/docs/providers/google/r/compute_vpn_gateway.htmlの例では、静的 IP オブジェクトを作成しますが、構成で VPN ゲートウェイに割り当てられることはありません。