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

تحذير

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

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

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

ملاحظة

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

نظرة عامة

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

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

  • إمكانية تعريف المعلمات. عند استخدام القالب، يتم تحديد قيم المعلمات فقط لإنشاء العنصر، مع تحديد قيم خصائص العنصر الأخرى في نص القالب. يمكن للمستخدم الذي يفهم Batch والتطبيقات المطلوب تشغيلها بواسطة 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، راجع إدارة موارد Batch باستخدام Azure CLI.

القوالب

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

  • المعلمات: تسمح بتحديد قيم الخصائص في قسم النص، مع قيم المعلمات فقط التي تحتاج إلى توفيرها عند استخدام القالب. على سبيل المثال، يمكن وضع تعريف كامل للتجمع في النص الأساسي وتحديد معلمة واحدة فقط لـ poolId؛ لذا فلا حاجة إلا لتوفير سلسلة معرف تجمع لإنشاء تجمع. يمكن تأليف نص القالب من قبل شخص لديه معرفة بـ Batch والتطبيقات التي سيتم تشغيلها من قبل 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

يطالبك CLI بتوفير قيم poolId و nodeCount للمعلمات. يمكنك أيضا توفير المعلمات في ملف 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

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

لتحميل قالب:

  1. في Batch Explorer، حدد Gallery>Local templates.
  2. حدد قالب تجمع أو وظيفة محلي، أو اسحبه وأسقطه.
  3. حدد Use this template، واتبع المطالبات التي تظهر على الشاشة.

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

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

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

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

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