مشاركة عبر


إنشاء إصدار صورة جهاز ظاهري جديد من إصدار صورة موجود باستخدام Azure Image Builder في Linux

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

توضح لك هذه المقالة كيفية التقاط إصدار صورة موجود في Azure Compute Gallery (المعروف سابقًا باسم Shared Image Gallery)، وتحديثه ونشره كإصدار صورة جديد إلى المعرض.

لتكوين الصورة، يمكنك استخدام نموذج قالب JSON، helloImageTemplateforSIGfromSIG.json.

تسجيل الموفرين

لاستخدام VM Image Builder، تحتاج إلى تسجيل الموفرين.

  1. تحقق من تسجيلات مقدم الخدمة. تأكد من أن كل واحد يرجع الحالة مسجل.

    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
    
  2. إذا لم يرجعوا الحالة مسجل، فسجل الموفرين عن طريق تشغيل الأوامر التالية:

    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
    

تعيين المتغيرات والأذونات

إذا قمت بالفعل بإنشاء معرض حساب Azure باستخدام إنشاء صورة وتوزيعها على معرض حساب Azure، فقد قمت بالفعل بإنشاء بعض المتغيرات التي تحتاجها.

  1. إذا لم تكن قد أنشأت المتغيرات بالفعل، فقم بتشغيل الأوامر التالية:

    # Resource group name 
    sigResourceGroup=ibLinuxGalleryRG
    # Gallery location 
    location=westus2
    # Additional region to replicate the image version to 
    additionalregion=eastus
    # Name of the Azure Compute Gallery 
    sigName=myIbGallery
    # Name of the image definition to use
    imageDefName=myIbImageDef
    # image distribution metadata reference name
    runOutputName=aibSIGLinuxUpdate
    
  2. قم بإنشاء متغير لمعرف الاشتراك الخاص بك:

    subscriptionID=$(az account show --query id --output tsv)
    
  3. احصل على إصدار الصورة الذي تريد تحديثه:

    sigDefImgVersionId=$(az sig image-version list \
      -g $sigResourceGroup \
      --gallery-name $sigName \
      --gallery-image-definition $imageDefName \
      --subscription $subscriptionID --query [].'id' -o tsv)
    

قم بإنشاء هوية مخصصة للمستخدم وقم بتعيين الأذونات على مجموعة الموارد

لقد قمت بإعداد هوية المستخدم في مثال سابق، لذلك تحتاج الآن إلى الحصول على معرف المورد، والذي سيتم إلحاقه بالقالب.

#get identity used previously
imgBuilderId=$(az identity list -g $sigResourceGroup --query "[?contains(name, 'aibBuiUserId')].id" -o tsv)

إذا كان لديك بالفعل Azure Compute Gallery ولكنك لم تقم بإعداده باتباع مثال سابق، فأنت بحاجة إلى تعيين أذونات لـ VM Image Builder للوصول إلى مجموعة الموارد حتى تتمكن من الوصول إلى المعرض. لمزيد من المعلومات، راجع إنشاء صورة وتوزيعها على معرض حساب Azure.

تعديل مثال helloImage

يمكنك مراجعة مثال JSON الذي أنت على وشك استخدامه في helloImageTemplateforSIGfromSIG.json. للحصول على معلومات حول ملف JSON، راجع إنشاء قالب Azure VM Image Builder.

  1. قم بتنزيل مثال JSON، كما هو موضح في إنشاء صورة Linux وتوزيعها على معرض حساب Azure باستخدام Azure CLI.

  2. تكوين JSON مع المتغيرات الخاصة بك:

    curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/8_Creating_a_Custom_Linux_Shared_Image_Gallery_Image_from_SIG/helloImageTemplateforSIGfromSIG.json -o helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s%<sigDefImgVersionId>%$sigDefImgVersionId%g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIGfromSIG.json
    sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIGfromSIG.json
    

إنشاء الصورة

  1. أرسل تكوين الصورة إلى خدمة VM Image Builder:

    az resource create \
        --resource-group $sigResourceGroup \
        --properties @helloImageTemplateforSIGfromSIG.json \
        --is-full-object \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIGfromSIG01
    
  2. ابدأ بناء الصورة:

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

انتظر حتى يتم إنشاء الصورة ونسخها نسخًا متماثلاً قبل الانتقال إلى الخطوة التالية.

إنشاء جهاز ظاهري

  1. إنشاء الجهاز الظاهري عن طريق القيام بما يلي:

    az vm create \
    --resource-group $sigResourceGroup \
    --name aibImgVm001 \
    --admin-username azureuser \
    --location $location \
    --image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
    --generate-ssh-keys
    
  2. قم بإنشاء اتصال Secure Shell (SSH) إلى الجهاز الظاهري باستخدام عنوان IP العام الخاص بـ VM.

    ssh azureuser@<pubIp>
    

    بعد إنشاء اتصال SSH، يجب أن ترى أنه تم تلقي «رسالة اليوم» توضح أن الصورة قد تم تخصيصها:

    *******************************************************
    **            This VM was built from the:            **
    **      !! AZURE VM IMAGE BUILDER Custom Image !!    **
    **         You have just been Customized :-)         **
    *******************************************************
    
  3. اكتب exit لإغلاق اتصال SSH.

  4. لسرد إصدارات الصور المتوفرة الآن في معرض الصور الخاص بك، قم بتشغيل:

    az sig image-version list -g $sigResourceGroup -r $sigName -i $imageDefName -o table
    

الخطوات التالية

لمعرفة المزيد حول مكونات ملف JSON الذي استخدمته في هذه المقالة، راجع إنشاء قالب Azure VM Image Builder.