Azure Batch CLI şablonlarını ve dosya aktarımını kullanma

Uyarı

Batch Azure CLI uzantısı 30 Eylül 2024'te kullanımdan kaldırılacaktır. Lütfen komutuyla az extension remove --name azure-batch-cli-extensionsuzantıyı kaldırın.

Kullanıcılar, Azure CLI'ya batch uzantısını kullanarak kod yazmadan Batch işlerini çalıştırabilir.

Batch havuzları, işleri ve görevleri oluşturmak için Azure CLI ile JSON şablon dosyaları oluşturun ve kullanın. İş giriş dosyalarını Batch hesabıyla ilişkili depolama hesabına kolayca yüklemek ve iş çıktı dosyalarını indirmek için CLI uzantısı komutlarını kullanın.

Not

JSON dosyaları, Azure Resource Manager şablonlarıyla aynı işlevselliği desteklemez. Bunların ham REST isteği gövdesi gibi biçimlendirilmesi amaçlandı. CLI uzantısı mevcut komutları değiştirmez, ancak kısmi Azure Resource Manager şablon işlevselliği ekleyen benzer bir şablon seçeneğine sahiptir. Bkz. Windows, Mac ve Linux için AZURE BATCH CLI Uzantıları.

Genel Bakış

Azure CLI uzantısı, Batch'in geliştirici olmayan kullanıcılar tarafından uçtan uca kullanılmasını sağlar. Yalnızca CLI komutlarıyla bir havuz oluşturabilir, giriş verilerini karşıya yükleyebilir, işler ve ilişkili görevler oluşturabilir ve sonuçta elde edilen çıkış verilerini indirebilirsiniz. Ek kod gerekmez. CLI komutlarını doğrudan çalıştırın veya betiklere tümleştirin.

Batch şablonları, havuzlar, işler, görevler ve diğer öğeleri oluştururken özellik değerlerini belirtmek üzere JSON dosyaları için Azure CLI'de mevcut Batch desteğine dayalıdır. Batch şablonları aşağıdaki özellikleri ekler:

  • Parametreler tanımlanabilir. Şablon kullanıldığında, öğeyi oluşturmak için yalnızca parametre değerleri belirtilir ve diğer öğe özelliği değerleri şablon gövdesinde belirtilir. Batch'i ve Batch tarafından çalıştırılacak uygulamaları anlayan bir kullanıcı havuz, iş ve görev özelliği değerlerini belirterek şablonlar oluşturabilir. Batch ve/veya uygulamalar hakkında daha az bilgi sahibi olan bir kullanıcının yalnızca tanımlı parametrelerin değerlerini belirtmesi gerekir.

  • İş görevi fabrikaları, birçok görev tanımının oluşturulması gereğini ortadan kaldırarak ve iş gönderimini önemli ölçüde basitleştirerek bir işle ilişkili bir veya daha fazla görev oluşturur.

İşler genellikle giriş veri dosyalarını kullanır ve çıkış veri dosyaları oluşturur. Her Batch hesabıyla varsayılan olarak bir depolama hesabı ilişkilendirilir. Kodlama ve depolama kimlik bilgileri olmadan Azure CLI kullanarak bu depolama hesabına ve bu hesaptan dosya aktarabilirsiniz.

Örneğin , ffmpeg ses ve video dosyalarını işleyen popüler bir uygulamadır. Azure Batch CLI uzantısını kullanarak, bir kullanıcının kaynak video dosyalarını farklı çözünürlüklerde kodlamak için ffmpeg çağırmasını kolaylaştırabilirsiniz. İşlem şöyle görünebilir:

  • Havuz şablonu oluşturun. Şablonu oluşturan kullanıcı ffmpeg uygulamasını ve gereksinimlerini çağırmayı bilir; uygun işletim sistemini, VM boyutunu, ffmpeg'in nasıl yükleneceğini (örneğin bir uygulama paketinden veya paket yöneticisi kullanarak) ve diğer havuz özelliği değerlerini belirtir. Parametreler oluşturulur, bu nedenle şablon kullanıldığında yalnızca havuz kimliği ve VM sayısı belirtilmelidir.
  • İş şablonu oluşturun. Şablonu oluşturan kullanıcı, kaynak videoyu farklı bir çözünürlüğe kodlamak için ffmpeg'in nasıl çağrılması gerektiğini bilir ve görev komut satırını belirtir; Ayrıca, giriş dosyası başına bir görev gerektiren kaynak video dosyalarını içeren bir klasör olduğunu da bilirler.
  • Koda dönüştürülecek bir dizi video dosyası olan son kullanıcı önce havuz şablonunu kullanarak yalnızca havuz kimliğini ve gereken VM sayısını belirterek bir havuz oluşturur. Daha sonra kaynak dosyaları kod dönüştürmeye yükleyebilirler. Daha sonra iş şablonu kullanılarak yalnızca havuz kimliği ve karşıya yüklenen kaynak dosyaların konumu belirterek bir iş gönderilebilir. Batch işi oluşturulur ve giriş dosyası başına bir görev oluşturulur. Son olarak, dönüştürülen çıkış dosyaları indirilebilir.

Yükleme

Azure Batch CLI uzantısını yüklemek için önce Azure CLI 2.0'ı yükleyin veya Azure CLI'yi Azure Cloud Shell'de çalıştırın.

Aşağıdaki Azure CLI komutunu kullanarak Batch uzantısının en son sürümünü yükleyin:

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

Batch CLI uzantısı ve ek yükleme seçenekleri hakkında daha fazla bilgi için GitHub deposuna bakın.

CLI uzantısı özelliklerini kullanmak için bir Azure Batch hesabına ve dosyaları depolama alanına ve depolamadan aktaran komutlar için bağlı bir depolama hesabına ihtiyacınız vardır.

Azure CLI ile batch hesabında oturum açmak için bkz. Azure CLI ile Batch kaynaklarını yönetme.

Şablonlar

Azure Batch şablonları, işlevsellik ve söz diziminde Azure Resource Manager şablonlarına benzer. Bunlar, öğe özellik adları ve değerleri içeren JSON dosyalarıdır, ancak aşağıdaki ana kavramları ekler:

  • Parametreler: Özellik değerlerinin bir gövde bölümünde belirtilmesine izin verin; şablon kullanıldığında yalnızca parametre değerlerinin sağlanması gerekir. Örneğin, bir havuzun tam tanımı gövdeye yerleştirilebilir ve için tanımlanan yalnızca bir parametre olabilir; bu nedenle havuz oluşturmak için poolIdyalnızca bir havuz kimliği dizesinin sağlanması gerekir. Şablon gövdesi, Batch ve Batch tarafından çalıştırılacak uygulamalar hakkında bilgi sahibi olan bir kişi tarafından yazılabilir; şablon kullanıldığında yalnızca yazar tanımlı parametrelerin değerleri sağlanmalıdır. Bu, ayrıntılı Batch ve/veya uygulama bilgisi olmayan kullanıcıların şablonları kullanmasına olanak tanır.
  • Değişkenler: Basit veya karmaşık parametre değerlerinin tek bir yerde belirtilmesine ve şablon gövdesindeki bir veya daha fazla yerde kullanılmasına izin verin. Değişkenler, şablonun boyutunu basitleştirip küçültebilir ve özellikleri değiştirmek için tek bir konuma sahip olarak şablonun daha sürdürülebilir olmasını sağlayabilir.
  • Üst düzey yapılar: Şablonda henüz Batch API'lerinde bulunmayan bazı üst düzey yapılar kullanılabilir. Örneğin, bir görev fabrikası, ortak bir görev tanımı kullanılarak iş için birden çok görev oluşturan bir iş şablonunda tanımlanabilir. Bu yapılar, görev başına bir dosya gibi birden çok JSON dosyasını dinamik olarak oluşturmanın yanı sıra paket yöneticisi aracılığıyla uygulama yüklemek için betik dosyaları oluşturma gereksinimini önler.

Havuz şablonları

Havuz şablonları, parametrelerin ve değişkenlerin standart şablon özelliklerini destekler. Ayrıca, isteğe bağlı olarak paket yöneticileri kullanılarak yazılımın havuz düğümlerine kopyalanmasına izin veren paket başvurularını da destekler. Paket yöneticisi ve paket kimliği paket başvurusunda belirtilir. Bir veya daha fazla paket bildirerek, gerekli paketleri alan, betiği yükleyen ve betiği her havuz düğümünde çalıştıran bir betik oluşturmaktan kaçınırsınız.

Aşağıda, ffmpeg yüklü linux VM'lerinin havuzunu oluşturan bir şablon örneği verilmiştir. Bunu kullanmak için yalnızca bir havuz kimliği dizesi ve havuzdaki VM sayısını sağlayın:

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

Şablon dosyasının adı pool-ffmpeg.json ise, şablonu şu şekilde çağırın:

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

CLI, ve nodeCount parametreleri için poolId değer sağlamanızı ister. Parametreleri bir JSON dosyasında da sağlayabilirsiniz. Örnek:

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

Parameters JSON dosyasının adı pool-parameters.json ise şablonu şu şekilde çağırın:

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

İş şablonları

İş şablonları, parametrelerin ve değişkenlerin standart şablon özelliklerini destekler. Ayrıca, bir görev tanımından bir iş için birden çok görev oluşturan görev fabrikası yapısını da desteklerler. Üç tür görev fabrikası desteklenir: parametrik süpürme, dosya başına görev ve görev toplama.

Aşağıda, MP4 video dosyalarını ffmpeg ile iki düşük çözünürlükte birine dönüştürme işi oluşturan bir şablon örneği verilmiştir. Kaynak video dosyası başına bir görev oluşturur. İş girişi ve çıkışı için dosya grupları hakkında daha fazla bilgi için bkz. Dosya grupları ve dosya aktarımı.

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

Şablon dosyasının adı job-ffmpeg.json ise, şablonu şu şekilde çağırın:

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

Daha önce olduğu gibi, CLI sizden parametreler için değer sağlamanızı ister. Parametreleri bir JSON dosyasında da sağlayabilirsiniz.

Batch Explorer'da şablonları kullanma

Batch havuzu veya işi oluşturmak için Batch CLI şablonunu Batch Gezgini masaüstü uygulamasına yükleyebilirsiniz. Batch Gezgini Galerisi'nde önceden tanımlanmış havuz ve iş şablonları arasından da seçim yapabilirsiniz.

Şablonu karşıya yüklemek için:

  1. Batch Gezgini'nde GaleriYerel şablonları'nı> seçin.
  2. Yerel havuzu veya iş şablonunu seçin veya sürükleyip bırakın.
  3. Bu şablonu kullan'ı seçin ve ekrandaki istemleri izleyin.

Dosya grupları ve dosya aktarımı

Çoğu iş ve görev, giriş dosyaları gerektirir ve çıkış dosyaları üretir. Genellikle giriş dosyaları ve çıkış dosyaları istemciden düğüme veya düğümden istemciye aktarılır. Azure Batch CLI uzantısı, dosya aktarımını soyutlar ve her Batch hesabıyla ilişkilendirebileceğiniz depolama hesabını kullanır.

Dosya grubu, Azure depolama hesabında oluşturulan bir kapsayıcıya eşit. Dosya grubunun alt klasörleri olabilir.

Batch CLI uzantısı, istemciden belirli bir dosya grubuna dosya yüklemek ve belirtilen dosya grubundan istemciye dosya indirmek için komutlar sağlar.

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

Havuz ve iş şablonları, dosya gruplarında depolanan dosyaların havuz düğümlerine veya havuz düğümleri dışından bir dosya grubuna kopyalanmak üzere belirtilmesine izin verir. Örneğin, daha önce belirtilen iş şablonunda, görev fabrikası için dosya grubu ffmpeg-input , kod dönüştürme için düğüme kopyalanan kaynak video dosyalarının konumu olarak belirtilir. ffmpeg-output dosya grubu, kodlanmış çıkış dosyalarının her görevi çalıştıran düğümden kopyalandığı konumdur.

Özet

Şablon ve dosya aktarımı desteği şu anda yalnızca Azure CLI'ye eklenmiştir. Amaç, Batch'i kullanabilen hedef kitleyi, araştırmacılar ve BT kullanıcıları gibi Batch API'lerini kullanarak kod geliştirmesi gerekmeyen kullanıcılara genişletmektir. Kodlama olmadan Azure, Batch ve Batch tarafından çalıştırılacak uygulamalar hakkında bilgi sahibi olan kullanıcılar havuz ve iş oluşturmaya yönelik şablonlar oluşturabilir. Şablon parametreleriyle, Batch ve uygulamalar hakkında ayrıntılı bilgi sahibi olmayan kullanıcılar şablonları kullanabilir.

Azure CLI için Batch uzantısını deneyin ve bu makalenin yorumlarında veya Batch Community deposu aracılığıyla bize geri bildirim veya öneriler sağlayın.

Sonraki adımlar

  • Azure GitHub deposunda ayrıntılı yükleme ve kullanım belgelerini, örnekleri ve kaynak kodunu görüntüleyin.
  • Batch kaynaklarını oluşturmak ve yönetmek için Batch Gezgini'nin kullanımı hakkında daha fazla bilgi edinin.