Terraform 和 GCP - 在现有的共享 VPC 和子网中创建新的计算 VM
Posted
技术标签:
【中文标题】Terraform 和 GCP - 在现有的共享 VPC 和子网中创建新的计算 VM【英文标题】:Terraform and GCP - Create new Compute VM in existing Shared VPC and Subnet 【发布时间】:2022-01-21 20:02:00 【问题描述】:如何创建新的计算实例并将其与现有的共享 VPC/子网关联?共享的 VPC/子网已存在于另一个项目中。
我的 TF 块:
resource "google_compute_instance" "computevm1"
name = "test-compute-vm1"
zone = "us-west1-a"
machine_type = "e2-standard-1"
network_interface
network = "isolated-vpc"
boot_disk
initialize_params
image = "ubuntu-2004-focal-v20211212"
size = 20
我得到的错误:
The referenced network resource cannot be found., invalid
【问题讨论】:
【参考方案1】:对于 HCL 属性 network,指定要在其中创建实例的项目中的 VPC 的网络名称。将自动从区域中选择子网。创建实例时,共享 VPC 没有什么特别之处。
假设您的共享 VPC 在默认网络上启用:
network_interface
network = "default"
如果不同,请更改名称。
【讨论】:
这没有意义。我有一个已经在另一个项目中创建的网络,并与我正在创建这个新实例的项目共享。 Terraform 如何知道将新实例与共享网络相关联?并且将“默认”设置为无效。Error 400: Invalid value for field 'resource.networkInterfaces[0].network': 'projects/project-name/global/networks/default'. The referenced network resource cannot be found
@BenVek 使用正在创建 VM 实例的网络的实际名称。该网络必须已经存在。 VM 不关心共享/对等网络。只需在 HCL 中选择正确的网络即可。
共享网络已经存在。我确实包含了网络名称并得到了同样的错误。 network_interface network = "NAME OF SHAREDVPC"
@BenVek - 你的名字有问题。在您的问题中,列出您在其中创建 VM 的项目中所有网络的实际名称。 屏蔽名称没有安全优势。在您的问题和 cmets 中使用实际值。
共享 VPC 网络名称为“isolated-vpc” 子网名称为“isolated-net”network_interface network = "isolated-vpc"
以上是关于Terraform 和 GCP - 在现有的共享 VPC 和子网中创建新的计算 VM的主要内容,如果未能解决你的问题,请参考以下文章
GCP 为每个项目和 Terraform 预定义 IAM 角色
在同一个 TF 脚本中使用多个 Terraform 提供程序(GCP 和 Kubernetes)创建资源
使用 Terraformer\Terraform 克隆 GCP 项目
在 Terraform for GCP 中允许帐户和角色时出错
使用 Github 和 Cloud Source Repository 的 Terraform GCP Cloud 功能