Membuat mesin virtual Windows menggunakan Azure VM Image Builder
Berlaku untuk:✔️ ️ VM Windows
Dalam artikel ini, Anda mempelajari cara membuat gambar Windows yang dikustomisasi menggunakan Azure VM Image Builder. Contoh dalam artikel ini menggunakan penyesuai untuk menyesuaikan gambar:
- PowerShell (ScriptUri): Unduh dan jalankan skrip PowerShell.
- Windows Restart: Hidupkan ulang mesin virtual.
- PowerShell (sebaris): Menjalankan perintah tertentu. Dalam contoh ini, PowerShell membuat direktori pada mesin virtual menggunakan
mkdir c:\\buildActions
. - File: Menyalin file dari GitHub ke mesin virtual. Contoh ini menyalin index.md ke
c:\buildArtifacts\index.html
pada VM. buildTimeoutInMinutes
: Menentukan waktu build, dalam satuan menit. Defaultnya adalah 240 menit, yang dapat Anda tingkatkan untuk memungkinkan build berjalan lebih lama. Nilai minimum yang diizinkan adalah selama 6 menit. Nilai yang lebih pendek dari 6 menit akan menyebabkan kesalahan.vmProfile
: MenentukanvmSize
dan properti jaringan.osDiskSizeGB
: Dapat digunakan untuk meningkatkan ukuran gambar.identity
. Menyediakan identitas bagi VM Image Builder untuk digunakan selama build.
Gunakan contoh templat JSON berikut untuk mengonfigurasi gambar: helloImageTemplateWin.json.
Catatan
Pengguna Windows dapat menjalankan contoh Azure CLI berikut pada Azure Cloud Shell menggunakan Bash.
Mendaftarkan penyedia
Untuk menggunakan VM Image Builder, Anda perlu mendaftarkan fitur tersebut. Periksa pendaftaran Anda dengan menjalankan perintah berikut:
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 -o json | grep registrationState
Jika tidak dinyatakan terdaftar, jalankan perintah berikut:
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
Mengatur variabel
Karena Anda akan menggunakan beberapa informasi berulang kali, buat beberapa variabel untuk menyimpan informasi tersebut:
# Resource group name - we're using myImageBuilderRG in this example
imageResourceGroup='myWinImgBuilderRG'
# Region location
location='WestUS2'
# Run output name
runOutputName='aibWindows'
# The name of the image to be created
imageName='aibWinImage'
Buat variabel untuk ID langganan Anda:
subscriptionID=$(az account show --query id --output tsv)
Membuat grup sumber daya
Untuk menyimpan artefak templat konfigurasi gambar dan gambar, gunakan grup sumber daya ini:
az group create -n $imageResourceGroup -l $location
Membuat identitas yang ditetapkan pengguna dan mengatur izin pada grup sumber daya
VM Image Builder menggunakan identitas pengguna yang disediakan untuk memasukkan gambar ke dalam grup sumber daya. Dalam contoh ini, Anda membuat definisi peran Azure dengan izin tertentu untuk mendistribusikan gambar. Definisi peran kemudian akan ditetapkan ke identitas pengguna.
Membuat identitas terkelola yang ditetapkan pengguna dan memberikan izin
Buat satu identitas yang ditetapkan pengguna sehingga VM Image Builder dapat mengakses akun penyimpanan tempat skrip disimpan.
identityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $identityName
# Get the identity ID
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)
# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# Download the preconfigured role definition example
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')
# Update the definition
sed -i -e "s%<subscriptionID>%$subscriptionID%g" aibRoleImageCreation.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" aibRoleImageCreation.json
sed -i -e "s%Azure Image Builder Service Image Creation Role%$imageRoleDefName%g" aibRoleImageCreation.json
# Create role definitions
az role definition create --role-definition ./aibRoleImageCreation.json
# Grant a role definition to the user-assigned identity
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
Unduh templat konfigurasi gambar
Kami telah membuat templat konfigurasi gambar dengan parameter yang dapat Anda coba. Unduh contoh file JSON, dan kemudian konfigurasikan dengan variabel yang Anda tetapkan sebelumnya.
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/0_Creating_a_Custom_Windows_Managed_Image/helloImageTemplateWin.json -o helloImageTemplateWin.json
sed -i -e "s%<subscriptionID>%$subscriptionID%g" helloImageTemplateWin.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" helloImageTemplateWin.json
sed -i -e "s%<region>%$location%g" helloImageTemplateWin.json
sed -i -e "s%<imageName>%$imageName%g" helloImageTemplateWin.json
sed -i -e "s%<runOutputName>%$runOutputName%g" helloImageTemplateWin.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateWin.json
Anda dapat mengubah contoh ini di terminal menggunakan editor teks seperti vi
.
vi helloImageTemplateWin.json
Catatan
Untuk gambar sumber daya, selalu tentukan versi. Anda tidak dapat menentukan latest
sebagai versi.
Jika Anda menambahkan atau mengubah grup sumber daya tempat gambar didistribusikan, Anda harus memastikan bahwa izin diatur pada grup sumber daya.
Membuat gambar
Kirim konfigurasi gambar ke layanan VM Image Builder dengan menjalankan perintah berikut ini:
az resource create \
--resource-group $imageResourceGroup \
--properties @helloImageTemplateWin.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01
Setelah selesai, pesan berhasil akan dikembalikan ke konsol, dan templat konfigurasi VM Image Builder dibuat di $imageResourceGroup
. Untuk melihat sumber daya ini dalam grup sumber daya, buka portal Azure, lalu aktifkan Tampilkan jenis tersembunyi.
Di latar belakang, VM Image Builder juga membuat grup sumber daya penahapan di langganan Anda. Grup sumber daya ini digunakan untuk membangun gambar dalam format berikut: IT_<DestinationResourceGroup>_<TemplateName>
.
Catatan
Jangan hapus grup sumber daya penahapan secara langsung. Pertama-tama, hapus artefak templat gambar, yang akan menyebabkan grup sumber daya penahapan dihapus.
Jika layanan melaporkan kegagalan saat Anda mengirimkan templat konfigurasi gambar, lakukan hal berikut:
- Lihat Memecahkan masalah layanan Azure VM Image Builder.
- Sebelum Anda mencoba mengirimkan kembali templat, hapus templat dengan menjalankan perintah berikut:
az resource delete \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01
Memulai build gambar
Mulai proses pembangunan gambar menggunakan tindakan pemanggilan sumber daya az.
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01 \
--action Run
Tunggu hingga build selesai.
Jika Anda mengalami kesalahan, lihat Memecahkan masalah layanan Azure VM Image Builder.
Buat VM
Buat mesin virtual menggunakan gambar yang Anda bangun. Dalam kode berikut, ganti <kata sandi> dengan kata sandi Anda sendiri untuk aibuser pada mesin virtual.
az vm create \
--resource-group $imageResourceGroup \
--name aibImgWinVm00 \
--admin-username aibuser \
--admin-password <password> \
--image $imageName \
--location $location
Memverifikasi penyesuaian
Buat koneksi Desktop Jauh ke VM dengan menggunakan nama pengguna dan sandi yang Anda tetapkan saat membuat VM. Di mesin virtual, buka jendela Wantian Perintah, lalu ketik:
dir c:\
Kedua direktori berikut dibuat selama kustomisasi gambar:
- buildActions
- buildArtifacts
Bersihkan sumber daya Anda
Setelah Anda selesai, hapus sumber daya yang telah dibuat.
Hapus templat VM Image Builder tersebut.
az resource delete \ --resource-group $imageResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateWin01
Hapus penetapan peran, definisi peran, dan identitas pengguna.
az role assignment delete \ --assignee $imgBuilderCliId \ --role "$imageRoleDefName" \ --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup az role definition delete --name "$imageRoleDefName" az identity delete --ids $imgBuilderId
Menghapus grup sumber daya gambar.
az group delete -n $imageResourceGroup
Langkah berikutnya
Untuk mempelajari selengkapnya tentang komponen file JSON yang digunakan dalam artikel ini, lihat Referensi templat VM Image Builder.