مشاركة عبر


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

تحذير

سيتم إيقاف ملحق Batch Azure CLI في #B0 30 سبتمبر 2024 #A1 . الرجاء إلغاء تثبيت الملحق باستخدام الأمر #B0 .

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

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

ملاحظة

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

نظرة عامة

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

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

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

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

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

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

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

تركيب

لتثبيت ملحق Azure Batch CLI، #B0 أولا تثبيت Azure CLI 2.0 #A1 ، أو قم بتشغيل Azure CLI في #B2 Azure Cloud Shell #A3 .

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

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

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

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

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

القوالب

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

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

قوالب التجمع

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

فيما يلي مثال على قالب ينشئ مجموعة من أجهزة 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

يطالبك CLI بتوفير قيم للمعلمات #D0 #D1. يمكنك أيضا توفير المعلمات في ملف JSON. على سبيل المثال:

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

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

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

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

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

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

{
    "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

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

لتحميل قالب:

  1. في Batch Explorer، حدد #B0 Gallery #A1 #A2 #A3 Local templates #A4 .
  2. حدد تجمعا محليا أو قالب مهمة أو اسحبه وأفلته.
  3. حدد #B0 استخدم هذا القالب #A1 ، واتبع المطالبات التي تظهر على الشاشة.

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

تتطلب معظم الوظائف والمهام ملفات الإدخال وتنتج ملفات الإخراج. عادة، يتم نقل ملفات الإدخال وملفات الإخراج، إما من العميل إلى العقدة، أو من العقدة إلى العميل. يلخص ملحق 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

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

الملخص

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

جرب ملحق Batch ل Azure CLI وقدم لنا أي ملاحظات أو اقتراحات، إما في تعليقات هذه المقالة أو عبر #B0 Batch Community repo #A1 .

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

  • اعرض وثائق التثبيت والاستخدام التفصيلية والعينات ورمز المصدر في #B0 Azure GitHub repo #A1 .
  • تعرف على المزيد حول استخدام #B0 Batch Explorer #C1 لإنشاء موارد Batch وإدارتها.