إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة
في هذا المقال، تتعلم كيفية استخدام Azure VM Image Builder وواجهة Azure CLI لإنشاء نسخة صورة في معرض Azure Compute Gallery (المعروف سابقا باسم معرض الصور المشتركة) ثم توزيع الصورة عالميا. يمكنك أيضا إنشاء نسخة صورة باستخدام Azure PowerShell.
تستخدم هذه المقالة نموذج JSON نموذجي لتكوين الصورة. ملف JSON موجود فيhelloImageTemplateforSIG.json.
لتوزيع الصورة على معرض Azure Compute Gallery، يستخدم القالب ShardImage كقيمة لقسم distribute القالب.
سجل مقدمي الخدمة
لاستخدام أداة بناء الصور الافتراضية، تحتاج إلى تسجيل المزودين. تحقق من تسجيلك من خلال تشغيل الأوامر التالية:
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
إذا لم يظهر المخرج مسجل، قم بتشغيل الأوامر التالية:
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
تعيين المتغيرات والأصوات
لأنك ستستخدم بعض المعلومات بشكل متكرر، أنشئ بعض المتغيرات لتخزين تلك المعلومات.
يدعم في مولد الصور الافتراضية إنشاء صور مخصصة فقط في نفس مجموعة الموارد التي تتم فيها الصورة المدارة من المصدر. في المثال التالي، قم بتحديث اسم مجموعة الموارد ليكون نفس مجموعة الموارد التي تديرها الصورة المصدرية.
# 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
أنشئ متغيرا لمعرف الاشتراك الخاص بك:
subscriptionID=$(az account show --query id --output tsv)
أنشئ مجموعة الموارد:
az group create -n $sigResourceGroup -l $location
أنشئ هوية معينة من قبل المستخدم وقم بتعيين الأجنونات على مجموعة الموارد
يستخدم أداة بناء الصور الافتراضية هوية المستخدم المقدمة لحقن الصورة في معرض Azure Compute Gallery. في هذا المثال، تقوم بإنشاء تعريف دور Azure مع إجراءات محددة لتوزيع الصورة. ثم يتم تعيين تعريف الدور لهوية المستخدم.
يعتمد نجاح الأمر التالي على انتشار RBAC، والذي قد يستغرق حتى ~30 دقيقة في بعض الحالات. انتظر حوالي 5 دقائق قبل تشغيل الأمر وأعد المحاولة بعد تأخير إذا حدث خطأ.
# 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. The success of the following command relies on RBAC propagation, which can take up to ~30 minutes. Wait about 5 minutes before running the command and wait a few more minutes before retrying if you get an error.
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup
إنشاء تعريف صورة ومعرض
لاستخدام أداة بناء الصور الافتراضية مع معرض Azure Compute Gallery، تحتاج إلى وجود معرض وتعريف صور موجود. لا تقوم VM Image Builder بإنشاء المعرض وتعريف الصورة لك.
إذا لم يكن لديك بالفعل معرض وتعريف للصور، ابدأ بإنشائها.
أولا، أنشئ معرضا:
az sig create \
-g $sigResourceGroup \
--gallery-name $sigName
ثم، أنشئ تعريفا للصورة:
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
قم بتحميل قالب JSON وقم بتسويته باستخدام المتغيرات:
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
sed -i -e "s/sudo mkdir/sleep 300;sudo mkdir/g" helloImageTemplateforSIG.json
أنشئ إصدار الصورة
في هذا القسم تنشئ نسخة الصورة في المعرض.
إرسال تكوين الصورة إلى خدمة Azure VM Image Builder:
az resource create \
--resource-group $sigResourceGroup \
--properties @helloImageTemplateforSIG.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01
ابدأ بناء الصورة:
az resource invoke-action \
--resource-group $sigResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01 \
--action Run
قد يستغرق الأمر بضع لحظات لإنشاء الصورة وتكرارها في كلا المنطقتين. انتظر حتى ينتهي هذا الجزء قبل أن تنتقل لإنشاء آلة افتراضية.
إنشاء جهاز ظاهري
أنشئ الجهاز الافتراضي من نسخة الصورة التي أنشأها VM Image Builder.
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):
ssh aibuser@<publicIpAddress>
بمجرد إنشاء اتصال SSH الخاص بك، يجب أن ترى أن الصورة تم تخصيصها برسالة اليوم:
*******************************************************
** This VM was built from the: **
** !! AZURE VM IMAGE BUILDER Custom Image !! **
** You have just been Customized :-) **
*******************************************************
تفريغ مواردك
ملحوظة
إذا أردت الآن محاولة إعادة تخصيص نسخة الصورة لإنشاء نسخة جديدة من نفس الصورة، تجاوز الخطوة الموضحة هنا واذهب إلى Use VM Image Builder لإنشاء نسخة صورة أخرى.
إذا لم تعد بحاجة إلى الموارد التي تم إنشاؤها أثناء اتباعك للعملية في هذا المقال، يمكنك حذفها من خلال القيام بما يلي.
هذه العملية تحذف الصورة التي أنشأتها وجميع ملفات الموارد الأخرى. تأكد من أنك أنهيت هذا النشر قبل أن تحذف الموارد.
عند حذف موارد المعرض، تحتاج إلى حذف جميع نسخ الصور قبل أن تتمكن من حذف تعريف الصورة الذي تم استخدامه لإنشائها. لحذف معرض، يجب أولا حذف جميع تعريفات الصور في المعرض.
احذف قالب VM Image Builder.
az resource delete \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIG01احذف الصلاحيات والتعيينات والأدوار والهوية.
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 Image Builder (دائما تبدأ ب
0.)، ثم احذفها.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احذف تعريف الصورة.
az sig image-definition delete \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionIDاحذف المعرض.
az sig delete -r $sigName -g $sigResourceGroupحذف مجموعة الموارد.
az group delete -n $sigResourceGroup -y
الخطوات التالية
تعرف على المزيد حول Azure Compute Gallery.