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 konumundadır.

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

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:

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

Dekont

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.

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

    az resource delete \
        --resource-group $sigResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIG01
    
  2. İ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
    
  3. 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
    
  4. Görüntü tanımını silin.

    az sig image-definition delete \
    -g $sigResourceGroup \
    --gallery-name $sigName \
    --gallery-image-definition $imageDefName \
    --subscription $subscriptionID
    
  5. Galeriyi silin.

    az sig delete -r $sigName -g $sigResourceGroup
    
  6. Kaynak grubunu silin.

    az group delete -n $sigResourceGroup -y
    

Sonraki adımlar

Azure İşlem Galerisi hakkında daha fazla bilgi edinin.