使用 Azure VM Image Builder,根據現有映像建立新的 Windows VM 映像
適用於:✔️ Windows VM
在本文中,您將了解如何更新 Azure Compute Gallery (先前名為共用映像庫) 中的現有 Windows 映像版本,並將其發佈至資源庫作為新的映像版本。
若要設定映像,您可以使用範例 JSON 範本 helloImageTemplateforSIGfromWinSIG.json。
註冊提供者
若要使用 VM Image Builder,您必須註冊提供者。
檢查您的提供者註冊。 請確定每一個都有傳回 Registered。
az provider show -n Microsoft.VirtualMachineImages | grep registrationState az provider show -n Microsoft.KeyVault | grep registrationState az provider show -n Microsoft.Compute | grep registrationState az provider show -n Microsoft.Storage | grep registrationState az provider show -n Microsoft.Network | grep registrationState az provider show -n Microsoft.ContainerInstance | grep registrationState
如果未傳回 Registered,請執行下列命令來註冊提供者:
az provider register -n Microsoft.VirtualMachineImages az provider register -n Microsoft.Compute az provider register -n Microsoft.KeyVault az provider register -n Microsoft.Storage az provider register -n Microsoft.Network az provider register -n Microsoft.ContainerInstance
設定變數和授權
如果您已透過建立映像並將其發佈到 Azure Compute Gallery建立 Azure Compute Gallery,則表示您已建立一些所需的變數。
注意
VM Image Builder 僅支援在與來源受控映像相同的資源群組中建立自訂映像。 在下列範例中,將資源群組名稱 ibsigRG 更新為來源管理映射所在的資源群組名稱。
如果您尚未建立變數,請執行下列命令:
# Resource group name - we are using ibsigRG in this example sigResourceGroup=myIBWinRG # Datacenter location - we are using West US 2 in this example location=westus # Additional region to replicate the image to - we are using East US in this example additionalregion=eastus # name of the Azure Compute Gallery - in this example we are using myGallery sigName=my22stSIG # name of the image definition to be created - in this example we are using myImageDef imageDefName=winSvrimages # image distribution metadata reference name runOutputName=w2019SigRo # User name and password for the VM username="user name for the VM" vmpassword="password for the VM"
為訂閱識別碼建立變數:
subscriptionID=$(az account show --query id --output tsv)
取得您想要更新的映像版本:
sigDefImgVersionId=$(az sig image-version list \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID --query [].'id' -o tsv)
建立使用者指派的身分識別,並在資源群組上設定權限
您已在先前的範例中設定使用者身分識別,因此現在您需要取得資源識別碼,並將其附加至範本。
#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)
如果您已經有 Azure Compute Gallery,但未依照先前的範例加以設定,則需要將資源群組的權限指派給 VM Image Builder,以便允許存取資源庫。 如需詳細資訊,請參閱建立映像並將其發佈到 Azure Compute Gallery。
修改 helloImage 範例
您可以檢閱 helloImageTemplateforSIGfromSIG.json 中即將使用的 JSON 範例。 如需 JSON 檔案的相關資訊,請參閱建立 Azure VM Image Builder 範本。
下載 JSON 範例,請參閱建立使用者指派的身分識別,並在資源群組上設定權限。
使用變數設定 JSON:
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/8_Creating_a_Custom_Win_Shared_Image_Gallery_Image_from_SIG/helloImageTemplateforSIGfromWinSIG.json -o helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s%<sigDefImgVersionId>%$sigDefImgVersionId%g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIGfromWinSIG.json sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIGfromWinSIG.json
建立映像
將映像組態提交至 VM Image Builder 服務:
az resource create \ --resource-group $sigResourceGroup \ --location $location \ --properties @helloImageTemplateforSIGfromWinSIG.json \ --is-full-object \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01
啟動映像組建:
az resource invoke-action \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n imageTemplateforSIGfromWinSIG01 \ --action Run
等待映像建置並複製後,再繼續進行下一個步驟。
建立 VM
執行下列動作以建立 VM:
az vm create \
--resource-group $sigResourceGroup \
--name aibImgWinVm002 \
--admin-username $username \
--admin-password $vmpassword \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--location $location
確認自訂
使用您在建立 VM 時所設定的使用者名稱與密碼,建立與該 VM 的遠端桌面連線。 在 VM 中開啟 [命令提示字元] 視窗,然後執行:
dir c:\
您現在應該會看到兩個目錄:
- buildActions:在第一個映像版本中建立。
- buildActions2:當您更新第一個映像版本以建立第二個映像版本時建立。
下一步
若要深入了解本文中使用的 JSON 檔案,請參閱建立 Azure VM Image Builder 範本。