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: Menentukan vmSize 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:

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.

  1. Hapus templat VM Image Builder tersebut.

    az resource delete \
        --resource-group $imageResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateWin01
    
  2. 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
    
  3. 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.