Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri
Bu makalede, sanal ağdaki mevcut kaynaklara erişimi olan temel, özelleştirilmiş bir Linux görüntüsü oluşturmak için Azure VM Görüntü Oluşturucusu'nun nasıl kullanılacağı gösterilmektedir. Oluşturduğunuz derleme sanal makinesi (VM), aboneliğinizde belirttiğiniz yeni veya mevcut bir sanal ağa dağıtılır. Mevcut bir Azure sanal ağını kullandığınızda, VM Görüntü Oluşturucusu genel ağ bağlantısı gerektirmez.
Önkoşullar
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Değişkenleri ve izinleri ayarlama
Bu görev için, bazı bilgi parçalarını art arda kullanırsınız. Bu bilgileri depolamak için bazı değişkenler oluşturun.
# set your environment variables here!!!!
# destination image resource group
imageResourceGroup=aibImageRG01
# location (see possible locations in main docs)
location=WestUS2
# your subscription
# get the current subID : 'az account show | grep id'
subscriptionID=$(az account show --query id --output tsv)
# name of the image to be created
imageName=aibCustomLinuxImg01
# image distribution metadata reference name
runOutputName=aibCustLinManImg01ro
# VNET properties (update to match your existing VNET, or leave as-is for demo)
# VNET name
vnetName=myexistingvnet01
# subnet name
subnetName=subnet01
# VNET resource group name
# NOTE! The VNET must always be in the same region as the Azure Image Builder service region.
vnetRgName=existingVnetRG
# Existing Subnet NSG Name or the demo will create it
nsgName=aibdemoNsg
Kaynak grubunu oluşturun.
az group create -n $imageResourceGroup -l $location
Ağı yapılandırma
Mevcut bir sanal ağınız, alt ağınız veya ağ güvenlik grubunuz (NSG) yoksa, oluşturmak için aşağıdaki betiği kullanın.
# Create a resource group
az group create -n $vnetRgName -l $location
# Create VNET
az network vnet create \
--resource-group $vnetRgName \
--name $vnetName --address-prefix 10.0.0.0/16 \
--subnet-name $subnetName --subnet-prefix 10.0.0.0/24
# Create base NSG to simulate an existing NSG
az network nsg create -g $vnetRgName -n $nsgName
az network vnet subnet update \
--resource-group $vnetRgName \
--vnet-name $vnetName \
--name $subnetName \
--network-security-group $nsgName
# NOTE! The virtual network must always be in the same region as the Azure Image Builder service region.
NSG kuralı ekleme
Bu kural, VM Görüntü Oluşturucusu yük dengeleyicisinden ara sunucu VM'sine bağlantı sağlar. Bağlantı noktası 60001 Linux içindir ve 60000 numaralı bağlantı noktası Windows içindir. Proxy VM, Linux için 22 numaralı bağlantı noktasını veya Windows için 5986 numaralı bağlantı noktasını kullanarak derleme VM'sine bağlanır.
az network nsg rule create \
--resource-group $vnetRgName \
--nsg-name $nsgName \
-n AzureImageBuilderNsgRule \
--priority 400 \
--source-address-prefixes AzureLoadBalancer \
--destination-address-prefixes VirtualNetwork \
--destination-port-ranges 60000-60001 --direction inbound \
--access Allow --protocol Tcp \
--description "Allow Image Builder Private Link Access to Proxy VM"
Alt ağda özel hizmet ilkesini devre dışı bırakma
Şunu yapabilirsiniz:
az network vnet subnet update \
--name $subnetName \
--resource-group $vnetRgName \
--vnet-name $vnetName \
--private-link-service-network-policies Disabled
Daha fazla bilgi için bkz . Azure VM Görüntü Oluşturucusu ağ seçenekleri.
Örnek şablonu değiştirme ve rol oluşturma
Ağı yapılandırdıktan sonra, örnek şablonu değiştirebilir ve bir rol oluşturabilirsiniz. Şunu yapabilirsiniz:
# download the example and configure it with your vars
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/1a_Creating_a_Custom_Linux_Image_on_Existing_VNET/existingVNETLinux.json -o existingVNETLinux.json
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleNetworking.json -o aibRoleNetworking.json
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" existingVNETLinux.json
sed -i -e "s/<rgName>/$imageResourceGroup/g" existingVNETLinux.json
sed -i -e "s/<region>/$location/g" existingVNETLinux.json
sed -i -e "s/<imageName>/$imageName/g" existingVNETLinux.json
sed -i -e "s/<runOutputName>/$runOutputName/g" existingVNETLinux.json
sed -i -e "s/<vnetName>/$vnetName/g" existingVNETLinux.json
sed -i -e "s/<subnetName>/$subnetName/g" existingVNETLinux.json
sed -i -e "s/<vnetRgName>/$vnetRgName/g" existingVNETLinux.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleImageCreation.json
sed -i -e "s/<rgName>/$imageResourceGroup/g" aibRoleImageCreation.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleNetworking.json
sed -i -e "s/<vnetRgName>/$vnetRgName/g" aibRoleNetworking.json
Kaynak grubunda izinleri ayarlama
VM Görüntü Oluşturucusu, görüntüyü Azure İşlem Galerisi'ne eklemek için sağlanan kullanıcı kimliğini kullanır. Bu örnekte, görüntüyü galeriye dağıtabilen bir Azure rol tanımı oluşturacaksınız. Rol tanımı daha sonra kullanıcı kimliğine atanır.
# create user assigned identity for image builder
identityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $identityName
# get identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)
# get the user identity URI, needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# update the template
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" existingVNETLinux.json
# make role name unique, to avoid clashes in the same Azure Active Directory domain
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')
netRoleDefName="Azure Image Builder Network Def"$(date +'%s')
# update the definitions
sed -i -e "s/Azure Image Builder Service Image Creation Role/$imageRoleDefName/g" aibRoleImageCreation.json
sed -i -e "s/Azure Image Builder Service Networking Role/$netRoleDefName/g" aibRoleNetworking.json
VM Image Builder'a daha düşük ayrıntı düzeyi ve artırılmış ayrıcalık vermek yerine iki rol oluşturabilirsiniz. Rollerden biri oluşturucuya görüntü oluşturma izni, diğeri ise derleme VM'sini ve yük dengeleyiciyi sanal ağınıza bağlamasına olanak tanır.
# create role definitions
az role definition create --role-definition ./aibRoleImageCreation.json
az role definition create --role-definition ./aibRoleNetworking.json
# grant role definition to the user assigned identity
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
az role assignment create \
--assignee $imgBuilderCliId \
--role "$netRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$vnetRgName
Daha fazla bilgi için bkz . Azure CLI kullanarak Azure VM Görüntü Oluşturucusu izinlerini yapılandırma veya PowerShell kullanarak Azure VM Görüntü Oluşturucusu izinlerini yapılandırma.
Görüntü oluşturma
Görüntü yapılandırmasını VM Görüntü Oluşturucusu'na gönderin.
az resource create \
--resource-group $imageResourceGroup \
--properties @existingVNETLinux.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n existingVNETLinuxTemplate01
# Wait approximately 1-3 mins (validation, permissions etc.)
Görüntü derlemesini başlatın.
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n existingVNETLinuxTemplate01 \
--action Run
# Wait approximately 15 mins
Görüntüyü oluşturmak ve her iki bölgeye çoğaltmak biraz zaman alabilir. VM oluşturmaya geçmeden önce bu bölümün tamamlanmasını bekleyin.
VM oluşturma
VM Görüntü Oluşturucusu tarafından oluşturulan görüntü sürümünden bir VM oluşturun.
az vm create \
--resource-group $imageResourceGroup \
--name aibImgVm0001 \
--admin-username aibuser \
--image $imageName \
--location $location \
--generate-ssh-keys
VM'ye girmek için Secure Shell (SSH) kullanın.
ssh aibuser@<publicIpAddress>
SSH bağlantınız kurulur kurulmaz görüntünün Günün İletisi ile özelleştirildiğini görmeniz gerekir!
*******************************************************
** This VM was built from the: **
** !! AZURE VM IMAGE BUILDER Custom Image !! **
** You have just been Customized :-) **
*******************************************************
Kaynakları temizleme
Aynı görüntünün yeni bir sürümünü oluşturmak için görüntü sürümünü yeniden etkinleştirmek istiyorsanız, sonraki adımları atlayın ve Başka bir görüntü sürümü oluşturmak için Azure VM Görüntü Oluşturucusu'nu kullanma bölümüne gidin.
Aşağıdakiler, oluşturulan görüntüyü ve diğer tüm kaynak dosyalarını siler. Kaynakları silmeden önce bu dağıtımı tamamladığınızdan emin olun.
Galeri kaynaklarını sildiğinizde, bunları oluşturmak için kullanılan görüntü tanımını silebilmek için önce tüm görüntü sürümlerini silmeniz gerekir. Bir galeriyi silmek için önce galerideki tüm resim tanımlarını silmiş olmanız gerekir.
VM Görüntü Oluşturucusu şablonunu silin:
az resource delete \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n existingVNETLinuxTemplate01
İzin atamalarını, rolleri ve kimliği silin:
az role assignment delete \
--assignee $imgBuilderCliId \
--role $imageRoleDefName \
--scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
az role assignment delete \
--assignee $imgBuilderCliId \
--role $netRoleDefName \
--scope /subscriptions/$subscriptionID/resourceGroups/$vnetRgName
az role definition delete --name "$imageRoleDefName"
az role definition delete --name "$netRoleDefName"
az identity delete --ids $imgBuilderId
Kaynak grubunu silin:
az group delete -n $imageResourceGroup
Bu hızlı başlangıç için bir sanal ağ oluşturduysanız, artık kullanılmıyorsa sanal ağı silebilirsiniz.