إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة
في هذه المقالة، تتعلم كيفية استخدام مهمة Azure DevOps لإدخال البيانات الاصطناعية للبنية في صورة جهاز ظاهري حتى تتمكن من تثبيت التطبيق ونظام التشغيل الخاصين بك وتكوينهما.
هام
مهمة Azure DevOps ل VM Image Builder قيد المعاينة حاليا. للحصول على الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي، أو المعاينة، أو التي لم يتم إصدارها بعد في التوفر العام، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
إصدارات مهام DevOps
في هذا الوقت، هناك مهمتان لـ Azure VM Image Builder DevOps:
مستقرة مهمة VM Image Builder : أحدث إصدار مستقر تم اختباره ولا يبلغ عن أي مشكلاتفي القانون العام لحماية البيانات (GDPR).
غير مستقره مهمة VM Image Builder: نقدم ما يسمى بالمهمة غير المستقرة بحيث يمكنك اختبار آخر التحديثات والميزات قبل إصدار التعليمة البرمجية للمهمة كمستقر. بعد حوالي أسبوع، إذا لم تكن هناك مشكلات أبلغ عنها العميل أو بيانات تتبع الاستخدام، فإننا نروج للتعليمة البرمجية للمهمة إلى مستقر.
المتطلبات الأساسية
إشعار
لا تدعم مهمة VM Image Builder حالياً إعادة تشغيل Windows أو تشغيل أوامر غير مقيدة كمسؤول. أي أن المهمة غير مناسبة لسيناريوهات Azure Virtual Desktop أو تخصيصات Windows التي تتطلب هذه الميزات. لاستخدام DevOps مع VM Image Builder، قم بتضمين القالب في مهمة Azure Resource Manager، واستخدام مهام AZ CLI أو PowerShell.
قبل البدء، ستحتاج إلى:
ثبّت مهمة DevOpsالمستقرة من Visual Studio Marketplace.
لديك حساب Azure DevOps Services (المعروف سابقاً بـ Visual Studio Team Services أو VSTS)، وتم إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية للبنية.
سجّل متطلبات ميزة VM Image Builder ومكّنها في الاشتراك المستخدم بواسطة البنيات الأساسية لبرنامج ربط العمليات التجارية:
إنشاء حساب تخزين Azure قياسي في مجموعة موارد الصورة المصدر. يمكنك استخدام مجموعات الموارد الأخرى أو حسابات التخزين. يتم استخدام حساب التخزين لنقل البيانات الاصطناعية للبنية من مهمة DevOps إلى الصورة.
# Azure PowerShell $timeInt=$(get-date -UFormat "%s") $storageAccName="aibstorage"+$timeInt $location=westus # Create a storage account and blob in the resource group New-AzStorageAccount -ResourceGroupName $strResourceGroup -Name $storageAccName -Location $location -SkuName Standard_LRS# The Azure CLI location=westus scriptStorageAcc=aibstordot$(date +'%s') # Create a storage account and blob in the resource group az storage account create -n $scriptStorageAcc -g $strResourceGroup -l $location --sku Standard_LRS
إضافة مهمة إلى البنية الأساسية لبرنامج ربط العمليات التجارية للإصدار
حدد تحرير>البنية الأساسية لبرنامج ربط العمليات التجارية للإصدار.
في عميل المستخدم، حدد علامة الجمع (+) لإضافة Image Builder والبحث عنها.
حدد إضافة.
في الأقسام التالية، قم بتعيين خصائص المهمة.
اشتراك Azure
في القائمة المنسدلة، حدد الاشتراك الذي تريد تشغيل VM Image Builder. استخدم الاشتراك حيث يتم تخزين صورك المصدر وسيتم توزيع الصور. تحتاج إلى منح مساهم VM Image Builder حق الوصول إلى الاشتراك أو مجموعة الموارد.
مجموعة الموارد
استخدم مجموعة الموارد حيث سيتم تخزين البيانات الاصطناعية لقالب الصورة المؤقتة. عند إنشاء بيانات اصطناعية لقالب، يتم إنشاء مجموعة موارد مؤقتة أخرى لـ VM Image Builder IT_<DestinationResourceGroup>_<TemplateName>_guid. تقوم مجموعة الموارد المؤقتة بتخزين بيانات تعريف الصورة، مثل البرامج النصية. في نهاية المهمة، يتم حذف البيانات الاصطناعية لقالب الصورة ومجموعة موارد VM Image Builder المؤقتة.
الموقع
الموقع هو المنطقة التي سيتم تشغيل VM Image Builder فيها. يتم دعم عدد محدد فقط من المناطق. يجب أن تكون الصور المصدر موجودة في هذا الموقع. على سبيل المثال، إذا كنت تستخدم Azure Compute Gallery (المعروف سابقاً بـ Shared Image Gallery)، يجب أن توجد نسخة متماثلة في تلك المنطقة.
هوية مُدارة (مطلوبة)
يتطلب VM Image Builder هوية مُدارة، يستخدمها لقراءة الصور المخصصة للمصدر، والاتصال بـ Azure Storage، وإنشاء صور مخصصة. لمزيد من المعلومات، راجع تعرف على معلومات حول VM Image Builder.
دعم شبكة ظاهرية
يمكنك تكوين الجهاز الظاهري الذي تم إنشاؤه ليكون في شبكة ظاهرية معينة. عند تكوين المهمة، قم بتوفير معرف المورد لشبكة فرعية موجودة مسبقاً في حقل الإدخال تكوين الشبكة الظاهرية (اختياري). حذف معرف المورد ما إذا لم تكن هناك حاجة إلى استخدام شبكة ظاهرية محددة. لمزيد من المعلومات، راجع خيارات شبكة خدمة Azure VM Image Builder.
المصدر
يجب أن تكون الصور المصدر من أنظمة تشغيل VM Image Builder المدعومة. يمكنك اختيار الصور المخصصة الموجودة في نفس المنطقة التي يتم تشغيل VM Image Builder منها:
صورة مدارة: تمرير معرف المورد. على سبيل المثال:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>معرض الحوسبة: قم بتمرير معرف المورد لإصدار الصورة. على سبيل المثال:
/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/<versionNumber>إذا كنت بحاجة إلى الحصول على أحدث إصدار من معرض الحوسبة، فاستخدم مهمة Azure PowerShell أو Azure CLI للحصول عليه وتعيين متغير DevOps. استخدم المتغير في مهمة VM Image Builder DevOps. لمزيد من المعلومات، راجع الأمثلة في الحصول على أحدث معرف لمورد إصدار الصورة.
(Marketplace) الصورة الأساسية: استخدم القائمة المنسدلة للصور الشائعة، والتي تستخدم دائماً أحدث إصدار من أنظمة التشغيل المدعومة.
إذا لم تكن الصورة الأساسية في القائمة، يمكنك تحديد الصورة بالضبط باستخدام
Publisher:Offer:Sku.إصدار الصورة الأساسية (اختياري) - يمكنك توفير إصدار الصورة التي تريد استخدامها. الإصدار الافتراضي هو
latest.
تخصيص
تناقش الأقسام التالية طرقاً مختلفة لتخصيص المهام.
مقدم الخدمة
في البداية، يتم دعم اثنين من أدوات التخصيص، Shell وPowerShell. يتم دعم الأدوات الداخلية فقط. إذا كنت ترغب في تنزيل البرامج النصية، يمكنك تمرير الأوامر الداخلية للقيام بذلك.
بالنسبة لنظام التشغيل الخاص بك، حدد PowerShell أو Shell.
مهمة Windows Update
بالنسبة لـ Windows فقط، تقوم المهمة بتشغيل Windows Update في نهاية التخصيصات. تتعامل أيضاً مع عمليات إعادة التشغيل المطلوبة.
تقوم المهمة بتشغيل تكوين Windows Update التالي:
"type": "WindowsUpdate",
"searchCriteria": "IsInstalled=0",
"filters": [
"exclude:$_.Title -like '*Preview*'",
"include:$true"
تقوم المهمة بتثبيت تحديثات Windows المهمة والموصى بها التي لم تعد إصدارات أولية.
التعامل مع عمليات إعادة التشغيل
لا تدعم مهمة DevOps حالياً إعادة تشغيل إصدارات Windows. إذا حاولت إعادة التشغيل باستخدام التعليمات البرمجية لـ PowerShell، يفشل تحديث الإصدار. ومع ذلك، يمكنك استخدام التعليمات البرمجية لإعادة تشغيل تحديث إصدارات Linux.
مسار البنية
تم تصميم المهمة لتكون قادرة على إدخال البيانات الاصطناعية لإصدار بنية DevOps في الصورة. لإنجاز هذا العمل، تحتاج إلى إعداد مسار البنية. في إعداد البنية الأساسية لبرنامج ربط العمليات التجارية للإصدار، قم بإضافة المستودع الخاص بالبيانات الاصطناعية للبنية.
حدد الزر مسار البنية لاختيار مجلد البنية الذي تريد وضعه على الصورة. تقوم مهمة VM Image Builder بنسخ كافة الملفات والدلائل الموجودة داخلها. عند إنشاء الصورة، يقوم VM Image Builder بتوزيع الملفات والدلائل في مسارات مختلفة، اعتماداً على نظام التشغيل.
هام
عند إضافة البيانات الاصطناعية للمستودع، قد تجد أن اسم الدليل مسبوق بحرف تسطير أسفل السطر (_). يمكن أن تتسبب الشرطة السفلية في حدوث مشكلات في الأوامر المضمنة. تأكد من استخدام علامات الاقتباس المناسبة في الأوامر.
يوضح المثال التالي كيفية عمل ذلك:
بالنسبة إلى Windows: توجد الملفات في محرك الأقراص C:. يتم إنشاء دليل مسمى buildArtifactsوالذي يتضمن دليل webapp.
بالنسبة إلى Linux: توجد الملفات في
/tmpالدليل.webappيتم إنشاء الدليل، والذي يتضمن جميع الملفات والدلائل. لأن هذا دليل مؤقت، يجب نقل الملفات منه. وإلا، سيتم حذفها.
برنامج نصي داخلي للتخصيص
بالنسبة إلى Windows: يمكنك إدخال أوامر PowerShell الداخلية مفصولة بفواصل. إذا كنت تريد تشغيل برنامج نصي في دليل البناء، فيمكنك استخدام:
& 'c:\buildArtifacts\webapp\webconfig.ps1'يمكنك الرجوع إلى برامج نصية متعددة، أو إضافة المزيد من الأوامر. على سبيل المثال:
& 'c:\buildArtifacts\webapp\webconfig.ps1' & 'c:\buildArtifacts\webapp\installAgent.ps1'بالنسبة إلى Linux: يتم وضع البيانات الاصطناعية للبنية في الدليل /tmp. ومع ذلك، في العديد من أنظمة تشغيل Linux، عند إعادة التشغيل، يتم حذف محتويات الدليل /tmp. إذا كنت تريد وجود البيانات الاصطناعية في الصورة، فيجب عليك إنشاء دليل آخر ونسخها. على سبيل المثال:
sudo mkdir /lib/buildArtifacts sudo cp -r "/tmp/_ImageBuilding/webapp" /lib/buildArtifacts/.إذا كنت موافقاً على استخدام الدليل /tmp، يمكنك تشغيل البرنامج النصي باستخدام التعليمة البرمجية التالية:
# Grant execute permissions to run scripts sudo chmod +x "/tmp/_ImageBuilding/webapp/coreConfig.sh" echo "running script" sudo . "/tmp/AppsAndImageBuilderLinux/_WebApp/coreConfig.sh"
ماذا يحدث لبيانات البنية الاصطناعية بعد إنشاء الصورة؟
إشعار
لا يقوم VM Image Builder تلقائياً بإزالة البيانات الاصطناعية للبنية. نقترح بشدة استخدام التعليمات البرمجية دائماً لإزالة البيانات الاصطناعية للبنية.
بالنسبة إلى Windows: يقوم VM Image Builder بتوزيع الملفات إلى دليل C:\buildArtifacts. نظراً لاستمرار الدليل، يجب إزالته عن طريق تشغيل برنامج نصي. على سبيل المثال:
# Clean up buildArtifacts directory Remove-Item -Path "C:\buildArtifacts\*" -Force -Recurse # Delete the buildArtifacts directory Remove-Item -Path "C:\buildArtifacts" -Forceبالنسبة إلى Linux: يتم وضع البيانات الاصطناعية للبنية في الدليل /tmp. ومع ذلك، في العديد من أنظمة تشغيل Linux، يتم حذف محتويات الدليل /tmp عند إعادة التشغيل. يقترح أن يكون لديك تعليمة برمجية لإزالة المحتويات وعدم الاعتماد على نظام التشغيل لإزالة المحتويات. على سبيل المثال:
sudo rm -R "/tmp/AppsAndImageBuilderLinux"
إجمالي طول بنية الصورة
لا يمكن تغيير الطول الإجمالي في مهمة البنية الأساسية لبرنامج ربط العمليات التجارية لـ DevOps حتى الآن. يستخدم الإعداد الافتراضي من 240 دقيقة. إذا كنت ترغب في زيادة buildTimeoutInMinutes، يمكنك استخدام مهمة AZ CLI في البنية الأساسية لبرنامج ربط العمليات التجارية للإصدار. كوّن المهمة لنسخ قالب وإرساله. للحصول على حل مثال، راجع استخدام متغيرات البيئة والمعلمات مع VM Image Builder، أو استخدام Azure PowerShell.
حساب التخزين
حدد حساب التخزين الذي أنشأته في المتطلبات الأساسية. إذا كنت لا تراه في القائمة، فلن يكون لدى VM Image Builder أذونات له.
عند بدء الإنشاء، ينشئ VM Image Builder حاوية تسمى imagebuilder-vststask، حيث يتم تخزين البيانات الاصطناعية للبنية من المستودع.
إشعار
تحتاج إلى حذف حساب التخزين أو الحاوية يدويًا بعد كل عملية إنشاء.
توزيع
يتم دعم أنواع التوزيع الثلاثة التالية.
صورة مُدارة
معرف المورد:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/images/<imageName>المواقع
معرض Azure Compute
يجب أن يكون معرض الحوسبة موجوداً بالفعل.
معرف المورد:
/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>المناطق: قائمة المناطق، مفصولة بفاصلة. على سبيل المثال:
westus،eastus،centralus.
القرص الثابت الظاهري
لا يمكنك تمرير أي قيم إلى هذا. يصدر VM Image Builder القرص الثابت الظاهري إلى مجموعة موارد VM Image Builder المؤقتة، IT_<DestinationResourceGroup>_<TemplateName>، في حاوية vhds. عند بدء إنشاء الإصدار، يقوم VM Image Builder بإصدار سجلات. عند انتهاء VM Image Builder، فإنه يصدر عنوان URL لـ VHD.
الإعدادات الاختيارية
يمكنك تجاوز إعداد حجم الجهاز الظاهري من الحجم الافتراضي الخاص به لـ Standard_D1_v2. قد ترغب في القيام بذلك لتقليل إجمالي وقت التخصيص. أو قد ترغب في إنشاء صور تعتمد على أحجام معينة من الأجهزة الظاهرية، مثل GPU (وحدة معالجة الرسومات) وHPC (الحوسبة عالية الأداء) وما إلى ذلك.
كيفية عمل المهمة
عند إنشاء الإصدار، تقوم المهمة بإنشاء حاوية في حساب التخزين، تسمى imagebuilder-vststask. تقوم بضغط وتحميل البيانات الاصطناعية للبنية الخاصة بك وإنشاء رمز مميز لتوقيع الوصول المشترك للملف المضغوط.
تستخدم المهمة الخصائص التي تم تمريرها إلى المهمة لإنشاء البيانات الاصطناعية لقالب VM Image Builder. المهمة تقوم بما يلي:
تنزيل الملف المضغوط لبيانات البنية الاصطناعية وأي برامج نصية أخرى مقترنة. يتم حفظ الملفات في حساب تخزين في مجموعة موارد VM Image Builder المؤقتة
IT_<DestinationResourceGroup>_<TemplateName>.إنشاء قالب مسبوق بـ t_ وعدد صحيح رتيب مكون من 10 أرقام. يتم حفظ القالب إلى مجموعة الموارد التي حددتها، وهو موجود طوال مدة الإنشاء في مجموعة الموارد.
مثال على الإخراج:
start reading task parameters...
found build at: /home/vsts/work/r1/a/_ImageBuilding/webapp
end reading parameters
getting storage account details for aibstordot1556933914
created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
Source for image: { type: 'SharedImageVersion',
imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
template name: t_1556938436xxx
starting put template...
عند بدء تشغيل إنشاء الصورة، يتم الإبلاغ عن حالة التشغيل في سجلات الإصدارات:
starting run template...
عند اكتمال إنشاء الصورة، سترى الإخراج مشابه للنص التالي:
2019-05-06T12:49:52.0558229Z starting run template...
2019-05-06T13:36:33.8863094Z run template: Succeeded
2019-05-06T13:36:33.8867768Z getting runOutput for SharedImage_distribute
2019-05-06T13:36:34.6652541Z ==============================================================================
2019-05-06T13:36:34.6652925Z ## task output variables ##
2019-05-06T13:36:34.6658728Z $(imageUri) = /subscriptions/<subscriptionID>/resourceGroups/aibwinsig/providers/Microsoft.Compute/galleries/my22stSIG/images/winWAppimages/versions/0.23760.13763
2019-05-06T13:36:34.6659989Z ==============================================================================
2019-05-06T13:36:34.6663500Z deleting template t_1557146959485...
2019-05-06T13:36:34.6673713Z deleting storage blob imagebuilder-vststask\webapp/18-1/webapp_1557146958741.zip
2019-05-06T13:36:34.9786039Z blob imagebuilder-vststask\webapp/18-1/webapp_1557146958741.zip is deleted
2019-05-06T13:38:37.4884068Z delete template: Succeeded
قالب الصورة ويتم حذف IT_<DestinationResourceGroup>_<TemplateName>.
يمكنك أخذ متغير خدمات Azure DevOps $(imageUri) (المعروف سابقاً بـ Visual Studio Team Services أو VSTS) واستخدامه في المهمة التالية أو مجرد استخدام القيمة وإنشاء جهاز ظاهري.
متغيرات DevOps الناتجة
فيما يلي الناشر والعرض وSKU وإصدار صورة السوق المصدر:
$(pirPublisher)$(pirOffer)$(pirSku)$(pirVersion)
فيما يلي عنوان URI للصورة، وهو معرف المورد للصورة الموزعة:
$(imageUri)
الأسئلة المتداولة
هل يمكنني استخدام قالب صورة موجود قمت بإنشائه بالفعل، خارج DevOps؟
ليس في الوقت الحالي.
هل يمكنني تحديد اسم قالب الصورة؟
لا. يتم استخدام اسم قالب فريد ثم حذفه.
فشلت مهمة VM Image Builder. كيف يمكنني استكشاف أخطاء المشكلة وإصلاحها؟
إذا كان هناك فشل في البنية، فإن مهمة DevOps لا تحذف مجموعة موارد التقسيم المرحلي. يمكنك الوصول إلى مجموعة موارد التقسيم المرحلي التي تحتوي على سجل تخصيص البنية.
سترى خطأ في سجل DevOps لمهمة VM Image Builder، وستحتوي الرسالة على الموقع customization.log. على سبيل المثال:
لمزيد من المعلومات، راجع استكشاف أخطاء خدمة VM Image Builder وإصلاحها.
بعد التحقيق في الفشل، يمكنك حذف مجموعة موارد التقسيم المرحلي. أولاً، احذف البيانات الاصطناعية لمورد قالب VM Image Builder. البيانات الاصطناعية مسبوقة بـ t_ ويمكن العثور عليها في سجل بنية مهمة DevOps:
...
Source for image: { type: 'SharedImageVersion',
imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
...
template name: t_1556938436xxx
...
توجد البيانات الاصطناعية لمورد قالب VM Image Builder في مجموعة الموارد المحددة مبدئياً في المهمة. عند الانتهاء من استكشاف الأخطاء وإصلاحها، احذف البيانات الاصطناعية. في حالة الحذف باستخدام مدخل Azure، ضمن مجموعة الموارد، حدد إظهار الأنواع المخفية، لعرض البيانات الاصطناعية.
الخطوات التالية
لمزيد من المعلومات، راجع نظرة عامة على VM Image Builder.