مشاركة عبر


ملحقات وميزات الجهاز الظاهري لنظام التشغيل Linux

ملحقات الجهاز الظاهري Azure (VM) هي تطبيقات صغيرة توفر مهام تكوين وأتمتة ما بعد النشر على أجهزة Azure الظاهرية. على سبيل المثال، إذا كان الجهاز الافتراضي يتطلب تثبيت برمجيات، أو حماية من برنامج مكافحة الفيروسات، أو القدرة على تشغيل سكريبت داخله، يمكنك استخدام إضافة للجهاز الافتراضي.

يمكنك تشغيل امتدادات Azure VM باستخدام Azure CLI وAzure PowerShell وقوالب Azure Resource Manager (قوالب ARM)، وبوابة Azure. يمكنك تجميع الملحقات مع نشر جهاز ظاهري جديد أو تشغيلها مقابل أي نظام موجود.

توفر هذه المقالة نظرة عامة على ملحقات Azure VM، والمتطلبات الأساسية لاستخدامها، وإرشادات حول كيفية اكتشافها وإدارتها وإزالتها. توفر هذه المقالة معلومات عامة لأن العديد من امتدادات الآلات الافتراضية متاحة. لكل واحدة منها تكوين فريد محتمل ووثائق خاصة به.

‏‫ملاحظة‬

جرب مساعدة VM للحصول على تشخيصات أسرع. نوصي بتشغيل مساعدة VM لويندوز أو VM Assist لنظام لينكس. تساعدك أدوات التشخيص المستندة إلى البرنامج النصي هذه على تحديد المشكلات الشائعة التي تؤثر على عامل ضيف جهاز Azure الظاهري وسلامة الجهاز الظاهري بشكل عام.

إذا كنت تواجه مشاكل في الأداء مع الأجهزة الافتراضية، قبل التواصل مع الدعم، قم بتشغيل هذه الأدوات.

حالات الاستخدام والعينات

يحتوي كل ملحق Azure VM على حالة استخدام محددة. تشمل الأمثلة ما يلي:

بالإضافة إلى الإضافات الخاصة بالعمليات، يتوفر إضافة Custom Script لكل من أجهزة ويندوز ولينكس الافتراضية. يسمح ملحق البرنامج النصي المخصص لنظام التشغيل Linux بتشغيل أي برنامج نصي Bash على جهاز ظاهري. تعد البرامج النصية المخصصة مفيدة لتصميم عمليات توزيع Azure التي تتطلب تكوينا يتجاوز ما يمكن أن توفره أدوات Azure الأصلية.

المتطلبات الأساسية

‏‫ملاحظة‬

تدعم الإضافات فقط على توزيعات لينكس المدعومة على Azure.

عامل Azure Linux

للتعامل مع الامتداد على الجهاز الافتراضي، يجب أن يكون لديك وكيل Azure Linux مثبت. تحتوي بعض الملحقات الفردية على متطلبات أساسية، مثل الوصول إلى الموارد أو التبعيات.

يدير عامل Azure Linux التفاعلات بين جهاز Azure الظاهري ووحدة تحكم بنية Azure. العامل مسؤول عن العديد من الجوانب الوظيفية لنشر أجهزة Azure الظاهرية وإدارتها، بما في ذلك تشغيل ملحقات الجهاز الظاهري.

تم تثبيت عامل Azure Linux مسبقا على صور Azure Marketplace. يمكنك أيضا تثبيته يدويا على أنظمة التشغيل المدعومة.

يعمل العامل على أنظمة تشغيل متعددة. ومع ذلك ، فإن إطار عمل الملحقات له حد لأنظمة التشغيل التي تستخدمها الملحقات. بعض الإضافات غير مدعومة عبر جميع أنظمة التشغيل وقد تصدر رمز الخطأ 51 ("نظام التشغيل غير المدعوم"). تحقق من وثائق الإضافة الفردية لمعرفة إمكانية الدعم.

الوصول إلى الشبكة

يتم تنزيل حزم الملحقات من مستودع ملحق Azure Storage. يتم نشر تحميلات حالة الملحق إلى Azure Storage.

إذا كنت تستخدم إصدارا مدعوما من عامل Azure Linux، فلن تحتاج إلى السماح بالوصول إلى Azure Storage في منطقة الجهاز الظاهري. يمكنك استخدام العامل لإعادة توجيه الاتصال إلى وحدة تحكم Azure Fabric لاتصالات العامل. إذا كنت تستخدم إصدارا غير مدعوم من العامل، فأنت بحاجة إلى السماح بالوصول الصادر إلى Azure Storage في تلك المنطقة من الجهاز الظاهري.

مهم

إذا قمت بحظر الوصول إلى عنوان IP الخاص 168.63.129.16 باستخدام جدار الحماية الخاص بالضيف، ستفشل الإضافات حتى لو استخدمت نسخة مدعومة من الوكيل أو قمت بتكوين الوصول الخارجي. أيضا، إذا لم يكن لدى الجهاز الافتراضي وصول صادر إلى *.blob.windows.net و، *.blob.storage.azure.netفإن تهيئة وكيل Azure Linux وتثبيت الإضافات يسبب المزيد من التأخيرات. لتجنب هذه التأخيرات، تأكد من السماح بالوصول إلى هذه النقاط النهائية.

يمكنك استخدام الوكلاء فقط لتحميل حزم التمديد وحالة التقارير. على سبيل المثال، إذا كان تثبيت الإضافة يحتاج إلى تنزيل سكريبت من GitHub (إضافة Custom Script) أو يحتاج إلى الوصول إلى Azure Storage (Azure Backup Backup)، فعليك فتح المزيد من منافذ جدار الحماية أو مجموعة أمن الشبكة (NSG). الامتدادات المختلفة لها متطلبات مختلفة لأنها تطبيقات. بالنسبة للملحقات التي تتطلب الوصول إلى Azure Storage، يمكنك السماح بالوصول باستخدام علامات خدمة Azure NSG.

لإعادة توجيه طلبات نسبة استخدام الشبكة للعامل، يحتوي عامل Azure Linux على دعم الخادم الوكيل. دعم خادم الوكيل هذا لا يطبق الإضافات. يجب تكوين كل ملحق فردي للعمل مع وكيل.

اكتشاف ملحقات الجهاز الظاهري

  • Azure CLI
  • Azure PowerShell

تتوفر العديد من ملحقات الجهاز الظاهري للاستخدام مع أجهزة Azure الظاهرية. لرؤية قائمة كاملة، استخدم قائمة صور ملحق az vm. يسرد المثال التالي جميع الملحقات المتوفرة في موقع westus :

az vm extension image list --location westus --output table

تشغيل ملحقات الجهاز الظاهري

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

يمكنك استخدام الطرق التالية لتشغيل ملحق مقابل جهاز ظاهري موجود.

Azure CLI

يمكنك تشغيل ملحقات Azure VM مقابل جهاز ظاهري موجود باستخدام الأمر az vm extension set . يقوم المثال التالي بتشغيل ملحق البرنامج النصي المخصص مقابل جهاز ظاهري يسمى myVM في مجموعة موارد تسمى myResourceGroup. استبدل اسم مجموعة الموارد المثالي، اسم الجهاز الافتراضي، والسكريبت لتشغيله https:\//raw.githubusercontent.com/me/project/hello.sh بمعلوماتك الخاصة.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

عند تشغيل الملحق بشكل صحيح ، يكون الإخراج مشابها للمثال التالي:

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

Azure PowerShell

يمكنك تشغيل ملحقات Azure VM مقابل جهاز ظاهري موجود باستخدام الأمر Set-AzVMExtension . يقوم المثال التالي بتشغيل ملحق البرنامج النصي المخصص مقابل جهاز ظاهري يسمى myVM في مجموعة موارد تسمى myResourceGroup. استبدل اسم مجموعة الموارد المثالي، اسم الجهاز الافتراضي، والسكريبت لتشغيله https:\//raw.githubusercontent.com/me/project/hello.sh بمعلوماتك الخاصة.

$Params = @{
    ResourceGroupName  = 'myResourceGroup'
    VMName             = 'myVM'
    Name               = 'CustomScript'
    Publisher          = 'Microsoft.Azure.Extensions'
    ExtensionType      = 'CustomScript'
    TypeHandlerVersion = '2.1'
    Settings          = @{fileUris = @('https://raw.githubusercontent.com/me/project/hello.sh'); commandToExecute = './hello.sh'}
}
Set-AzVMExtension @Params

عند تشغيل الملحق بشكل صحيح ، يكون الإخراج مشابها للمثال التالي:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

Azure portal

يمكنك تطبيق ملحقات الجهاز الظاهري على جهاز ظاهري موجود من خلال مدخل Microsoft Azure. حدد الجهاز الظاهري في المدخل، وحدد الملحقات، ثم حدد إضافة. اختر الملحق الذي تريده من قائمة الإضافات المتوفرة، واتبع الإرشادات الموجودة في المعالج.

تظهر الصورة التالية تثبيت إضافة Custom Script لنظام لينكس من بوابة Azure.

لقطة شاشة لمربع الحوار لتثبيت ملحق البرنامج النصي المخصص لنظام التشغيل Linux.

قوالب Azure Resource Manager

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

على سبيل المثال، تم أخذ JSON التالي من قالب ARM كامل ينشر مجموعة من الأجهزة الافتراضية متوازنة التحميل وقاعدة بيانات Azure SQL. ثم يقوم بتثبيت تطبيق .NET Core على كل جهاز افتراضي. يعتني ملحق الجهاز الظاهري بتثبيت البرنامج.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

لمزيد من المعلومات حول كيفية إنشاء قوالب ARM، راجع الآلات الافتراضية في قالب Azure Resource Manager.

المساعدة في تأمين بيانات ملحق الجهاز الظاهري

عند تشغيل ملحق جهاز ظاهري، قد يكون من الضروري تضمين معلومات حساسة مثل بيانات الاعتماد وأسماء حسابات التخزين ومفاتيح الوصول. تتضمن العديد من ملحقات الجهاز الظاهري تكوينا محميا يقوم بتشفير البيانات وفك تشفيرها فقط داخل الجهاز الظاهري الهدف. كل امتداد له مخطط تكوين محمي محدد. كل امتداد مفصل في وثائق خاصة بالامتدادات.

يوضح المثال التالي مثيلا لملحق البرنامج النصي المخصص لنظام التشغيل Linux. يتضمن الأمر المراد تشغيله مجموعة من بيانات الاعتماد. في هذا المثال، لا يتم تشفير الأمر المراد تشغيله.

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

يساعد نقل الخاصية commandToExecute إلى التكوين protected في تأمين سلسلة التنفيذ، كما هو موضح في المثال التالي:

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

كيفية تحديث الوكلاء والإضافات

يشترك الوكلاء والإضافات في نفس آلية التحديث التلقائي.

عند توفر تحديث وتمكين التحديثات التلقائية، لا يتم تثبيت التحديث على الجهاز الظاهري إلا بعد حدوث تغيير في ملحق أو بعد تغييرات نموذج الجهاز الظاهري الأخرى، مثل:

  • أقراص البيانات
  • ملحقات
  • علامات الامتداد
  • حاوية تشخيص التمهيد
  • أسرار نظام التشغيل الضيف
  • حجم الجهاز الظاهري
  • ملف تعريف الشبكة

الناشرون يقدمون تحديثات للمناطق في أوقات مختلفة، لذا يمكنك أن يكون لديك آلات افتراضية في مناطق مختلفة على إصدارات مختلفة.

‏‫ملاحظة‬

بعض التحديثات قد تتطلب قواعد إضافية لجدار النفاية. لمزيد من المعلومات، راجع الوصول إلى الشبكة.

تحديثات الوكيل

يحتوي عامل Linux VM على التعليمات البرمجية لعامل التوفيرورمز معالجة الملحق في حزمة واحدة. لا يمكن فصلهما.

يمكنك تعطيل عامل التوفير عندما تريد التوفير على Azure باستخدام cloud-init.

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

رمز معالجة الملحق مسؤول عن:

  • التواصل مع نسيج Azure.
  • التعامل مع عمليات ملحق الجهاز الظاهري، مثل عمليات التثبيت وحالة إعداد التقارير وتحديث الملحقات الفردية وإزالة الملحقات. تحتوي التحديثات على إصلاحات أمنية وإصلاحات أخطاء وتحسينات على التعليمات البرمجية لمعالجة الملحق.

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

لا يمكن تحديث العملية الأصلية تلقائيا. فقط حزمة التوزيع يمكنها تحديث النسخة الأم.

للتحقق من الإصدار الذي تستخدمه، تحقق waagentمن :

waagent --version

الإخراج مشابه للمثال التالي:

WALinuxAgent-2.2.45 running on <Linux Distro>
Python: 3.6.9
Goal state agent: 2.7.1.0

في إخراج المثال السابق ، يكون الأصل (أو الإصدار المنشور للحزمة ) WALinuxAgent-2.2.45هو . القيمة Goal state agent هي إصدار التحديث التلقائي.

نوصي بشدة بتمكين التحديث التلقائي للعامل: AutoUpdate.Enabled=y. إذا لم تفعل التحديث التلقائي، عليك الاستمرار في تحديث الوكيل يدويا. كما أنك لا تحصل على إصلاحات للأخطاء والأمان.

تحديثات الملحقات

عند توفر تحديث ملحق وتمكين التحديثات التلقائية، بعد حدوث تغيير في نموذج الجهاز الظاهري ، يقوم عامل Azure Linux بتنزيل الملحق وترقيته.

تحديثات الملحقات التلقائية إما طفيفة أو إصلاح عاجل. يمكنك الاشتراك أو إلغاء الاشتراك في التحديثات الثانوية عند توفير الإضافة. يوضح المثال التالي كيفية ترقية الإصدارات الثانوية تلقائيا في قالب ARM باستخدام "autoUpgradeMinorVersion": true,:

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

للحصول على أحدث إصلاحات أخطاء الإصدار الثانوي، نوصي بشدة بتحديد التحديث التلقائي دائما في عمليات نشر الإضافات. لا يمكنك إلغاء الاشتراك في تحديثات الإصلاح العاجل التي تحمل إصلاحات الأمان أو الأخطاء الرئيسية.

إذا قمت بتعطيل التحديثات التلقائية أو كنت بحاجة إلى ترقية إصدار رئيسي، فاستخدم az vm extension set أو Set-AzVMExtension وحدد الإصدار الهدف.

تحقق من إصدار الامتداد

‏‫ملاحظة‬

عرض النموذج مقابل عرض النسخة

في Azure، عرض النموذج يلتقط التكوين الذي حددته لإضافة (ناشر، نوع، وإصدار مطلوب)، بينما عرض النسخة تظهر الحالة الحية والنسخة الفعلية للمعالج التي تعمل على كل آلة افتراضية أو نسخة مقياس محددة—استخدم عرض النسخة كمصدر للحقيقة عند التحقق مما تم تثبيته فعليا.

تحقق من جهاز افتراضي واحد

Azure CLI

az vm get-instance-view -g <rg> -n <vm> \
  --query "extensions[].{name:name,type:type,version:typeHandlerVersion,status:statuses[0].displayStatus}" \
  -o table

يقرأ عرض نسخة الجهاز الافتراضي ليظهر نسخة المعالج المثبتة فعليا وحالتها.

مجموعات السلالم الدقيقة (موحدة أو مرنة)

Azure CLI

# Scale set summary (health)
az vmss get-instance-view -g <rg> -n <vmss>

# Per-instance extension versions
az vmss list-instances -g <rg> -n <vmss> --expand instanceView \
  --query "[].{instanceId:instanceId, extVers:instanceView.extensions[].typeHandlerVersion}"

# Specific instance
az vmss vm get-instance-view -g <rg> -n <vmss> --instance-id <id>

استخدم عرض المثيل على مستوى مجموعة المقياس أو لكل مثيل للتحقق من صحة إصدارات المعالج الفعلية.

يعيد حالة التشغيل لكل مثيل، بما في ذلك إصدارات الامتدادات والحالات اللازمة.

كيفية التعرف على تحديثات الإضافات

تحديد ما إذا كان الملحق قد تم تعيينه باستخدام autoUpgradeMinorVersion على جهاز ظاهري

  • Azure CLI
  • Azure PowerShell

يمكنك أن ترى من نموذج الجهاز الظاهري ما إذا كان الملحق قد تم توفيره ب autoUpgradeMinorVersion. للتحقق، استخدم az vm show وقدم مجموعة الموارد واسم الآلة الافتراضية:

az vm show --resource-group myResourceGroup --name myVM

يوضح إخراج المثال التالي أنه autoUpgradeMinorVersion تم تعيينه على true:

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/customScript",

تحديد وقت حدوث حدث autoUpgradeMinorVersion

لمعرفة وقت حدوث تحديث للملحق، راجع سجلات العامل على الجهاز الظاهري في /var/log/waagent.log.

في المثال التالي، تم Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 تثبيت الجهاز الظاهري. كان الإصلاح العاجل متاحا ل Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027.

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

أذونات الوكيل

لأداء مهامه ، يحتاج العامل إلى التشغيل كجذر.

استكشاف أخطاء ملحقات الجهاز الظاهري وإصلاحها

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

تنطبق إجراءات استكشاف الأخطاء وإصلاحها التالية على جميع ملحقات الجهاز الظاهري:

  • تحقق من سجل Azure Linux Agent. انظر إلى النشاط عندما كان يتم توفير الإضافة في /var/log/waagent.log.
  • تحقق من سجلات الملحق للحصول على مزيد من التفاصيل في /var/log/azure/<extensionName>.
  • تحقق من أقسام تحري الخلل وإصلاحه في الوثائق الخاصة بالإضافة بحثا عن رموز الخطأ والمشاكل المعروفة والمعلومات الأخرى الخاصة بالملحق.
  • انظر إلى سجلات النظام. تحقق مما إذا كانت عمليات أخرى قد تداخلت مع الامتداد، مثل تثبيت طويل الأمد لتطبيق آخر يتطلب وصولا حصريا إلى مدير الحزمة.

الأسباب الشائعة لفشل الملحق

  • الملحقات لديها 20 دقيقة للتشغيل. (الاستثناءات هي Custom Script وChef، اللذان يملكان 90 دقيقة.) إذا تجاوز وقتك في هذا الوقت، يتم تصنيفه كمهلة مستقطعة. سبب التوقف قد يكون:

    • الأجهزة الافتراضية منخفضة الموارد.
    • تكوينات أخرى للآلات الافتراضية أو مهام بدء التشغيل التي تستهلك كميات كبيرة من الموارد أثناء محاولة الإضافة توفيرها.
  • لم يتم استيفاء الحد الأدنى من المتطلبات الأساسية. بعض الإضافات تعتمد على إصدارات الآلات الافتراضية، مثل صور الحوسبة عالية الأداء. قد يكون للملحقات متطلبات معينة للوصول إلى الشبكة، مثل الاتصال ب Azure Storage أو الخدمات العامة. قد تكون الأمثلة الأخرى هي الوصول إلى مستودعات الحزم أو نفاد مساحة القرص أو قيود الأمان.

  • الوصول إلى مدير الحزم حصري. في بعض الحالات، قد يتعارض تكوين الجهاز الظاهري طويل الأمد وتثبيت الملحق لأن كلاهما يحتاج إلى وصول حصري إلى مدير الحزم.

عرض حالة الإضافة

  • Azure CLI
  • Azure PowerShell

بعد تشغيل امتداد VM ضد جهاز افتراضي، استخدم az vm get-instance-view لإرجاع حالة التوسيع:

az vm get-instance-view \
    --resource-group myResourceGroup \
    --name myVM \
    --query "instanceView.extensions"

الإخراج مشابه للمثال التالي:

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.CustomScript",
    "typeHandlerVersion": "2.1.6"
  }

يمكنك أيضا العثور على حالة تنفيذ الملحق في مدخل Microsoft Azure. اختر الجهاز الافتراضي، اختر الإضافات، ثم اختر الإضافة التي تريدها.

إعادة تشغيل ملحق جهاز ظاهري

قد تكون هناك حالات يجب فيها إعادة تشغيل امتداد VM. لإعادة تشغيل امتداد، قم بإزالته، ثم أعد تشغيل الامتداد بطريقة تنفيذ من اختيارك.

  • Azure CLI
  • Azure PowerShell

لإزالة امتداد، استخدم حذف امتدادات az vm:

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

يمكنك أيضا إزالة ملحق في مدخل Microsoft Azure:

  1. حدد جهاز ظاهري.
  2. حدد الإضافات.
  3. حدد الإضافة.
  4. حدد إلغاء التثبيت.

مرجع ملحق الجهاز الظاهري المشترك

اسم الملحق Description
ملحق البرنامج النصي المخصص لنظام التشغيل Linux شغل السكريبتات على جهاز افتراضي في Azure.
ملحق VMAccess استعادة الوصول إلى جهاز افتراضي في Azure. يمكنك أيضا استخدامه لإدارة المستخدمين وبيانات الاعتماد.