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

Posted

技术标签:

【中文标题】使用来自 GCP 市场的 terraform 创建实例【英文标题】:Create instance using terrafrom from GCP marketplace 【发布时间】:2020-06-16 01:04:27 【问题描述】:

我正在尝试创建terraform script 以从市场推出fastai instance。

我将图像名称添加为,

boot_disk 
    initialize_params 
      image = "<image name>"
    
  

当我添加时

click-to-deploy-images/deeplearning

来自网址

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

来自网址

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

正在工作。

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

【问题讨论】:

【参考方案1】:

我从您共享的深度学习市场 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

【讨论】:

嗨。单击这些链接后,我得到 401。如何解决 401 错误。?有什么想法吗?【参考方案2】:

在这种特殊情况下,名称为“deeplearning-platform-release/pytorch-latest-gpu”,

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

现在我可以创建实例了。

【讨论】:

【参考方案3】:

致像我这样的其他新手:

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

因此,标题中的问题没有简单/单一的答案。

在我看来 - 如果您从头开始和/或有能力付出时间 - 最好使用 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/open***-access-server-200800/global/images/aspub275

由此我可以定义(基于an answer 问题#7319)

data "google_compute_image" "open***_server" 
  name    = "aspub275"
  project = "open***-access-server-200800"

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

这将强制重新创建虚拟机。

【讨论】:

另外,还有registry.terraform.io/providers/hashicorp/google/latest/docs/…,但以一个巨大的警告标志开头...

以上是关于使用来自 GCP 市场的 terraform 创建实例的主要内容,如果未能解决你的问题,请参考以下文章

使用 terraform 创建多个 GCP 存储桶

使用 Terraform 创建 GCP 自定义 IAM 角色

使用 Terraformer\Terraform 克隆 GCP 项目

如何使用 Terraform 公开 gcp 云功能

我可以使用 Terraform 创建 GCP API 密钥吗?

在同一个 TF 脚本中使用多个 Terraform 提供程序(GCP 和 Kubernetes)创建资源