Azure CLI kullanarak bir Linux görüntüsü oluşturma ve bunu Azure İşlem Galerisi'ne dağıtma
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri
Bu makalede, Azure VM Görüntü Oluşturucusu'nu ve Azure CLI'yı kullanarak Azure İşlem Galerisi'nde (eski adıyla Paylaşılan Görüntü Galerisi) görüntü sürümü oluşturmayı ve ardından görüntüyü genel olarak dağıtmayı öğreneceksiniz. Azure PowerShell kullanarak da görüntü sürümü oluşturabilirsiniz.
Bu makalede, görüntüyü yapılandırmak için örnek bir JSON şablonu kullanılmaktadır. JSON dosyası helloImageTemplateforSIG.json.
Görüntüyü bir Azure İşlem Galerisi'ne dağıtmak için şablon, şablonun bölümü için distribute
sharedImage değerini kullanır.
Sağlayıcıları kaydetme
VM Görüntü Oluşturucusu'nu kullanmak için sağlayıcıları kaydetmeniz gerekir. Aşağıdaki komutları çalıştırarak kaydınızı denetleyin:
az provider show -n Microsoft.VirtualMachineImages -o json | grep registrationState
az provider show -n Microsoft.KeyVault -o json | grep registrationState
az provider show -n Microsoft.Compute -o json | grep registrationState
az provider show -n Microsoft.Storage -o json | grep registrationState
az provider show -n Microsoft.Network -o json | 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 ve izinleri ayarlama
Bazı bilgileri art arda kullanacağınız için, bu bilgileri depolamak için bazı değişkenler oluşturun.
VM Görüntü Oluşturucusu, özel görüntülerin yalnızca kaynak tarafından yönetilen görüntüyle aynı kaynak grubunda oluşturulmasını destekler. Aşağıdaki örnekte, kaynak grubu adını kaynak tarafından yönetilen görüntünüzle aynı kaynak grubu olacak şekilde güncelleştirin.
# Resource group name - ibLinuxGalleryRG in this example
sigResourceGroup=ibLinuxGalleryRG
# Datacenter location - West US 2 in this example
location=westus2
# Additional region to replicate the image to - East US in this example
additionalregion=eastus
# Name of the Azure Compute Gallery - myGallery in this example
sigName=myIbGallery
# Name of the image definition to be created - myImageDef in this example
imageDefName=myIbImageDef
# Reference name in the image distribution metadata
runOutputName=aibLinuxSIG
Abonelik kimliğiniz için bir değişken oluşturun:
subscriptionID=$(az account show --query id --output tsv)
Kaynak grubunu oluşturun:
az group create -n $sigResourceGroup -l $location
Kullanıcı tarafından atanan bir kimlik oluşturma ve kaynak grubunda izinleri ayarlama
VM Görüntü Oluşturucusu, sağlanan kullanıcı kimliğini kullanarak görüntüyü bir Azure İşlem Galerisi'ne ekler. Bu örnekte, görüntüyü dağıtmak için belirli eylemleri içeren 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 VM Image Builder to access the storage account where the script is stored
identityName=aibBuiUserId$(date +'%s')
az identity create -g $sigResourceGroup -n $identityName
# Get the identity ID
imgBuilderCliId=$(az identity show -g $sigResourceGroup -n $identityName --query clientId -o tsv)
# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$sigResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# Download an Azure role-definition template, and update the template with the parameters that were specified earlier
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>/$sigResourceGroup/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/$sigResourceGroup
Görüntü tanımı ve galerisi oluşturma
VM Görüntü Oluşturucusu'nu Azure İşlem Galerisi ile kullanmak için mevcut bir galeriye ve görüntü tanımına sahip olmanız gerekir. VM Görüntü Oluşturucusu galeriyi ve görüntü tanımını sizin için oluşturmaz.
Kullanılacak bir galeriniz ve görüntü tanımınız yoksa, bunları oluşturarak başlayın.
İlk olarak bir galeri oluşturun:
az sig create \
-g $sigResourceGroup \
--gallery-name $sigName
Ardından bir görüntü tanımı oluşturun:
az sig image-definition create \
-g $sigResourceGroup \
--gallery-name $sigName \
--gallery-image-definition $imageDefName \
--publisher myIbPublisher \
--offer myOffer \
--sku 20_04-lts-gen2 \
--os-type Linux \
--hyper-v-generation V2 \
--features SecurityType=TrustedLaunchSupported
JSON dosyasını indirme ve yapılandırma
JSON şablonunu indirin ve değişkenlerinizle yapılandırın:
curl https://raw.githubusercontent.com/Azure/azvmimagebuilder/master/quickquickstarts/1_Creating_a_Custom_Linux_Shared_Image_Gallery_Image/helloImageTemplateforSIG.json -o helloImageTemplateforSIG.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIG.json
sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIG.json
sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIG.json
sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIG.json
sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIG.json
sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIG.json
sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIG.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIG.json
Görüntü sürümünü oluşturma
Bu bölümde galeride görüntü sürümünü oluşturacaksınız.
Görüntü yapılandırmasını Azure VM Görüntü Oluşturucusu hizmetine gönderin:
az resource create \
--resource-group $sigResourceGroup \
--properties @helloImageTemplateforSIG.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01
Görüntü derlemesini başlatın:
az resource invoke-action \
--resource-group $sigResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01 \
--action Run
Görüntüyü oluşturmak ve her iki bölgeye çoğaltmak birkaç dakika sürebilir. VM oluşturmaya geçmeden önce bu bölümün tamamlanmasını bekleyin.
Sanal makineyi oluşturma
VM Görüntü Oluşturucusu tarafından oluşturulan görüntü sürümünden VM'yi oluşturun.
az vm create \
--resource-group $sigResourceGroup \
--name myAibGalleryVM \
--admin-username aibuser \
--location $location \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--security-type TrustedLaunch \
--generate-ssh-keys
Secure Shell (SSH) aracılığıyla VM'ye bağlanı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ınızı temizleme
Not
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ştirmeyi denemek istiyorsanız, burada özetlenen adımı atlayın ve VM Görüntü Oluşturucusu'nu kullanarak başka bir görüntü sürümü oluşturun.
Bu makaledeki süreci izlediğinizde oluşturulan kaynaklara artık ihtiyacınız yoksa, aşağıdakileri yaparak bunları silebilirsiniz.
Bu işlem hem oluşturduğunuz görüntüyü hem de diğer tüm kaynak dosyalarını siler. Kaynakları silmeden önce bu dağıtımı tamamladığınızdan emin olun.
Galeri kaynaklarını silerken, bunları oluşturmak için kullanılan görüntü tanımını silebilmeniz için önce tüm görüntü sürümlerini silmeniz gerekir. Bir galeriyi silmek için önce galerideki tüm görüntü tanımlarını silmiş olmanız gerekir.
VM Görüntü Oluşturucusu şablonunu silin.
az resource delete \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIG01
İzin atamalarını, rolleri ve kimliği silin.
az role assignment delete \ --assignee $imgBuilderCliId \ --role "$imageRoleDefName" \ --scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup az role definition delete --name "$imageRoleDefName" az identity delete --ids $imgBuilderId
VM Görüntü Oluşturucusu tarafından oluşturulan görüntü sürümünü alın (her zaman ile
0.
başlar) ve ardından silin.sigDefImgVersion=$(az sig image-version list \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID --query [].'name' -o json | grep 0. | tr -d '"') az sig image-version delete \ -g $sigResourceGroup \ --gallery-image-version $sigDefImgVersion \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID
Görüntü tanımını silin.
az sig image-definition delete \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID
Galeriyi silin.
az sig delete -r $sigName -g $sigResourceGroup
Kaynak grubunu silin.
az group delete -n $sigResourceGroup -y
Sonraki adımlar
Azure İşlem Galerisi hakkında daha fazla bilgi edinin.