Compartilhar via


Usar modelos CLI do Azure de Lote e o arquivo de transferência

Aviso

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

Usando uma extensão de lote para CLI do Azure, os usuários podem executar trabalhos em lotes sem escrever códigos.

Crie e use arquivos de modelo JSON com a CLI do Azure para criar pools, trabalhos e tarefas em lote. Use os comandos de extensão CLI para carregar facilmente os arquivos de entrada de trabalho na conta de armazenamento associada à conta do Lote e baixe os arquivos de saída de trabalho.

Observação

Os arquivos JSON não dão suporte à mesma funcionalidade que modelos do Azure Resource Manager. Elas devem ser formatadas como o corpo da solicitação REST bruta. A extensão da CLI não altera nenhum comando existente, mas tem uma opção de modelo semelhante que adiciona a funcionalidade de modelo do Azure Resource Manager parcial. Confira Extensões da CLI do Lote do Azure para Windows, Mac e Linux.

Visão geral

Uma extensão da CLI do Azure permite que o Lote seja usado de ponta a ponta por usuários que não são desenvolvedores. Somente com comandos CLI é possível criar um pool, carregar dados de entrada, criar trabalhos e tarefas associadas e baixar os dados de saída resultantes. Nenhum código adicional é necessário. Execute os comandos CLI diretamente ou integre-os aos scripts.

Os modelos do Lote compilam o suporte do Lote existente na CLI do Azure para que os arquivos JSON especifiquem os valores de propriedade ao criar pools, trabalhos, tarefas e outros itens. Os modelos do lote adicionam os seguintes recursos:

  • Parâmetros podem ser definidos. Quando o modelo é usado, somente os valores de parâmetro são especificados para criar o item, com outros valores de propriedade de item sendo especificados no corpo do modelo. Um usuário que entende o Lote e os aplicativos a serem executados pelo Lote pode criar modelos especificando os valores de propriedade de pool, de trabalho e de tarefa. Um usuário menos familiarizado com o Lote e/ou os aplicativos só precisa especificar os valores para os parâmetros definidos.

  • As fábricas de tarefa de trabalho criam uma ou mais tarefas associadas a um trabalho, evitando a necessidade de criar muitas definições de tarefa e simplificando significativamente o envio do trabalho.

Os trabalhos geralmente usam arquivos de dados de entrada e produzem arquivos de dados de saída. Uma conta de armazenamento é associada, por padrão, a cada conta do Lote. Transfira e receba arquivos dessa conta de armazenamento usando a CLI do Azure, sem códigos e sem credenciais de armazenamento.

Por exemplo, ffmpeg é um aplicativo popular que processa arquivos de áudio e vídeo. Com a extensão CLI de Lote do Azure, o usuário pode invocar ffmpeg facilmente para transcodificar arquivos de vídeo de origem para resoluções diferentes. O processo pode ser assim:

  • Crie um modelo de pool. O usuário criando o modelo sabe como chamar o aplicativo ffmpeg e os respectivos requisitos; ele especifica o sistema operacional apropriado, o tamanho da VM, como o ffmpeg é instalado (de um pacote de aplicativos ou usando um gerenciador de pacotes, por exemplo) e outros valores de propriedade do pool. Parâmetros são criados para que, quando o modelo for usado, somente a ID do pool e o número de VMs precisem ser especificados.
  • Crie um modelo de trabalho. O usuário criando o modelo sabe como o ffmpeg precisa ser invocado para transcodificar o vídeo de origem para uma resolução diferente e especifica a linha de comando da tarefa; ele também sabe que há uma pasta contendo os arquivos de vídeo de origem, com uma tarefa necessária por arquivo de entrada.
  • Um usuário final com um conjunto de arquivos de vídeo para transcodificar cria primeiro um pool usando o modelo de pool, especificando somente a ID do pool e o número de VMs necessário. Em seguida, ele pode carregar os arquivos de origem para transcodificar. Um trabalho pode ser enviado usando o modelo de trabalho, especificando somente a ID do pool e o local dos arquivos de origem carregados. O trabalho do Lote é criado, com uma tarefa por arquivo de entrada sendo gerada. Finalmente, os arquivos de saída transcodificados podem ser baixados.

Instalação

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

Instale a última versão da extensão do Lote, usando o comando da CLI do Azure seguir:

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

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

Para usar os recursos de extensão da CLI, você precisa de uma conta do Lote do Microsoft Azure e, para os comandos que transferir arquivos para e do armazenamento, uma conta de armazenamento vinculada.

Para fazer logon em uma conta do lote com a CLI do Azure, consulte Gerenciar recursos do lote com a CLI do Azure.

Modelos

Os modelos do Lote do Azure são semelhantes aos modelos do Azure Resource Manager, na funcionalidade e na sintaxe. Eles são arquivos JSON que contêm valores e nomes de propriedade do item, mas adicionam os conceitos principais a seguir:

  • Parâmetros: permitem especificar os valores de propriedade em uma seção de corpo, fornecendo os valores de parâmetro somente ao usar o modelo. Por exemplo, a definição completa para um pool pode ser colocada no corpo e apenas um parâmetro definido para a poolId; assim, para criar um pool, é necessário fornecer apenas uma cadeia de caracteres de ID do pool. O corpo do modelo pode ser criado por uma pessoa com conhecimento do Lote e dos aplicativos a serem executados pelo Lote; somente os valores dos parâmetros definidos pelo autor devem ser fornecidos quando o modelo é usado. Dessa forma, os usuários com pouco conhecimento do Lote e/ou aplicativo podem usar os modelos.
  • Variáveis: permitem especificar os valores de parâmetro simples ou complexos em um local e usá-los em um ou mais locais no corpo do modelo. As variáveis podem simplificar e reduzir o tamanho do modelo, além de torná-lo mais sustentável, tendo um local para alterar as propriedades.
  • Construções de nível superior: algumas construções de nível superior estão disponíveis no modelo, mas ainda não estão disponíveis nas APIs do Lote. Por exemplo, uma fábrica de tarefas pode ser definida em um modelo de trabalho que cria várias tarefas para o trabalho usando uma definição de tarefa comum. Esses constructos evitam a necessidade de codificar para criar dinamicamente vários arquivos JSON, como um arquivo por tarefa, bem como criar arquivos de script para instalar aplicativos por meio de um gerenciador de pacotes.

Modelos de pool

Os modelos de pool dão suporte a recursos de modelo standard de parâmetros e variáveis. Eles também dão suporte a referências de pacote, que permitem a opção de copiar o software em nós de pool usando gerenciadores de pacotes. O gerenciador de pacotes e a ID do pacote são especificados na referência de pacote. Ao declarar um ou mais pacotes, você evita criar um script que obtém os pacotes necessários, instalar o script e executar o script em cada nó de pool.

A seguir, um exemplo de um modelo que cria um pool de VMs do Linux com o ffmpeg instalado. Para usá-lo, forneça apenas uma cadeia de caracteres da ID do pool e o número de VMs no pool:

{
    "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 arquivo de modelo foi nomeado pool-ffmpeg.json, invoque o modelo conforme a seguir:

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

A CLI solicita que você forneça valores para o poolId e nodeCount parâmetros. Você também pode fornecer os parâmetros em um arquivo JSON. Por exemplo:

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

Se o arquivo JSON de parâmetros foi nomeado pool-ffmpeg.json, invoque o modelo conforme a seguir:

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

Modelos de trabalho

Os modelos de trabalho dão suporte a recursos de modelo padrão de parâmetros e variáveis. Eles também dão suporte à construção da fábrica de tarefas, que cria várias tarefas para um trabalho a partir de uma definição de tarefa. Três tipos de fábrica de tarefas têm suporte: limpeza paramétrica, tarefa por arquivo e coleção de tarefas.

O seguinte é um exemplo de um modelo que cria um trabalho para transcodificar arquivos de vídeo MP4 com ffmpeg para uma das duas resoluções mais baixas. Cria uma tarefa por arquivo de vídeo de origem. Consulte grupos de arquivos e transferência de arquivos para obter mais informações sobre grupos de arquivos para o trabalho de entrada e saída.

{
    "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 arquivo de modelo foi nomeado job-ffmpeg.json, invoque o modelo conforme a seguir:

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

Como anteriormente, a CLI solicita que você forneça valores para os parâmetros. Você também pode fornecer os parâmetros em um arquivo JSON.

Use os modelos no Azure Batch Explorer

Você pode carregar um modelo de CLI do Lote para o aplicativo de desktop do Azure Batch Explorer para criar um trabalho ou pool do Lote. Você também pode selecionar a partir de modelos predefinidos de pool e o trabalho na Galeria do Azure Batch Explorer.

Para carregar um modelo:

  1. No Azure Batch Explorer, selecione Galeria>Modelos locais.
  2. Selecione, ou arraste e solte, um pool local ou o modelo de trabalho.
  3. Selecione Usar este modeloe siga os prompts na tela.

Transferência de arquivos e grupos de arquivo

A maioria dos trabalhos e tarefas exigem arquivos de entrada e produzem arquivos de saída. Geralmente, os arquivos de entrada e os arquivos de saída são transferidos, do cliente para o nó ou do nó para o cliente. A extensão de CLI do Lote do Azure abstrai a transferência de arquivo e utiliza a conta de armazenamento que você pode associar à conta do Lote.

Um grupo de arquivo é igual a um contêiner que é criado na conta de armazenamento do Azure. O grupo de arquivo pode ter subpastas.

A extensão de CLI do Lote fornece comandos para carregar arquivos do cliente para um grupo de arquivos especificado e baixar arquivos do grupo de arquivos 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

Modelos de pool e de trabalho permitem que os arquivos armazenados em grupos de arquivo sejam especificados para cópia em nós de pool ou transferidos de nós de pool para um grupo de arquivo. Por exemplo, no trabalho de modelo especificado anteriormente, o grupo de arquivos ffmpeg-input é especificado para a fábrica de tarefas como o local dos arquivos de vídeo de origem copiados para baixo até o nó para transcodificação. O grupo de arquivos ffmpeg-output é o local onde os arquivos de saída transcodificados são copiados do nó que executa cada tarefa.

Resumo

Atualmente, o suporte à transferência de arquivo e de modelo foi adicionado somente à CLI do Azure. A meta é expandir o público que pode usar o Lote para usuários que não precisam desenvolver código usando as APIs de Lote, tais como pesquisadores, usuários de TI. Sem codificação, os usuários com conhecimento do Azure, do Lote e dos aplicativos a serem executados pelo Lote podem criar modelos para criação de pools e trabalhos. Com os parâmetros de modelo, os usuários sem conhecimento detalhado do Lote e dos aplicativos podem usar esses modelos.

Experimente a extensão do Lote para a CLI do Azure e forneça comentários ou sugestões, seja nos comentários deste artigo ou no repositório da Comunidade do Lote.

Próximas etapas