Aracılığıyla paylaş


Azure VM Görüntü Oluşturucusu'nu kullanarak Windows VM oluşturma

Şunlar için geçerlidir: ✔️ Windows VM'leri

Bu makalede, Azure VM Görüntü Oluşturucusu'nu kullanarak özelleştirilmiş bir Windows görüntüsü oluşturmayı öğreneceksiniz. Bu makaledeki örnek, görüntüyü özelleştirmek için özelleştiricileri kullanır:

  • PowerShell (ScriptUri): Bir PowerShell betiğini indirin ve çalıştırın.
  • Windows Yeniden Başlatma: VM'yi yeniden başlatır.
  • PowerShell (satır içi): Belirli bir komutu çalıştırır. Bu örnekte, kullanarak mkdir c:\\buildActionsVM'de bir dizin oluşturur.
  • Dosya: GitHub'dan VM'ye bir dosya kopyalar. Bu örnek, index.md vm'ye c:\buildArtifacts\index.html kopyalar.
  • buildTimeoutInMinutes: Derleme süresini dakika cinsinden belirtir. Varsayılan değer 240 dakikadır ve daha uzun süre çalışan derlemelere izin vermek için artırabilirsiniz. İzin verilen en düşük değer 6 dakikadır. 6 dakikadan kısa değerler hatalara neden olur.
  • vmProfile: ve vmSize ağ özelliklerini belirtir.
  • osDiskSizeGB: Görüntünün boyutunu artırmak için kullanılabilir.
  • identity. VM Görüntü Oluşturucusu'na derleme sırasında kullanılacak bir kimlik sağlar.

Görüntüyü yapılandırmak için aşağıdaki örnek JSON şablonunu kullanın: helloImageTemplateWin.json.

Not

Windows kullanıcıları Bash kullanarak Azure Cloud Shell'de aşağıdaki Azure CLI örneklerini çalıştırabilir.

Sağlayıcıları kaydetme

VM Görüntü Oluşturucusu'nu kullanmak için özelliği kaydetmeniz gerekir. Aşağıdaki komutları çalıştırarak kaydınızı denetleyin:

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

Çıkışta kayıtlı ifadesi yoksa aşağıdaki komutları çalıştırın:

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

Değişkenleri ayarla

Bazı bilgileri art arda kullanacağınız için, bu bilgileri depolamak için bazı değişkenler oluşturun:

# 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'

Abonelik kimliğiniz için bir değişken oluşturun:

subscriptionID=$(az account show --query id --output tsv)

Bir kaynak grubu oluştur

Görüntü yapılandırma şablonu yapıtını ve görüntüyü depolamak için aşağıdaki kaynak grubunu kullanın:

az group create -n $imageResourceGroup -l $location

Kullanıcı tarafından atanan bir kimlik oluşturma ve kaynak grubunda izinleri ayarlama

VM Görüntü Oluşturucusu, görüntüyü kaynak grubuna eklemek için sağlanan kullanıcı kimliğini kullanır. Bu örnekte, görüntüyü dağıtmak için belirli izinlere sahip bir Azure rol tanımı oluşturacaksınız. Rol tanımı daha sonra kullanıcı kimliğine atanır.

Kullanıcı tarafından atanan yönetilen kimlik oluşturma ve izinler verme

VM Image Builder'ın betiğin depolandığı depolama hesabına erişebilmesi için kullanıcı tarafından atanan bir kimlik oluşturun.

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

Görüntü yapılandırma şablonunu indirme

Denemeniz için parametreli görüntü yapılandırma şablonu oluşturduk. Örnek JSON dosyasını indirin ve daha önce ayarladığınız değişkenlerle yapılandırın.

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

Gibi vibir metin düzenleyicisi kullanarak terminalde bu örneği değiştirebilirsiniz.

vi helloImageTemplateWin.json

Not

Kaynak görüntü için her zaman bir sürüm belirtin. Sürüm olarak belirtemezsiniz latest .

Görüntünün dağıtıldığı kaynak grubunu ekler veya değiştirirseniz, izinlerin kaynak grubunda ayarlandığından emin olun.

Görüntü oluşturma

Aşağıdaki komutları çalıştırarak görüntü yapılandırmasını VM Görüntü Oluşturucusu hizmetine gönderin:

az resource create \
    --resource-group $imageResourceGroup \
    --properties @helloImageTemplateWin.json \
    --is-full-object \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateWin01

İşiniz bittiğinde konsola bir başarı iletisi döndürülür ve içinde $imageResourceGroupbir VM Image Builder yapılandırma şablonu oluşturulur. Bu kaynağı kaynak grubunda görüntülemek için Azure portalına gidin ve Gizli türleri göster'i etkinleştirin.

Arka planda, VM Görüntü Oluşturucusu aboneliğinizde bir hazırlama kaynak grubu da oluşturur. Bu kaynak grubu, görüntüyü şu biçimde oluşturmak için kullanılır: IT_<DestinationResourceGroup>_<TemplateName>.

Not

Hazırlama kaynak grubunu doğrudan silmeyin. İlk olarak, hazırlama kaynak grubunun silinmesine neden olan görüntü şablonu yapıtını silin.

Görüntü yapılandırma şablonunu gönderdiğinizde hizmet bir hata bildiriyorsa aşağıdakileri yapın:

az resource delete \
    --resource-group $imageResourceGroup \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateWin01

Görüntü derlemesini başlatma

az resource invoke-action komutunu kullanarak görüntü oluşturma işlemini başlatın.

az resource invoke-action \
     --resource-group $imageResourceGroup \
     --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
     -n helloImageTemplateWin01 \
     --action Run

Derleme tamamlanana kadar bekleyin.

Herhangi bir hatayla karşılaşırsanız bkz . Azure VM Görüntü Oluşturucusu hizmetinde sorun giderme.

Sanal makineyi oluşturma

Oluşturduğunuz görüntüyü kullanarak VM'yi oluşturun. Aşağıdaki kodda, parolayı VM'deki aibuser için kendi parolanızla değiştirin<.>

az vm create \
  --resource-group $imageResourceGroup \
  --name aibImgWinVm00 \
  --admin-username aibuser \
  --admin-password <password> \
  --image $imageName \
  --location $location

Özelleştirmeyi doğrulama

VM'yi oluştururken ayarladığınız kullanıcı adını ve parolayı kullanarak VM'ye Uzak Masaüstü bağlantısı oluşturun. VM'de bir Komut İstemi penceresi açın ve şunu yazın:

dir c:\

Görüntü özelleştirmesi sırasında aşağıdaki iki dizin oluşturulur:

  • buildActions
  • buildArtifacts

Kaynaklarınızı temizleme

İşiniz bittiğinde, oluşturduğunuz kaynakları silin.

  1. VM Görüntü Oluşturucusu şablonunu silin.

    az resource delete \
        --resource-group $imageResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateWin01
    
  2. Rol atamasını, rol tanımını ve kullanıcı kimliğini silin.

    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. Görüntü kaynak grubunu silin.

    az group delete -n $imageResourceGroup
    

Sonraki adımlar

Bu makalede kullanılan JSON dosyasının bileşenleri hakkında daha fazla bilgi edinmek için bkz . VM Görüntü Oluşturucusu şablon başvurusu.