Поделиться через


** Использование шаблонов CLI и передачи файлов пакетной службы Azure

Предупреждение

Расширение Пакетной службы Azure CLI будет прекращено 30 сентября 2024 г. Удалите расширение с помощью команды az extension remove --name azure-batch-cli-extensions.

С помощью расширения пакетной службы в Azure CLI пользователи могут выполнять задания пакетной службы без написания кода.

Создание и использование файлов шаблонов JSON с помощью Azure CLI для создания пулов Azure Batch, заданий и задач. Используйте команды расширения CLI, чтобы легко отправлять входные файлы заданий в учетную запись хранения, связанную с учетной записью пакетной службы, и скачать выходные файлы заданий.

Замечание

JSON-файлы не поддерживают те же функции, что и шаблоны Azure Resource Manager. Они должны быть отформатированы как необработанный текст запроса REST. Расширение CLI не изменяет существующие команды, но имеет аналогичный параметр шаблона, который добавляет частичную функциональность шаблона Azure Resource Manager. Ознакомьтесь с расширениями командной строки пакетной службы Azure для Windows, Mac и Linux.

Обзор

Расширение для Azure CLI позволяет использовать Batch от начала до конца пользователям, которые не являются разработчиками. С помощью только команд CLI можно создать пул, отправить входные данные, создать задания и связанные задачи и скачать полученные выходные данные. Дополнительный код не требуется. Запустите команды CLI напрямую или интегрируйте их в скрипты.

Шаблоны пакетной службы создаются на основе существующей поддержки пакетной службы в Azure CLI для JSON-файлов, чтобы указать значения свойств при создании пулов, заданий, задач и других элементов. Шаблоны пакетной обработки добавляют следующие возможности:

  • Параметры можно определить. Если шаблон используется, для создания элемента указываются только значения параметров с другими значениями свойств элемента, указанными в тексте шаблона. Пользователь, который понимает пакетную службу и приложения, которые будут запускаться пакетной службой, может создавать шаблоны, указывать пул, задания и значения свойств задачи. Пользователь, менее знакомый с пакетной службой и (или) приложениями, должен указывать только значения для определенных параметров.

  • Фабрики задач для задания создают одну или несколько задач, связанных с заданием, избегая необходимости в создании множества определений задач и значительно упрощает отправку заданий.

Задания обычно используют входные файлы данных и создают выходные файлы данных. Учётная запись хранения по умолчанию связана с каждой учётной записью Batch. Файлы можно передавать в эту учетную запись хранения с помощью Azure CLI без написания кода и учетных данных хранения.

Например, ffmpeg — это популярное приложение, которое обрабатывает звуковые и видеофайлы. С помощью расширения Командной строки пакетной службы Azure можно упростить вызов ffmpeg для преобразования исходных видеофайлов в разные разрешения. Процесс может выглядеть следующим образом:

  • Создайте шаблон пула. Пользователь, создащий шаблон, знает, как вызвать приложение ffmpeg и его требования; они указывают соответствующую ОС, размер виртуальной машины, способ установки ffmpeg (из пакета приложения или с помощью диспетчера пакетов, например) и других значений свойств пула. Параметры создаются таким образом, когда используется шаблон, необходимо указать только идентификатор пула и количество виртуальных машин.
  • Создайте шаблон задания. Пользователь, создающий шаблон, знает, как необходимо вызвать ffmpeg для преобразования исходного видео в другое разрешение и указывает командную строку задачи; они также знают, что есть папка, содержащая исходные видеофайлы, с задачей, необходимой для каждого входного файла.
  • Конечный пользователь с набором видеофайлов для перекодирования сначала создает пул с помощью шаблона пула, указав только идентификатор пула и необходимое количество виртуальных машин. Затем они могут загрузить исходные файлы для транскодирования. Затем задание можно отправить с помощью шаблона задания, указав только идентификатор пула и расположение отправленных исходных файлов. Задание пакетной службы создается с одной задачей для каждого создаваемого входного файла. Наконец, можно скачать транскодированные выходные файлы.

Установка

Чтобы установить расширение Azure Batch CLI, сначала установите Azure CLI 2.0 или запустите Azure CLI в Azure Cloud Shell.

Установите последнюю версию расширения Batch с помощью следующей команды Azure CLI:

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

Дополнительные сведения о расширении командной строки пакетной службы и дополнительных параметрах установки см. в репозитории GitHub.

Чтобы использовать функции расширения CLI, вам нужна учетная запись Azure Batch. Для выполнения команд, которые передают файлы в хранилище и из него, требуется связанная учетная запись хранения.

Сведения о входе в учетную запись пакетной службы с помощью Azure CLI см. в статье "Управление ресурсами пакетной службы" с помощью Azure CLI.

Шаблоны

Шаблоны пакетной службы Azure похожи на шаблоны Azure Resource Manager в функциональных возможностях и синтаксисе. Они представляют собой JSON-файлы, содержащие имена и значения свойств элементов, но добавьте следующие основные понятия:

  • Параметры. Разрешить указывать значения свойств в разделе текста, при использовании шаблона необходимо указать только значения параметров. Например, полное определение пула может быть помещено в текст и только один параметр, определенный для poolId; для создания пула необходимо предоставить только строку идентификатора пула. Текст шаблона может быть создан кем-либо с знаниями о пакетной службе и приложениях, которые будут выполняться пакетной службой; При использовании шаблона необходимо указать только значения для параметров, определенных автором. Это позволяет пользователям без каких-либо подробных знаний пакетной службы и (или) приложений использовать шаблоны.
  • Переменные. Разрешить указывать простые или сложные значения параметров в одном месте и использовать в одном или нескольких местах в тексте шаблона. Переменные могут упростить и уменьшить размер шаблона, а также сделать его более поддерживаемым, имея одно расположение для изменения свойств.
  • Конструкции более высокого уровня: некоторые конструкции более высокого уровня доступны в шаблоне, который еще не доступен в API пакетной службы. Например, фабрика заданий может быть задана в шаблоне задания, который создает несколько задач для выполнения, используя общее определение задания. Эти конструкции позволяют избежать необходимости динамически создавать несколько 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

Интерфейс командной строки предлагает указать значения для параметров 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

Как и раньше, интерфейс командной строки запрашивает указать значения параметров. Можно также указать параметры в JSON-файле.

Использование шаблонов в Пакетном обозревателе

Вы можете загрузить шаблон CLI пакетной службы в настольное приложение Batch Explorer, чтобы создать пул пакетной службы или задание. Вы также можете выбрать из предопределенного пула и шаблонов заданий в коллекции Batch Explorer.

Чтобы отправить шаблон, выполните приведенные действия.

  1. В пакетном обозревателе выберите Галерея>локальные шаблоны.
  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. Цель состоит в том, чтобы расширить аудиторию, которая может использовать пакетную службу для пользователей, которые не должны разрабатывать код с помощью API пакетной службы, таких как исследователи и ИТ-пользователи. Без написания кода пользователи с знаниями о Azure, пакетной службе и приложениях, которые будут запускаться пакетной службой, могут создавать шаблоны для создания пула и заданий. С параметрами шаблона пользователи, не обладающие подробными знаниями о пакетной обработке и приложениях, могут использовать шаблоны.

Испытайте Batch расширение для Azure CLI и предоставьте нам любые отзывы или предложения в комментариях к этой статье или через репозиторий Batch Community.

Дальнейшие действия

  • Просмотрите подробную документацию по установке и использованию, примеры и исходный код в репозитории Azure GitHub.
  • Дополнительные сведения об использовании Batch Explorer для создания ресурсов пакетной службы и управления ими.