إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ أجهزة Windows الظاهرية
في هذه المقالة، ستتعرف على كيفية إنشاء صورة مخصصة لـ Windows باستخدام Azure VM Image Builder. يستخدم المثال الوارد في هذه المقالة أدوات تخصيص لتخصيص الصورة:
- PowerShell (ScriptUri): قم بتنزيل وتشغيل برنامج PowerShell النصي.
- Windows Restart: إعادة تشغيل VM.
- PowerShell (مضمن): يقوم بتشغيل أمر محدد. في هذا المثال، يقوم بإنشاء دليل على الجهاز الظاهري باستخدام
mkdir c:\\buildActions. - File: ينسخ ملفاً من GitHub إلى VM. ينسخ هذا المثال index.md إلى
c:\buildArtifacts\index.htmlعلى الجهاز الظاهري. -
buildTimeoutInMinutes: يحدد وقت الإنشاء بالدقائق. الافتراضي هو 240 دقيقة، والتي يمكنك زيادتها للسماح بإصدارات تعمل لفترة أطول. الحد الأدنى للقيمة المسموح بها هو 6 دقائق. سوف تتسبب القيم التي تقل عن 6 دقائق في حدوث أخطاء. -
vmProfile: يحددvmSizeوخصائص الشبكة. -
osDiskSizeGB: يمكن استخدامها لزيادة حجم الصورة. Person. يوفر هوية لـ VM Image Builder لاستخدامها أثناء الإنشاء.
استخدم نموذج JSON القالبي التالي لتكوين الصورة: helloImageTemplateWin.json.
إشعار
يمكن لمستخدمي Windows تشغيل أمثلة Azure CLI التالية على Azure Cloud Shell باستخدام Bash.
تسجيل الموفرين
لاستخدام VM Image Builder، تحتاج إلى تسجيل الميزة. تحقق من تسجيلك عن طريق تشغيل الأوامر التالية:
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 -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 - we're using myImageBuilderRG in this example
imageResourceGroup='myWinImgBuilderRG'
# Region location
location='WestUS2'
# Run output name
runOutputName='aibWindows'
# The name of the image to be created
imageName='aibWinImage'
قم بإنشاء متغير لمعرف الاشتراك الخاص بك:
subscriptionID=$(az account show --query id --output tsv)
إنشاء مجموعة موارد
لتخزين عنصر قالب تكوين البيانات الاصطناعية والصورة، استخدم مجموعة الموارد التالية:
az group create -n $imageResourceGroup -l $location
قم بإنشاء هوية مخصصة للمستخدم وقم بتعيين الأذونات على مجموعة الموارد
يستخدم VM Image Builder هوية المستخدم المتوفرة لإدخال الصورة في مجموعة الموارد. في هذا المثال، تقوم بإنشاء تعريف دور Azure بأذونات محددة لتوزيع الصورة. ثم يتم تعيين تعريف الدور لهوية المستخدم.
إنشاء هوية مُدارة يعينها المستخدم ومنح الأذونات
قم بإنشاء هوية مخصصة للمستخدم حتى يتمكن VM Image Builder من الوصول إلى حساب التخزين حيث يتم تخزين البرنامج النصي.
identityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $identityName
# Get the identity ID
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)
# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# Download the preconfigured role definition example
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>%$imageResourceGroup%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/$imageResourceGroup
تنزيل قالب تكوين الصورة
لقد أنشأنا قالباً لتكوين صورة ذات معلمات لتجربتها. قم بتنزيل مثال ملف JSON، ثم قم بتكوينه بالمتغيرات التي قمت بتعيينها مسبقاً.
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/0_Creating_a_Custom_Windows_Managed_Image/helloImageTemplateWin.json -o helloImageTemplateWin.json
sed -i -e "s%<subscriptionID>%$subscriptionID%g" helloImageTemplateWin.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" helloImageTemplateWin.json
sed -i -e "s%<region>%$location%g" helloImageTemplateWin.json
sed -i -e "s%<imageName>%$imageName%g" helloImageTemplateWin.json
sed -i -e "s%<runOutputName>%$runOutputName%g" helloImageTemplateWin.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateWin.json
يمكنك تعديل هذا المثال في المحطة باستخدام محرر نصوص مثل vi.
vi helloImageTemplateWin.json
إشعار
بالنسبة للصورة المصدر، حدد إصداراً دائماً. لا يمكنك تحديد latest كإصدار.
إذا قمت بإضافة أو تغيير مجموعة الموارد التي يتم توزيع الصورة عليها، فتأكد من تعيين الأذونات في مجموعة الموارد.
إنشاء الصورة
قم بإرسال تكوين الصورة إلى خدمة VM Image Builder عن طريق تشغيل الأوامر التالية:
az resource create \
--resource-group $imageResourceGroup \
--properties @helloImageTemplateWin.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01
عند الانتهاء، يتم إرجاع رسالة نجاح إلى وحدة التحكم، ويتم إنشاء قالب تكوين VM Image Builder في $imageResourceGroup.
في الخلفية، يقوم VM Image Builder أيضاً بإنشاء مجموعة موارد مرحلية في اشتراكك. تُستخدم هذه المجموعة من الموارد لإنشاء الصورة بالتنسيق التالي: IT_<DestinationResourceGroup>_<TemplateName>.
إشعار
إذا كان الحذف مطلوبا، فلا تحذف مجموعة الموارد المرحلية مباشرة. أولا، احذف البيانات الاصطناعية لقالب الصورة، والتي ستحذف بعد ذلك مجموعة الموارد المرحلية. وإلا، فقد يدخل قالب الصورة في حالة فشل.
إذا أبلغت الخدمة عن فشل عند إرسال قالب تكوين الصورة، فقم بما يلي:
- راجع استكشاف أخطاء خدمة Azure VM Image Builder وإصلاحها.
- قبل محاولة إعادة إرسال القالب، احذفه عن طريق تشغيل الأوامر التالية:
az resource delete \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01
البدء في بناء الصورة
ابدأ عملية بناء الصورة باستخدام إجراء استدعاء مورد من الألف إلى الياء.
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01 \
--action Run
انتظر حتى اكتمال البناء.
إذا واجهت أي أخطاء، فراجع استكشاف أخطاء خدمة Azure VM Image Builder وإصلاحها.
إنشاء جهاز ظاهري
قم بإنشاء الجهاز الظاهري باستخدام الصورة التي قمت بإنشائها. في التعليمة البرمجية التالية، استبدل <password> بكلمة المرور الخاصة بك لـ aibuser على الجهاز الظاهري.
az vm create \
--resource-group $imageResourceGroup \
--name aibImgWinVm00 \
--admin-username aibuser \
--admin-password <password> \
--image $imageName \
--location $location
التحقق من التخصيص
قم بإنشاء اتصال سطح المكتب البعيد بالجهاز الظاهري باستخدام اسم المستخدم وكلمة المرور اللذين قمت بتعيينهما عند إنشاء الجهاز الظاهري. في الجهاز الظاهري، افتح نافذة Command Prompt، ثم اكتب:
dir c:\
يتم إنشاء الدليلين التاليين أثناء تخصيص الصورة:
- buildActions
- buildArtifacts
تفريغ مواردك
عند الانتهاء، احذف الموارد التي قمت بإنشائها.
احذف قالب VM Image Builder.
az resource delete \ --resource-group $imageResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateWin01احذف تعيين الدور وتعريف الدور وهوية المستخدم.
az role assignment delete \ --assignee $imgBuilderCliId \ --role "$imageRoleDefName" \ --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup az role definition delete --name "$imageRoleDefName" az identity delete --ids $imgBuilderIdاحذف مجموعة موارد الصور.
az group delete -n $imageResourceGroup
الخطوات التالية
لمعرفة المزيد حول مكونات ملف JSON الذي تستخدمه هذه المقالة، راجع مرجع قالب VM Image Builder.