Share via


Utilizar Azure Batch modelos da CLI e a transferência de ficheiros

Aviso

A extensão da CLI do Batch Azure será descontinuada a 30 de setembro de 2024. Desinstale a extensão com o comando az extension remove --name azure-batch-cli-extensions.

Ao utilizar uma extensão do Batch para a CLI do Azure, os utilizadores podem executar tarefas do Batch sem escrever código.

Crie e utilize ficheiros de modelo JSON com a CLI do Azure para criar conjuntos, tarefas e tarefas do Batch. Utilize comandos de extensão da CLI para carregar facilmente ficheiros de entrada de tarefas para a conta de armazenamento associada à conta do Batch e transferir ficheiros de saída da tarefa.

Nota

Os ficheiros JSON não suportam a mesma funcionalidade que os modelos de Resource Manager do Azure. Devem ser formatados como o corpo do pedido REST não processado. A extensão da CLI não altera os comandos existentes, mas tem uma opção de modelo semelhante que adiciona funcionalidade parcial do modelo do Azure Resource Manager. Veja Azure Batch Extensões da CLI para Windows, Mac e Linux.

Descrição Geral

Uma extensão da CLI do Azure permite que o Batch seja utilizado ponto a ponto por utilizadores que não sejam programadores. Com apenas comandos da CLI, pode criar um conjunto, carregar dados de entrada, criar tarefas e tarefas associadas e transferir os dados de saída resultantes. Não é necessário código adicional. Execute os comandos da CLI diretamente ou integre-os em scripts.

Os modelos do Batch baseiam-se no suporte existente do Batch na CLI do Azure para ficheiros JSON para especificar valores de propriedade ao criar conjuntos, tarefas, tarefas e outros itens. Os modelos do Batch adicionam as seguintes capacidades:

  • Os parâmetros podem ser definidos. Quando o modelo é utilizado, apenas os valores dos parâmetros são especificados para criar o item, com outros valores de propriedade de item especificados no corpo do modelo. Um utilizador que compreenda o Batch e as aplicações a executar pelo Batch pode criar modelos, especificando valores de propriedade de conjunto, tarefa e tarefa. Um utilizador menos familiarizado com o Batch e/ou as aplicações só precisa de especificar os valores para os parâmetros definidos.

  • As fábricas de tarefas de trabalho criam uma ou mais tarefas associadas a uma tarefa, evitando a necessidade de muitas definições de tarefas serem criadas e simplificando significativamente a submissão de tarefas.

Normalmente, as tarefas utilizam ficheiros de dados de entrada e produzem ficheiros de dados de saída. Uma conta de armazenamento está associada, por predefinição, a cada conta do Batch. Pode transferir ficheiros de e para esta conta de armazenamento com a CLI do Azure, sem codificação e sem credenciais de armazenamento.

Por exemplo, o ffmpeg é uma aplicação popular que processa ficheiros de áudio e vídeo. Ao utilizar a extensão da CLI Azure Batch, pode facilitar a invocação do ffmpeg para transcodificar ficheiros de vídeo de origem para diferentes resoluções. O processo pode ter o seguinte aspeto:

  • Criar um modelo de conjunto. O utilizador que está a criar o modelo sabe como chamar a aplicação ffmpeg e os respetivos requisitos; especificam o SO adequado, o tamanho da VM, a forma como o ffmpeg é instalado (a partir de um pacote de aplicação ou através de um gestor de pacotes, por exemplo) e outros valores de propriedade do conjunto. Os parâmetros são criados, pelo que, quando o modelo é utilizado, apenas o ID do conjunto e o número de VMs têm de ser especificados.
  • Criar um modelo de tarefa. O utilizador que está a criar o modelo sabe como o ffmpeg tem de ser invocado para transcodificar vídeo de origem para uma resolução diferente e especifica a linha de comandos da tarefa; também sabem que existe uma pasta que contém os ficheiros de vídeo de origem, com uma tarefa necessária por ficheiro de entrada.
  • Um utilizador final com um conjunto de ficheiros de vídeo para transcodificar cria primeiro um conjunto com o modelo de conjunto, especificando apenas o ID do conjunto e o número de VMs necessárias. Em seguida, podem carregar os ficheiros de origem para transcodificar. Em seguida, pode submeter uma tarefa com o modelo de tarefa, especificando apenas o ID do conjunto e a localização dos ficheiros de origem carregados. A tarefa do Batch é criada, com uma tarefa por ficheiro de entrada a ser gerada. Por fim, os ficheiros de saída transcodificados podem ser transferidos.

Instalação

Para instalar a extensão da CLI Azure Batch, instale primeiro a CLI 2.0 do Azure ou execute a CLI do Azure no Azure Cloud Shell.

Instale a versão mais recente da extensão do Batch com o seguinte comando da CLI do Azure:

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

Para obter mais informações sobre a extensão da CLI do Batch e opções de instalação adicionais, veja o repositório do GitHub.

Para utilizar as funcionalidades da extensão da CLI, precisa de uma conta Azure Batch e, para os comandos que transferem ficheiros de e para o armazenamento, uma conta de armazenamento ligada.

Para iniciar sessão numa conta do Batch com a CLI do Azure, veja Gerir recursos do Batch com a CLI do Azure.

Modelos

Azure Batch modelos são semelhantes aos modelos de Resource Manager do Azure, em funcionalidade e sintaxe. São ficheiros JSON que contêm nomes e valores de propriedades de itens, mas adicionam os seguintes conceitos principais:

  • Parâmetros: permita que os valores de propriedade sejam especificados numa secção do corpo, com apenas valores de parâmetros a precisarem de ser fornecidos quando o modelo é utilizado. Por exemplo, a definição completa de um conjunto pode ser colocada no corpo e apenas um parâmetro definido para poolId; apenas uma cadeia de ID do conjunto tem, portanto, de ser fornecida para criar um conjunto. O corpo do modelo pode ser criado por alguém com conhecimento do Batch e das aplicações a serem executadas pelo Batch; apenas os valores para os parâmetros definidos pelo autor têm de ser fornecidos quando o modelo é utilizado. Isto permite que os utilizadores sem conhecimentos aprofundados do Batch e/ou da aplicação utilizem os modelos.
  • Variáveis: permita que os valores de parâmetros simples ou complexos sejam especificados num único local e utilizados num ou mais locais no corpo do modelo. As variáveis podem simplificar e reduzir o tamanho do modelo, bem como torná-lo mais responsável por ter uma localização para alterar as propriedades.
  • Construções de nível superior: algumas construções de nível superior estão disponíveis no modelo que ainda não estão disponíveis nas APIs do Batch. Por exemplo, uma fábrica de tarefas pode ser definida num modelo de tarefa que cria várias tarefas para a tarefa com uma definição de tarefa comum. Estas construções evitam a necessidade de codificar para criar dinamicamente vários ficheiros JSON, como um ficheiro por tarefa, bem como criar ficheiros de script para instalar aplicações através de um gestor de pacotes.

Modelos de conjunto

Os modelos de conjunto suportam as capacidades de modelo padrão de parâmetros e variáveis. Também suportam referências de pacotes, que, opcionalmente, permitem que o software seja copiado para nós de conjunto através de gestores de pacotes. O gestor de pacotes e o ID do pacote são especificados na referência do pacote. Ao declarar um ou mais pacotes, evita criar um script que obtém os pacotes necessários, instalar o script e executar o script em cada nó do conjunto.

Segue-se um exemplo de um modelo que cria um conjunto de VMs do Linux com o ffmpeg instalado. Para utilizá-la, forneça apenas uma cadeia de ID do conjunto e o número de VMs no conjunto:

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

Se o ficheiro de modelo tiver o nome pool-ffmpeg.json, invoque o modelo da seguinte forma:

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

A CLI pede-lhe para fornecer valores para os poolId parâmetros e nodeCount . Também pode fornecer os parâmetros num ficheiro JSON. Por exemplo:

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

Se o ficheiro JSON dos parâmetros tiver o nome pool-parameters.json, invoque o modelo da seguinte forma:

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

Modelos de tarefas

Os modelos de tarefas suportam as capacidades de modelo padrão de parâmetros e variáveis. Também suportam a construção da fábrica de tarefas , que cria várias tarefas para uma tarefa a partir de uma definição de tarefa. São suportados três tipos de fábrica de tarefas: varrimento paramétrico, tarefa por ficheiro e coleção de tarefas.

Segue-se um exemplo de um modelo que cria uma tarefa para transcodificar ficheiros de vídeo MP4 com ffmpeg para uma de duas resoluções inferiores. Cria uma tarefa por ficheiro de vídeo de origem. Veja Grupos de ficheiros e transferência de ficheiros para obter mais informações sobre grupos de ficheiros para entrada e saída de tarefas.

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

Se o ficheiro de modelo tiver o nome job-ffmpeg.json, invoque o modelo da seguinte forma:

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

Tal como anteriormente, a CLI pede-lhe para fornecer valores para os parâmetros. Também pode fornecer os parâmetros num ficheiro JSON.

Utilizar modelos no Batch Explorer

Pode carregar um modelo da CLI do Batch para a aplicação de ambiente de trabalho do Batch Explorer para criar um conjunto ou tarefa do Batch. Também pode selecionar a partir de conjuntos predefinidos e modelos de tarefas na Galeria do Batch Explorer.

Para carregar um modelo:

  1. No Batch Explorer, selecioneModelos locaisda Galeria>.
  2. Selecione ou arraste e largue um conjunto local ou modelo de tarefa.
  3. Selecione Utilizar este modelo e siga as instruções apresentadas no ecrã.

Grupos de ficheiros e transferência de ficheiros

A maioria dos trabalhos e tarefas requer ficheiros de entrada e produz ficheiros de saída. Normalmente, os ficheiros de entrada e os ficheiros de saída são transferidos do cliente para o nó ou do nó para o cliente. O Azure Batch extensão da CLI retira a transferência de ficheiros e utiliza a conta de armazenamento que pode associar a cada conta do Batch.

Um grupo de ficheiros equivale a um contentor que é criado na conta de armazenamento do Azure. O grupo de ficheiros pode ter subpastas.

A extensão da CLI do Batch fornece comandos para carregar ficheiros do cliente para um grupo de ficheiros especificado e transferir ficheiros do grupo de ficheiros especificado para um cliente.

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

Os modelos de conjuntos e tarefas permitem que os ficheiros armazenados em grupos de ficheiros sejam especificados para copiar para nós de conjunto ou para nós de conjuntos de volta para um grupo de ficheiros. Por exemplo, no modelo de tarefa especificado anteriormente, o grupo de ficheiros ffmpeg-input é especificado para a fábrica de tarefas como a localização dos ficheiros de vídeo de origem copiados para o nó para transcodificação. O grupo de ficheiros ffmpeg-output é a localização onde os ficheiros de saída transcodificados são copiados do nó que executa cada tarefa.

Resumo

Atualmente, o suporte de transferência de ficheiros e modelos só foi adicionado à CLI do Azure. O objetivo é expandir a audiência que pode utilizar o Batch para os utilizadores que não precisam de desenvolver código com as APIs do Batch, como investigadores e utilizadores de TI. Sem codificação, os utilizadores com conhecimento do Azure, do Batch e das aplicações a serem executadas pelo Batch podem criar modelos para criação de conjuntos e tarefas. Com os parâmetros de modelo, os utilizadores sem conhecimentos detalhados do Batch e das aplicações podem utilizar os modelos.

Experimente a extensão do Batch para a CLI do Azure e forneça-nos comentários ou sugestões, quer nos comentários para este artigo, quer através do repositório Comunidade do Batch.

Passos seguintes