Linux görüntüsü oluşturma ve azure işlem galerisine dağıtma
Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri
Bu makalede, Azure görüntü oluşturucusunu 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şturma ve ardından görüntüyü genel olarak dağıtma adımları gösterilmektedir. Bunu Azure PowerShell'i kullanarak da yapabilirsiniz.
Görüntüyü yapılandırmak için örnek bir .json şablonu kullanacağız. Kullanmakta olduğumuz .json dosyası şu şekildedir: 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
Azure Image Builder'ı kullanmak için özelliği kaydetmeniz gerekir.
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 | grep registrationState
Kayıtlı demiyorsa, aşağıdakileri ç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ğımız için bu bilgileri depolamak için bazı değişkenler oluşturacağız.
Görüntü Oluşturucusu yalnızca kaynak yönetilen görüntüyle aynı Kaynak Grubunda özel görüntüler oluşturmayı destekler. Bu örnekteki kaynak grubu adını, kaynak yönetilen görüntünüzle aynı kaynak grubu olacak şekilde güncelleştirin.
# Resource group name - we are using ibLinuxGalleryRG in this example
sigResourceGroup=ibLinuxGalleryRG
# Datacenter location - we are using West US 2 in this example
location=westus2
# Additional region to replicate the image to - we are using East US in this example
additionalregion=eastus
# name of the Azure Compute Gallery - in this example we are using myGallery
sigName=myIbGallery
# name of the image definition to be created - in this example we are using myImageDef
imageDefName=myIbImageDef
# image distribution metadata reference name
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
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ğıtma işlemini gerçekleştirmek için ayrıntılı 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 image builder to access the storage account where the script is located
identityName=aibBuiUserId$(date +'%s')
az identity create -g $sigResourceGroup -n $identityName
# get identity id
imgBuilderCliId=$(az identity show -g $sigResourceGroup -n $identityName --query clientId -o tsv)
# get the user identity URI, needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$sigResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# this command will download an Azure role definition template, and update the template with the parameters 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 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
Görüntü Oluşturucusu'nu bir Azure İşlem Galerisi ile kullanmak için mevcut bir galeriye ve görüntü tanımına sahip olmanız gerekir. 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 18.04-LTS \
--os-type Linux
.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
Sonraki bölümde galeride görüntü sürümü oluşturulacaktır.
Görüntü yapılandırmasını Azure Image Builder 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 biraz zaman alabilir. VM oluşturmaya geçmeden önce bu bölümün tamamlanmasını bekleyin.
Sanal makineyi oluşturma
Azure 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 $sigResourceGroup \
--name myAibGalleryVM \
--admin-username aibuser \
--location $location \
--image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
--generate-ssh-keys
VM ile SSH bağlantısı kurun.
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 kullanmayı denemek istiyorsanız, sonraki adımları atlayın ve Azure Görüntü Oluşturucusu'nu kullanarak başka bir görüntü sürümü oluşturun.
Bu işlem, 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ı 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 resim tanımlarını silmiş olmanız gerekir.
Görüntü oluşturucu şablonunu silin.
az resource delete \
--resource-group $sigResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01
İzin atamalarını, rolleri ve kimliği silme
az role assignment delete \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup
az role definition delete --name "$imageRoleDefName"
az identity delete --ids $imgBuilderId
Görüntü oluşturucusu tarafından oluşturulan görüntü sürümünü alın, bu her zaman ile 0.
başlar ve ardından görüntü sürümünü 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 Galerileri hakkında daha fazla bilgi edinin.