Azure Image Builder - 如何指定 VM 映像版本

Azure Image Builder - How to Specify the VM Image Version

看来默认的三部分版本是某种时间戳。我希望能够在生成图像版本时指定版本号。我在故障排除指南中只看到提到版本格式,但没有具体说明如何设置它。

例如 镜像版本名称应遵循 Major(int).Minor(int).Patch(int) 格式,例如:1.0.0、2018.12.1 等

我设置分发器:

  $distributorObjectParameters = @{
    SharedImageDistributor = $true
    GalleryImageId         = $galleryImageId
    ReplicationRegion      = $Location
    ArtifactTag            = $tags
    RunOutputName          = $imageTemplateName
    ExcludeFromLatest      = $false
  }
  $distributorObject = New-AzImageBuilderDistributorObject @distributorObjectParameters

然后创建模板:

  $templateParameters = @{
    ImageTemplateName      = $imageTemplateName
    ResourceGroupName      = $imageResourceGroup
    Source                 = $sourceObject
    Distribute             = $distributorObject
    Customize              = $customizerCollection
    Location               = 'East US 2'
    UserAssignedIdentityId = $identityResourceId
    BuildTimeoutInMinute   = $buildTimeoutInMinute
  }
  New-AzImageBuilderTemplate @templateParameters

设置版本值时我是否忽略了一个参数?

我认为您不能从 Azure 中获得该选项。在我们的项目中,我们使用 bashaz-cli.

自行计算版本
IMAGE_VERSIONS=$(az sig image-version list --gallery-image-definition "${image_definition_name}" --gallery-name "${image_gallery_name}" -g "${ARM_RESOURCE_GROUP}")
if [[ "${IMAGE_VERSIONS}" == "[]" ]]; then
    DESTINATION_IMAGE_VERSION="1.0.0"
else
    DESTINATION_IMAGE_VERSION=$(echo "${IMAGE_VERSIONS}" | grep -i "versions/" | tail -n 1 | rev | cut -d '/' -f1 | cut -d '"' -f2 | rev)
fi
DESTINATION_IMAGE_VERSION=$(echo "${DESTINATION_IMAGE_VERSION}" | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}')
echo $DESTINATION_IMAGE_VERSION

我们将初始版本实例化为 1.0.0(第一次)&一旦设置,我们将在下一次构建迭代中递增..

Microsoft 的某人在 GitHub 上提供了以下答案。 https://github.com/MicrosoftDocs/azure-docs/issues/89180#issuecomment-1063218290

分发服务器的名为galleryImageId的参数设置版本。参数可以指定为以下两种格式之一:

  • 自动版本控制 - 格式为: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>

  • 显式版本控制 - 格式为: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/galleries/<sharedImageGalleryName>/images/<imageGalleryName>/versions/<version - for example: 1.1.1>

供参考: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/image-builder-json#distribute-sharedimage

为了测试它,我修改了我的分销商设置:

  $distributorObjectParameters = @{
    SharedImageDistributor = $true
    GalleryImageId         = "$($galleryImageId)/versions/0.0.1"
    ReplicationRegion      = $Location
    ArtifactTag            = $tags
    RunOutputName          = $imageTemplateName
    ExcludeFromLatest      = $false
  }
  $distributorObject = New-AzImageBuilderDistributorObject @distributorObjectParameter

得到如下结果: