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 中获得该选项。在我们的项目中,我们使用 bash
和 az-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>
为了测试它,我修改了我的分销商设置:
$distributorObjectParameters = @{
SharedImageDistributor = $true
GalleryImageId = "$($galleryImageId)/versions/0.0.1"
ReplicationRegion = $Location
ArtifactTag = $tags
RunOutputName = $imageTemplateName
ExcludeFromLatest = $false
}
$distributorObject = New-AzImageBuilderDistributorObject @distributorObjectParameter
得到如下结果:
看来默认的三部分版本是某种时间戳。我希望能够在生成图像版本时指定版本号。我在故障排除指南中只看到提到版本格式,但没有具体说明如何设置它。
例如 镜像版本名称应遵循 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 中获得该选项。在我们的项目中,我们使用 bash
和 az-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>
为了测试它,我修改了我的分销商设置:
$distributorObjectParameters = @{
SharedImageDistributor = $true
GalleryImageId = "$($galleryImageId)/versions/0.0.1"
ReplicationRegion = $Location
ArtifactTag = $tags
RunOutputName = $imageTemplateName
ExcludeFromLatest = $false
}
$distributorObject = New-AzImageBuilderDistributorObject @distributorObjectParameter
得到如下结果: