使用来自 GCP 市场的 Terraform 创建实例

Create instance using terrafrom from GCP marketplace

我正在尝试从市场创建 terraform script to launch the fastai instance

我正在添加图片名称,

boot_disk {
    initialize_params {
      image = "<image name>"
    }
  }

当我添加

click-to-deploy-images/deeplearning

来自 url

https://console.cloud.google.com/marketplace/details/click-to-deploy-images/deeplearning

报错,


Error: Error resolving image name 'click-to-deploy-images/deeplearning': Could not find image or family click-to-deploy-images/deeplearning

  on fastai.tf line 13, in resource "google_compute_instance" "default":
  13: resource "google_compute_instance" "default" {

如果我使用

debian-cloud/debian-9

来自 url

https://console.cloud.google.com/marketplace/details/debian-cloud/debian-stretch?project=<>

正在工作。

我们可以通过 terraform 部署 fastai 镜像吗?

我从您共享的深度学习市场 VM 实例进行了部署并查看了源图像[1],您应该能够使用我提供的 url 通过 Terraform 进行部署。我还注意到一个警告图像,指出该图像已被弃用,并且有这个新版本 [2]。

希望对您有所帮助!

[1]来源图片:https://www.googleapis.com/compute/v1/projects/click-to-deploy-images/global/images/tf2-2-1-cu101-20200109

[2]https://www.googleapis.com/compute/v1/projects/click-to-deploy-images/global/images/tf2-2-1-cu101-20200124

在本例中,名称为 "deeplearning-platform-release/pytorch-latest-gpu"、

boot_disk {
    initialize_params {
      image = "deeplearning-platform-release/pytorch-latest-gpu"
      ...
    }
  }

现在我可以创建实例了。

致其他像我这样的新手:

显然 GCP Marketplace 正在使用 Deployment Manager,这是 google 自己的声明性工具来管理基础设施。 (我认为 moduleterraform 中最接近它的抽象。)

因此,标题中的问题没有simple/single答案。

在我看来 - 如果你从头开始 and/or 可以花时间 - 最好是使用 terraform 模块而不是 GCP 市场解决方案 - 如果存在的话。

但是,更改是好的,因为您正在导入现有的基础设施,您不能立即替换它(或者没有这样的模块)。

在这种情况下,我认为您最好的办法是转至 Deployment Manager in google console 并打开您需要导入的特定部署。

此时您可以看到构成部署的资源。大概会有vm template(s), vm(s), firewall rule(s),等等...

单击 vm instancetemplate 会显示很多有用的详细信息。

最重要的是你可以推断出使用了什么图像。

例如: 就我而言,它显示:

sourceImage https://www.googleapis.com/compute/v1/projects/openvpn-access-server-200800/global/images/aspub275

由此我可以定义(基于an answer on issue #7319

data "google_compute_image" "openvpn_server" {
  name    = "aspub275"
  project = "openvpn-access-server-200800"
}

我可以反过来在 google_compute_instance 资源中使用。

不过,这将强制重新创建 VM。