استخدام قوالب Azure Batch CLI ونقل الملفات

تحذير

تم إيقاف امتداد Azure CLI الدفعي في 30 سبتمبر 2024. قم بإلغاء تثبيت الإضافة باستخدام الأمر az extension remove --name azure-batch-cli-extensions.

باستخدام ملحق Batch إلى Azure CLI، يمكن للمستخدمين تشغيل وظائف Batch دون كتابة التعليمات البرمجية.

إنشاء ملفات قالب JSON واستخدامها باستخدام Azure CLI لإنشاء تجمعات الدفعات والوظائف والمهام. استخدم أوامر ملحق CLI لتحميل ملفات إدخال الوظيفة بسهولة إلى حساب التخزين المقترن بحساب Batch، وتنزيل ملفات إخراج الوظيفة.

ملاحظة

ملفات JSON لا تدعم نفس وظائف قوالب Azure Resource Manager. ومن المفترض أن تكون منسقة مثل نص طلب REST الخام. لا يغير ملحق CLI أي أوامر موجودة، ولكنه يحتوي على خيار قالب مشابه يضيف وظيفة جزئية لقالب Azure Resource Manager. انظر Azure Batch CLI Extensions لأنظمة Windows وMac وLinux.

نظرة عامة

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

تبني قوالب الدفعات على دعم الدفعات الحالي في Azure CLI لملفات JSON لتحديد قيم الخصائص عند إنشاء مجموعات الجمع، والوظائف، والمهام، والعناصر الأخرى. تضيف قوالب الدفعات الإمكانات التالية:

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

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

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

على سبيل المثال، ffmpeg هو تطبيق شائع يعالج ملفات الصوت والفيديو. باستخدام ملحق Azure Batch CLI، يمكنك تسهيل استدعاء المستخدم ل ffmpeg لتشفير ملفات الفيديو المصدر إلى دقة مختلفة. قد تبدو العملية كما يلي:

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

تركيب

لتثبيت امتداد Azure Batch CLI، قم أولا بتثبيت Azure CLI 2.0، أو تشغيل Azure CLI في Azure Cloud Shell.

تثبيت أحدث إصدار من ملحق Batch باستخدام أمر Azure CLI التالي:

az extension add --name azure-batch-cli-extensions

لمزيد من المعلومات حول إضافة Batch CLI وخيارات التثبيت الإضافية، راجع مستودع GitHub.

لاستخدام ميزات ملحق CLI، تحتاج إلى حساب Azure Batch والأوامر التي تنقل الملفات من وإلى التخزين، حساب تخزين مرتبط.

لتسجيل الدخول إلى حساب Batch باستخدام Azure CLI، راجع إدارة موارد الدفعات باستخدام Azure CLI.

القوالب

قوالب Azure Batch مشابهة لقوالب Azure Resource Manager، في الوظائف وبناء الجملة. وهي ملفات JSON تحتوي على أسماء خصائص العنصر وقيمه، ولكنها تضيف المفاهيم الرئيسية التالية:

  • المعاملات: تسمح بتحديد قيم الخصائص في قسم الجسم، مع توفير قيم المعلمات فقط عند استخدام القالب. على سبيل المثال، يمكن وضع التعريف الكامل لمجموعة في النص ومعرفة معلمة واحدة فقط ل poolId؛ لذلك يجب توفير سلسلة معرف تجمع فقط لإنشاء مجموعة. يمكن تأليف نص القالب من قبل شخص على دراية ب Batch والتطبيقات التي سيتم تشغيلها بواسطة Batch؛ يجب توفير قيم المعلمات المعرفة من قبل المؤلف فقط عند استخدام القالب. يتيح هذا للمستخدمين الذين ليس لديهم أي معرفة تفصيلية ب Batch و/أو التطبيق استخدام القوالب.
  • المتغيرات: يسمح بتحديد قيم المعلمات البسيطة أو المعقدة في مكان واحد واستخدامها في مكان أو أكثر في جسم القالب. يمكن للمتغيرات تبسيط حجم القالب وتقليله، بالإضافة إلى جعله أكثر قابلية للصيانة من خلال وجود موقع واحد لتغيير الخصائص.
  • البنى ذات المستوى الأعلى: بعض الهياكل الأعلى المستوى متوفرة في القالب والتي لم تتوفر بعد في واجهات برمجة التطبيقات الدفعية. على سبيل المثال، يمكن تعريف مصنع مهام في قالب وظيفة يقوم بإنشاء مهام متعددة للوظيفة، باستخدام تعريف مهمة شائع. تتجنب هذه البنيات الحاجة إلى التعليمات البرمجية لإنشاء ملفات JSON متعددة ديناميكيا، مثل ملف واحد لكل مهمة، بالإضافة إلى إنشاء ملفات البرنامج النصي لتثبيت التطبيقات عبر مدير الحزم.

قوالب التجمع

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

فيما يلي مثال على قالب ينشئ مجموعة من أجهزة Linux الظاهرية مع تثبيت ffmpeg. لاستخدامه، قم بتوفير سلسلة معرف التجمع فقط وعدد الأجهزة الظاهرية في التجمع:

{
    "parameters": {
        "nodeCount": {
            "type": "int",
            "metadata": {
                "description": "The number of pool nodes"
            }
        },
        "poolId": {
            "type": "string",
            "metadata": {
                "description": "The pool ID "
            }
        }
    },
    "pool": {
        "type": "Microsoft.Batch/batchAccounts/pools",
        "apiVersion": "2016-12-01",
        "properties": {
            "id": "[parameters('poolId')]",
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "Canonical",
                    "offer": "UbuntuServer",
                    "sku": "20.04-LTS",
                    "version": "latest"
                },
                "nodeAgentSKUId": "batch.node.ubuntu 20.04"
            },
            "vmSize": "STANDARD_D3_V2",
            "targetDedicatedNodes": "[parameters('nodeCount')]",
            "enableAutoScale": false,
            "taskSlotsPerNode": 1,
            "packageReferences": [
                {
                    "type": "aptPackage",
                    "id": "ffmpeg"
                }
            ]
        }
    }
}

إذا تمت تسمية ملف القالب pool-ffmpeg.json، فاستدعي القالب كما يلي:

az batch pool create --template pool-ffmpeg.json

يطلب منك مؤشر القيادة تقديم قيم ل و poolIdnodeCount parameters. يمكنك أيضا توفير المعلمات في ملف JSON. على سبيل المثال:

{
  "poolId": {
    "value": "mypool"
  },
  "nodeCount": {
    "value": 2
  }
}

إذا تمت تسمية ملف JSON للمعلمات pool-parameters.json، فاستدعي القالب كما يلي:

az batch pool create --template pool-ffmpeg.json --parameters pool-parameters.json

قوالب الوظائف

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

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

{
    "parameters": {
        "poolId": {
            "type": "string",
            "metadata": {
                "description": "The name of Azure Batch pool which runs the job"
            }
        },
        "jobId": {
            "type": "string",
            "metadata": {
                "description": "The name of Azure Batch job"
            }
        },
        "resolution": {
            "type": "string",
            "defaultValue": "428x240",
            "allowedValues": [
                "428x240",
                "854x480"
            ],
            "metadata": {
                "description": "Target video resolution"
            }
        }
    },
    "job": {
        "type": "Microsoft.Batch/batchAccounts/jobs",
        "apiVersion": "2016-12-01",
        "properties": {
            "id": "[parameters('jobId')]",
            "constraints": {
                "maxWallClockTime": "PT5H",
                "maxTaskRetryCount": 1
            },
            "poolInfo": {
                "poolId": "[parameters('poolId')]"
            },
            "taskFactory": {
                "type": "taskPerFile",
                "source": {
                    "fileGroup": "ffmpeg-input"
                },
                "repeatTask": {
                    "commandLine": "ffmpeg -i {fileName} -y -s [parameters('resolution')] -strict -2 {fileNameWithoutExtension}_[parameters('resolution')].mp4",
                    "resourceFiles": [
                        {
                            "blobSource": "{url}",
                            "filePath": "{fileName}"
                        }
                    ],
                    "outputFiles": [
                        {
                            "filePattern": "{fileNameWithoutExtension}_[parameters('resolution')].mp4",
                            "destination": {
                                "autoStorage": {
                                    "path": "{fileNameWithoutExtension}_[parameters('resolution')].mp4",
                                    "fileGroup": "ffmpeg-output"
                                }
                            },
                            "uploadOptions": {
                                "uploadCondition": "TaskSuccess"
                            }
                        }
                    ]
                }
            },
            "onAllTasksComplete": "terminatejob"
        }
    }
}

إذا تمت تسمية ملف القالب job-ffmpeg.json، فاستدعي القالب كما يلي:

az batch job create --template job-ffmpeg.json

كما كان من قبل، يطالبك CLI بتوفير قيم للمعلمات. يمكنك أيضا توفير المعلمات في ملف JSON.

استخدام القوالب في Batch Explorer

يمكنك رفع قالب CLI من الدفعات إلى تطبيق سطح مكتب مستكشف الدفعات لإنشاء مجموعة أو مهمة دفعات. يمكنك أيضا التحديد من مجموعة محددة مسبقا وقوالب الوظائف في معرض Batch Explorer.

لتحميل قالب:

  1. في مستكشف الدفعات، اختر قوالب Gallery>المحلية.
  2. حدد تجمعا محليا أو قالب مهمة أو اسحبه وأفلته.
  3. اختر استخدام هذا القالب، واتبع التعليمات على الشاشة.

مجموعات الملفات ونقل الملفات

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

تساوي مجموعة الملفات حاوية تم إنشاؤها في حساب تخزين Azure. قد تحتوي مجموعة الملفات على مجلدات فرعية.

يوفر ملحق Batch CLI أوامر لتحميل الملفات من العميل إلى مجموعة ملفات محددة وتنزيل الملفات من مجموعة الملفات المحددة إلى عميل.

az batch file upload --local-path c:\source_videos\*.mp4
    --file-group ffmpeg-input

az batch file download --file-group ffmpeg-output --local-path
    c:\output_lowres_videos

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

الملخص

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

جرب إضافة Batch لجهاز Azure CLI وقدم لنا أي ملاحظات أو اقتراحات، سواء في تعليقات هذا المقال أو عبر مستودع Batch Community.

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

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