如何设置虚拟机镜像详细信息,例如发行商、报价、SKU 和版本

问题描述 投票:0回答:2

我有一个 Terraform 脚本,它基于 Azure 市场中的此映像在 Azure 上创建虚拟机: https://azuremarketplace.microsoft.com/en-us/marketplace/apps/gitlab.gitlab-ce

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

  • 出版商
  • 优惠
  • sku
  • 版本

这是 Terraform 脚本的片段

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
一段时间后,会出现错误,并且未创建虚拟机资源(尽管创建了所有其他资源,例如网络资源)。

这与 Azure ARM 模板的应用方式类似:

"imageReference": {
    "publisher": "[variables('pubName')]",
    "offer": "[variables('offerName')]",
    "sku" : "[parameters('skuName')]",
    "version":"latest"
},

我有一些虚拟机已启动并正在运行,并且具有我在互联网上找到的类似 Terraform 配置(请参阅下面的 Ubuntu 示例),但是将信息从 Azure Marketplace 网页转换为脚本的规则是什么?

  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
azure gitlab-ci azure-virtual-machine azure-rm-template terraform-provider-azure
2个回答
2
投票

可能有更有效的方法来执行此操作,但我通常使用 Azure CLI 来获取发布商、报价、SKU 和版本。首先,如果您执行以下操作:

az 虚拟机镜像列表 --offer GitLab -o table --all

您将收到包含报价、发布商、SKU、URN 和版本的列表。在你的情况下,gitlab-ce 应该是这样的:

  • 发布者:gitlab
  • 提供:gitlab-ce
  • SKU:gitlab-ce
  • 版本:1.0.4

我很确定 azurerm 提供商只是使用这些值调用 ARM,因此它应该与您从 CLI 获得的值相匹配,尽管如果我弄错了,我当然可以纠正这一点。

您还需要包含一个计划块。可以通过 CLI 检索详细信息,如下所示:

az 虚拟机图像显示 --location westus --urn gitlab:gitlab-ce:gitlab-ce:1.0.4 -o json

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

plan {
  name = "gitlab-ce" 
  publisher = "gitlab"
  product = "gitlab-ce"
}

0
投票

如果您使用的是 Azure Powershell,请使用:

1.查找
publishername
区域:

$locName = "westeurope"
Get-AzVMImagePublisher -Location $locName | Select PublisherName | findstr -i "gitlab"

gitlabinc1586447921813
gitlabinc1659373855767
gitlab

2.按发布者查找
imageoffer

$publisherName = "<publisher_name>"
Get-AzVMImageOffer -Location $locName  -PublisherName $publisherName 

3.查找
skuname
获取优惠:

$offer = "<offer_name>"
Get-AzVMImageSku  -Location $locName -PublisherName $publisherName -Offer $offer 

4.找到 SKU 的
version

$sku = "<sku_name>"
Get-AzVMImage -Location $locName -PublisherName $publisherName -Offer $offer -Skus $sku
© www.soinside.com 2019 - 2024. All rights reserved.