我想要完成的事情:
我希望 Terraform 在 GCP 中创建基于经典路由的 VPN 隧道。
背景:
在 GCP 中设置 VPN 隧道时,有 3 个选项用于路由 BGP 基于路由的策略
在 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 隧道的类型将是基于策略而不是基于路由。
是否不支持 Terraform 在 GCP 中创建基于路由的经典 VPN 隧道?
另一个奇怪的事情是在创建 VPN 网关时。当您在 GCP 控制台中执行此操作时,您需要指定 VPN 网关拥有的外部 IP 地址。这是一个非常重要的属性。但是 Terraform 没有为资源“google_compute_vpn_gateway”设置 IP 地址的选项在这里的示例中:https ://www.terraform.io/docs/providers/google/r/compute_vpn_gateway.html他们创建了一个静态 IP 对象,但是它从未在配置中分配给 VPN 网关。