Compartir a través de


Gestión de recursos de Batch con cmdlets de PowerShell

Con los cmdlets de PowerShell de Azure Batch, puede realizar muchas tareas comunes de Batch y crear scripts para las mismas. Se trata de una introducción rápida a los cmdlets que puede usar para administrar las cuentas de Batch y trabajar con los recursos de Batch, como grupos, trabajos y tareas.

Para obtener una lista completa de los cmdlets de Batch y la sintaxis detallada de los cmdlets, consulte la referencia de los cmdlets de Azure Batch.

Se recomienda actualizar los módulos de Azure PowerShell con frecuencia para aprovechar las actualizaciones y mejoras del servicio.

Prerrequisitos

  • Instale y configure el módulo de Azure PowerShell. Para instalar un módulo específico de Azure Batch, como un módulo de versión preliminar, consulte la Galería de PowerShell.

  • Ejecute el cmdlet Connect-AzAccount para conectarse a la suscripción (los cmdlets de Azure Batch se incluyen en el módulo de Azure Resource Manager):

    Connect-AzAccount
    
  • Registro con el espacio de nombres del proveedor de Batch. Solo tiene que realizar esta operación una vez por suscripción.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Administrar claves y cuentas por Batch

Crear una cuenta de Batch

New-AzBatchAccount crea una cuenta de Batch en un grupo de recursos especificado. Si aún no tiene un grupo de recursos, cree uno ejecutando el cmdlet New-AzResourceGroup . Especifique una de las regiones de Azure en el parámetro Location , como "Centro de EE. UU.". Por ejemplo:

New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"

A continuación, cree una cuenta de Batch en el grupo de recursos. Especifique un nombre para la cuenta en <account_name> y la ubicación y el nombre del grupo de recursos. La creación de la cuenta de Batch puede tardar algún tiempo en completarse. Por ejemplo:

New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>

Nota:

El nombre de la cuenta de Batch debe ser único para la región de Azure para el grupo de recursos, contener entre 3 y 24 caracteres y usar solo letras minúsculas y números.

Obtención de claves de acceso de la cuenta

Get-AzBatchAccountKeys muestra las claves de acceso asociadas a una cuenta de Azure Batch. Por ejemplo, ejecute lo siguiente para obtener las claves principal y secundaria de la cuenta que creó.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Generación de una nueva clave de acceso

New-AzBatchAccountKey genera una nueva clave de cuenta principal o secundaria para una cuenta de Azure Batch. Por ejemplo, para generar una nueva clave principal para la cuenta de Batch, escriba:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Nota:

Para generar una nueva clave secundaria, especifique "Secondary" para el parámetro KeyType . Deberá volver a generar las claves principales y secundarias por separado.

Eliminación de una cuenta de Batch

Remove-AzBatchAccount elimina una cuenta de Batch. Por ejemplo:

Remove-AzBatchAccount -AccountName <account_name>

Cuando se le solicite, confirme que desea quitar la cuenta. La eliminación de la cuenta puede tardar algún tiempo en completarse.

Creación de un objeto BatchAccountContext

Puede autenticarse para administrar recursos de Batch mediante la autenticación de clave compartida o la autenticación de Microsoft Entra. Para la autenticación mediante los cmdlets de PowerShell de Batch, cree primero un objeto BatchAccountContext para almacenar las credenciales de cuenta o la identidad. Pase el objeto BatchAccountContext a los cmdlets que usan el parámetro BatchContext.

Autenticación de clave compartida

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Nota:

De forma predeterminada, la clave principal de la cuenta se usa para la autenticación, pero puede seleccionar explícitamente la clave que se va a usar cambiando la propiedad KeyInUse del objeto BatchAccountContext: $context.KeyInUse = "Secondary".

Autenticación de Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Creación y modificación de recursos de Batch

Utilice cmdlets como New-AzBatchPool, New-AzBatchJob y New-AzBatchTask para crear recursos en una cuenta de Batch. Hay los cmdlets Get y Set- correspondientes para actualizar las propiedades de los recursos existentes y los cmdlets Remove- para quitar recursos en una cuenta de Batch.

Al usar muchos de estos cmdlets, además de pasar un objeto BatchContext, debe crear o pasar objetos que contengan una configuración de recursos detallada, como se muestra en el ejemplo siguiente. Consulte la ayuda detallada de cada cmdlet para ver ejemplos adicionales.

Crear un grupo de Batch

Al crear o actualizar un grupo de Batch, especifique una configuración. Por lo general, los grupos deben configurarse con configuración de máquina virtual, lo que le permite especificar una de las imágenes de máquina virtual Linux o Windows admitidas enumeradas en Marketplace de Azure Virtual Machines o proporcionar una imagen personalizada que haya preparado. Los grupos de configuración de Cloud Services solo proporcionan nodos de proceso de Windows y no admiten todas las características de Batch.

Al ejecutar New-AzBatchPool, pase la configuración del sistema operativo en un objeto PSVirtualMachineConfiguration o PSCloudServiceConfiguration. Por ejemplo, el siguiente fragmento de código crea un grupo de Batch con nodos de cálculo de tamaño Standard_A1 en la configuración de la máquina virtual, con imágenes de Ubuntu Server 20.04-LTS. Aquí, el parámetro VirtualMachineConfiguration especifica la variable $configuration como el objeto PSVirtualMachineConfiguration. El parámetro BatchContext especifica una variable definida previamente $context como el objeto BatchAccountContext.

$imageRef = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("UbuntuServer","Canonical","20.04-LTS")

$configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageRef, "batch.node.ubuntu 20.04")

New-AzBatchPool -Id "mypspool" -VirtualMachineSize "Standard_a1" -VirtualMachineConfiguration $configuration -AutoScaleFormula '$TargetDedicated=4;' -BatchContext $context

El número destino de nodos de proceso en el nuevo grupo se calcula mediante una fórmula de escalado automático. En este caso, la fórmula es simplemente $TargetDedicated=4, lo que indica que el número de nodos de proceso del grupo es 4 como máximo.

Consulta de grupos, trabajos, tareas y otros detalles

Utilice cmdlets, como Get-AzBatchPool, Get-AzBatchJob y Get-AzBatchTask, para consultar las entidades creadas en una cuenta de Batch.

Consulta de datos

Por ejemplo, use Get-AzBatchPools para encontrar sus grupos. De forma predeterminada, esto consulta todos los grupos de su cuenta, siempre que ya haya almacenado el objeto BatchAccountContext en $context:

Get-AzBatchPool -BatchContext $context

Uso de un filtro OData

Puede proporcionar un filtro OData mediante el parámetro Filter para buscar solo los objetos que le interesen. Por ejemplo, puede encontrar todos los grupos con identificadores que empiecen por "myPool":

$filter = "startswith(id,'myPool')"

Get-AzBatchPool -Filter $filter -BatchContext $context

Este método no es tan flexible como usar "Where-Object" en una canalización local. Sin embargo, la consulta se envía directamente al servicio Batch para que todo el filtrado se produzca en el lado servidor, lo que ahorra ancho de banda de Internet.

Uso del parámetro Id

Una alternativa a un filtro OData es usar el parámetro Id . Para consultar un grupo específico con el identificador "myPool":

Get-AzBatchPool -Id "myPool" -BatchContext $context

El parámetro Id solo admite la búsqueda de id. completo; no caracteres comodín ni filtros de estilo OData.

Uso del parámetro MaxCount

De forma predeterminada, cada cmdlet devuelve un máximo de 1000 objetos. Si alcanza este límite, puede refinar el filtro para devolver menos objetos o establecer explícitamente un máximo mediante el parámetro MaxCount . Por ejemplo:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Para quitar el límite superior, establezca MaxCount en 0 o menos.

Uso de la canalización de PowerShell

Los cmdlets de Batch usan la canalización de PowerShell para enviar datos entre los cmdlets. Esto tiene el mismo efecto que especificar un parámetro, pero facilita el trabajo con varias entidades.

Por ejemplo, busque y muestre todas las tareas de su cuenta:

Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context

Reinicie (reboot) cada nodo de cómputo en una piscina:

Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Administración de paquetes de aplicación

Los paquetes de aplicación proporcionan una manera simplificada de implementar aplicaciones en los nodos de proceso de los grupos. Con los cmdlets de Batch PowerShell, puede cargar y administrar paquetes de aplicaciones en su cuenta de Batch e implantar versiones de los paquetes en nodos de cálculo.

Importante

Debe vincular una cuenta de Azure Storage a su cuenta de Batch para usar paquetes de aplicación.

Cree una aplicación:

New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Agregue un paquete de aplicación:

New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip

Establezca la versión predeterminada para la aplicación:

Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"

Enumerar los paquetes de una aplicación

$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

$application.ApplicationPackages

Eliminación de un paquete de aplicación

Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"

Eliminación de una aplicación

Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Nota:

Debe eliminar todas las versiones del paquete de aplicación de una aplicación antes de eliminar la aplicación. Recibirá un error de "Conflicto" si intenta eliminar una aplicación que actualmente tiene paquetes de aplicación.

Implementación de un paquete de aplicación

Puede especificar uno o varios paquetes de aplicación para la implementación al crear un grupo. Al especificar un paquete en el momento de creación del grupo, se implementa en cada nodo cuando el nodo se une al grupo. También se implementan paquetes cuando un nodo se reinicia o se restablece su imagen inicial.

Especifique la -ApplicationPackageReference opción al crear un grupo para implementar un paquete de aplicación en los nodos del grupo a medida que se unen al grupo. En primer lugar, cree un objeto PSApplicationPackageReference y configúrelo con el identificador de aplicación y la versión del paquete que desea implementar en los nodos de proceso del grupo:

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Ahora, cree el grupo y especifique el objeto de referencia del paquete como argumento en la opción ApplicationPackageReferences:

New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference

Puede encontrar más información sobre los paquetes de aplicación en Implementación de aplicaciones en nodos de proceso con paquetes de aplicación de Batch.

Actualización de los paquetes de aplicación de un grupo

Para actualizar las aplicaciones asignadas a un grupo existente, cree primero un objeto PSApplicationPackageReference con las propiedades deseadas (id. de aplicación y versión del paquete):

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

A continuación, obtenga el grupo de Batch, borre los paquetes existentes, agregue la nueva referencia de paquete y actualice el servicio Batch con la nueva configuración del grupo:

$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Ahora, las propiedades del grupo están actualizadas en el servicio Batch. Sin embargo, para implementar realmente el nuevo paquete de aplicaciones en los nodos de proceso de grupo, debe reiniciar o volver a crear la imagen de dichos nodos. Puede reiniciar todos los nodos de un grupo con este comando:

Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Sugerencia

Puede implementar varios paquetes de aplicación en los nodos de proceso de un grupo. Si desea agregar un paquete de aplicación en lugar de reemplazar los paquetes implementados actualmente, omita la $pool.ApplicationPackageReferences.Clear() línea anterior.

Pasos siguientes