首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何设置虚拟机映像详细信息,例如发布者、优惠、sku和版本

如何设置虚拟机映像详细信息,例如发布者、优惠、sku和版本
EN

Stack Overflow用户
提问于 2019-08-07 21:02:08
回答 1查看 533关注 0票数 1

我有一个基于Azure Marketplace的镜像在Azure上创建虚拟机的Terraform脚本:https://azuremarketplace.microsoft.com/en-us/marketplace/apps/gitlab.gitlab-ce

但我不知道如何确定要放入这些字段中的值:

  • publisher
  • offer
  • sku
  • version

这是Terraform脚本中的代码片段

代码语言:javascript
复制
resource "azurerm_virtual_machine" "gitlab_vm" {
  # ... other configuration

  storage_image_reference {
    publisher = "GitLab"
    offer     = "GitLab Community Edition"
    # sku       = "???"
    version   = "latest"
  }

  # ... other configuration
}

如果我用terraform plan和例如publisher = "GitLabXXX" (不存在的东西)运行前面的细节,那么Terraform不会引发任何错误。当我在一段时间后运行terraform apply时,出现了一个错误,并且没有创建VM资源(尽管创建了所有其他资源,例如网络资源)。

这也适用于Azure ARM模板:

代码语言:javascript
复制
"imageReference": {
    "publisher": "[variables('pubName')]",
    "offer": "[variables('offerName')]",
    "sku" : "[parameters('skuName')]",
    "version":"latest"
},

我有一些虚拟机正在使用我在互联网上找到的类似的Terraform配置运行(参见下面的Ubuntu示例),但是将Azure Marketplace网页中的信息转换为脚本的规则是什么?

代码语言:javascript
复制
  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 02:40:39

可能有一种更有效的方法来做到这一点,但我通常使用Azure CLI来获取发布者、优惠、SKU和版本。首先,如果你这样做:

az vm镜像列表--提供GitLab -o表--所有

您将得到一个包含报价、出版商、SKU、URN和版本的列表。在您的示例中,gitlab-ce应该是这样的:

gitlab

  • Publisher: gitlab

  • Offer: gitlab-ce

  • SKU: gitlab 1.0.4

我非常确定azurerm提供商只是用这些值调用ARM,所以它应该与您从CLI获得的值相匹配,尽管如果我错了,我肯定可以在这一点上得到纠正。

您还需要包含一个plan block。可以通过CLI检索该命令的详细信息,如下所示:

az虚拟机镜像展示--位置westus --urn gitlab:gitlab-ce:gitlab-ce:1.0.4 -o json

所以你的计划块看起来像这样:

代码语言:javascript
复制
plan {
  name = "gitlab-ce" 
  publisher = "gitlab"
  product = "gitlab-ce"
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57395138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档