我们目前正在使用 Ubuntu Server 18.04 LTS 作为自托管 Azure VM,并正在考虑将其升级到 Ubuntu Server 20.04 LTS。我们使用 URNCanonical:UbuntuServer:18.04-LTS:latest
创建了现有的自托管 Azure VM。
此网页链接(https://az-vm-image.info/?cmd=--all+--publisher+Canonicalaz vm image list --output table
) 列出了该命令将从 Azure CLI 列出的各种 Azure VM 映像的 URN 。
如果你折叠该网页的群组,我希望Canonical - Ubuntu服务器 - 20.04-LTS或者Canonical:UbuntuServer:20.04-LTS:<version>
位于该列表的末尾,但事实并非如此。我知道 Azure VM 映像存在,因为市场上有它:https://azuremarketplace.microsoft.com/en-us/marketplace/apps/canonical.0001-com-ubuntu-server-focal?tab=Overview
我是这个领域的新手,所以我不确定如何从该市场链接中获取 URN,或者上面的 az-vm-image 链接中的正确 URN 哪个是用于我们自托管 Azure VM 的 UbuntuServer 20.04 LTS。
作为参考,我正在使用 Azure CLI 命令az vm create .. --image Canonical:UbuntuServer:18.04-LTS:latest ..
创建我们的虚拟机。我试过了Canonical:UbuntuServer:20.04-LTS:latest
,但虚拟机映像不存在。
答案1
找到一个 GitHub 问题,它告诉我们哪个是正确的 URN:https://github.com/Azure/azure-cli/issues/13320#issuecomment-649867249
看起来 20.04 的报价和 SKU 格式已更改,这就是无法找到它的原因。Ubuntu Server 20.04-LTS 的正确 URN 是Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest
。
答案2
在打包机使用 :
variable "azure_subscription_id" {
type = string
default = ""
}
variable "region" {
default = "Australia East"
}
variable "resource_group_name" {
default = "my-images"
}
locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") }
source "azure-arm" "azure-ubuntu" {
# Ubuntu Base Image
image_publisher = "Canonical"
image_offer = "0001-com-ubuntu-server-focal-daily"
image_sku = "20_04-daily-lts-gen2"
# Azure Details
vm_size = "Standard_B1ls"
subscription_id = var.azure_subscription_id
location = var.region
os_type = "Linux"
# Managed Image Details
managed_image_name = "my-image-name-fixme-${local.timestamp}-{{uuid}}"
managed_image_resource_group_name = var.resource_group_name
}
build {
sources = ["source.azure-arm.azure-ubuntu"]
# TODO: Add all your apt-get and shell provisioners and co ...
}
运行:packer build -var 'azure_subscription_id=FIXME' -var "region=australiasoutheast" -var "resource_group_name=FIXME"