Compartir vía


AzureFileCopy@5: tarea de copia de archivos de Azure v5

Copie archivos en Azure Blob Storage o máquinas virtuales.

Syntax

# Azure file copy v5
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@5
  inputs:
    SourcePath: # string. Required. Source. 
    azureSubscription: # string. Alias: ConnectedServiceNameARM. Required. Azure Subscription. 
    Destination: # 'AzureBlob' | 'AzureVMs'. Required. Destination Type. 
    storage: # string. Alias: StorageAccountRM. Required. RM Storage Account. 
    #ContainerName: # string. Required when Destination = AzureBlob. Container Name. 
    #BlobPrefix: # string. Optional. Use when Destination = AzureBlob. Blob Prefix. 
    #resourceGroup: # string. Alias: EnvironmentNameRM. Required when Destination = AzureVMs. Resource Group. 
    #ResourceFilteringMethod: 'machineNames' # 'machineNames' | 'tags'. Optional. Use when Destination = AzureVMs. Select Machines By. Default: machineNames.
    #MachineNames: # string. Optional. Use when Destination = AzureVMs. Filter Criteria. 
    #vmsAdminUserName: # string. Required when Destination = AzureVMs. Admin Login. 
    #vmsAdminPassword: # string. Required when Destination = AzureVMs. Password. 
    #TargetPath: # string. Required when Destination = AzureVMs. Destination Folder. 
    #AdditionalArgumentsForBlobCopy: # string. Optional Arguments (for uploading files to blob). 
    #AdditionalArgumentsForVMCopy: # string. Optional. Use when Destination = AzureVMs. Optional Arguments (for downloading files to VM). 
    #sasTokenTimeOutInMinutes: '240' # string. Optional. Use when Destination = AzureBlob. SAS Token Expiration Period In Minutes. Default: 240.
    #enableCopyPrerequisites: false # boolean. Optional. Use when Destination = AzureVMs. Enable Copy Prerequisites. Default: false.
    #CopyFilesInParallel: true # boolean. Optional. Use when Destination = AzureVMs. Copy in Parallel. Default: true.
    #CleanTargetBeforeCopy: false # boolean. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.

Entradas

SourcePath - Fuente
string. Obligatorio.

Ubicación de los archivos de origen. Los valores admitidos incluyen canalizaciones yaML y versiones clásicas admiten variables del sistema predefinidas como Build.Repository.LocalPath.

Las variables de versión solo se admiten en las versiones clásicas. El símbolo de comodín (*) se admite en cualquier parte de la ruta de acceso del archivo o el nombre de archivo.


azureSubscription - Suscripción de Azure
Alias de entrada: ConnectedServiceNameARM. string. Obligatorio.

Especifique el nombre de una conexión de servicio de Azure Resource Manager configurada para la suscripción en la que se encuentra el servicio de Azure de destino, la máquina virtual o la cuenta de almacenamiento. Consulte Introducción a Azure Resource Manager para obtener más información.


Destination - Tipo de destino
string. Obligatorio. Valores permitidos: AzureBlob (Blob de Azure), AzureVMs (máquinas virtuales de Azure).

Especifique el tipo de destino.


storage - Cuenta de almacenamiento de RM
Alias de entrada: StorageAccountRM. string. Obligatorio.

Elija una cuenta de almacenamiento de ARM preexistente. Esta es la cuenta de almacenamiento que se usa como intermediario para copiar archivos en máquinas virtuales de Azure.


ContainerName - Nombre del contenedor
string. Necesario cuando Destination = AzureBlob.

Nombre del contenedor en el que se copian los archivos. Si el contenedor especificado no existe en la cuenta de almacenamiento, se creará.

Para crear un directorio virtual dentro del contenedor, use la entrada de prefijo de blob. Por ejemplo, para la ubicación https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/de destino , especifique el nombre mycontainer del contenedor y el prefijo de blob: vd1/vd2.


BlobPrefix - Prefijo de blob
string. Opcional. Use cuando Destination = AzureBlob.

Especifique un prefijo para el directorio virtual de destino dentro del contenedor de blobs de Azure. Esto se aplica cuando SourcePath contiene un carácter comodín que puede coincidir con varios elementos.

Ejemplo: puede anexar un número de compilación para prefijar los archivos de todos los blobs con el mismo número de compilación.

Ejemplo: si especifica un prefijo myvd1de blob, se crea un directorio virtual dentro del contenedor. Los archivos se copian del origen a https://myaccount.blob.core.windows.net/mycontainer/myvd1/.

En caso de que SourcePath sea un solo elemento sin caracteres comodín, este prefijo de blob funcionará como el nombre del blob de destino.


resourceGroup - Grupo de recursos
Alias de entrada: EnvironmentNameRM. string. Necesario cuando Destination = AzureVMs.

Especifique el nombre del grupo de recursos de destino en el que se copiarán los archivos.


ResourceFilteringMethod - Seleccionar máquinas por
string. Opcional. Use cuando Destination = AzureVMs. Valores permitidos: machineNames (nombres de máquina), tags. Valor predeterminado: machineNames.

Especifique un nombre de host o etiqueta de máquina virtual que identifique un subconjunto de máquinas virtuales de un grupo de recursos. Las etiquetas solo se admiten para los recursos creados a través de Azure Resource Manager.


MachineNames - Criterios de filtro
string. Opcional. Use cuando Destination = AzureVMs.

Proporcione una lista de nombres de máquina virtual o nombres de etiqueta que identifiquen las máquinas virtuales a las que se dirige la tarea. Los criterios de filtro válidos incluyen:

  • Nombre de un grupo de recursos de Azure.
  • Variable de salida de una tarea anterior.
  • Lista delimitada por comas de nombres de etiqueta o nombres de máquina virtual.
  • Dar formato a los nombres de máquina virtual mediante una lista separada por comas de FQDN o direcciones IP.
  • Dar formato a los nombres de etiqueta de un filtro como {TagName}:{Value} ejemplo: Role:DB;OS:Win8.1

vmsAdminUserName - Inicio de sesión del administrador
string. Necesario cuando Destination = AzureVMs.

Proporcione el nombre de usuario de una cuenta con permisos administrativos en todas las máquinas virtuales de destino.

  • Entre los formatos admitidos se incluyen: username, domain\username, machine-name\usernamey .\username.
  • No se admiten los formatos UPN, incluidas username@domain.com las cuentas del sistema integradas, como NT Authority\System .

vmsAdminPassword - Contraseña
string. Necesario cuando Destination = AzureVMs.

Proporcione la contraseña para el Admin Login parámetro .

Para buscar la variable, busque el Admin Login parámetro . Seleccione el icono de candado de una variable definida en la Variables pestaña para proteger el valor e insertar el nombre de la variable aquí.


TargetPath - Carpeta de destino
string. Necesario cuando Destination = AzureVMs.

Especifique la ruta de acceso a la carpeta de las máquinas virtuales de Azure en las que se copiarán los archivos.

Se admiten variables de entorno como $env:windir o $env:systemroot. Ejemplos: $env:windir\FabrikamFiber\Web y c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Argumentos opcionales (para cargar archivos en el blob)
string.

Proporcione argumentos adicionales para AzCopy.exe su uso al cargar en el blob y descargar en las máquinas virtuales. Consulte Transferencia de datos con la utilidad AzCopy Command-Line para más información.

En el caso de las cuentas de Premium Storage que solo admiten blobs en páginas de Azure, use --blob-type=PageBlob como argumento adicional.

Los argumentos predeterminados incluyen --log-level=INFO (valor predeterminado) y --recursive (si el nombre del contenedor no $rootes ).


AdditionalArgumentsForVMCopy - Argumentos opcionales (para descargar archivos en la máquina virtual)
string. Opcional. Use cuando Destination = AzureVMs.

Proporcione argumentos adicionales a AzCopy.exe que se aplicarán al descargar en máquinas virtuales como , --check-length=true.

Si no se especifican argumentos opcionales, se agregan los siguientes valores de forma predeterminada:

  • --log-level=INFO
  • --log-level=DEBUG (Si la canalización se ejecuta en el modo de depuración establecido)
  • --recursive

sasTokenTimeOutInMinutes - Período de expiración del token de SAS en minutos
string. Opcional. Use cuando Destination = AzureBlob. Valor predeterminado: 240.

Especifique el tiempo en minutos después del cual expirará el token de SAS para el contenedor. De forma predeterminada, este token expira después de 4 horas.


enableCopyPrerequisites - Habilitar los requisitos previos de copia
boolean. Opcional. Use cuando Destination = AzureVMs. Valor predeterminado: false.

Cuando se habilita, esta opción usa un certificado autofirmado para configurar el agente de escucha de Administración remota de Windows (WinRM) a través del protocolo HTTPS en el puerto 5986. Esta configuración es necesaria para realizar operaciones de copia en máquinas virtuales de Azure. Solo se aplica a las máquinas virtuales arm.

  • Si se accede a las máquinas virtuales de destino a través de un equilibrador de carga, configure una regla NAT de entrada para permitir el acceso en el puerto 5986.
  • Si las máquinas virtuales de destino están asociadas a un grupo de seguridad de red (NSG), configure una regla de seguridad de entrada para permitir el acceso en el puerto 5986.

CopyFilesInParallel - Copiar en paralelo
boolean. Opcional. Use cuando Destination = AzureVMs. Valor predeterminado: true.

Especifique true para copiar archivos en paralelo a las máquinas virtuales de destino.


CleanTargetBeforeCopy - Limpiar destino
boolean. Valor predeterminado: false.

Especifique true para limpiar la carpeta de destino antes de copiar archivos.


skipCACheck - Certificado de prueba
boolean. Opcional. Use cuando Destination = AzureVMs. Valor predeterminado: true.

WinRM requiere un certificado para la transferencia HTTPS al copiar archivos del blob de almacenamiento intermedio en las máquinas virtuales de Azure.

Si usa un certificado autofirmado, especifique true para evitar que el proceso valide el certificado con una ENTIDAD de certificación de confianza.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de las entradas de tareas. Para obtener más información, vea Opciones de control y propiedades de tareas comunes.

Variables de salida

Esta tarea define las siguientes variables de salida, que puede consumir en pasos, trabajos y fases de bajada.

StorageContainerUri
URI del contenedor en el que se copiaron los archivos. Es válido solo cuando el destino seleccionado es Azure Blob.

StorageContainerSasToken
SasToken para el contenedor en el que se copiaron los archivos. Es válido solo cuando el destino seleccionado es Azure Blob.

Comentarios

AzureFileCopy@5 admite AzCopy.exe versión 10.12.2.

Nota

Puede bloquear el uso de claves de cuenta de almacenamiento y tokens de SAS en las cuentas de almacenamiento. En estas situaciones, no se puede usar la tarea AzureFileCopy@5 , que se basa en tokens de SAS.

La tarea AzureFileCopy@6 usa RBAC de Azure para acceder a Blob Storage en su lugar. Esto requiere la identidad de la conexión de servicio que se usa para tener el rol de RBAC adecuado, por ejemplo, Colaborador de datos de Storage Blob. Consulte Asignación de un rol de Azure para acceder a datos de blobs.

La tarea AzureFileCopy@6 también admite conexiones de servicio que usan la federación de identidades de carga de trabajo.

Nota

Esta tarea se escribe en PowerShell y solo funciona cuando se ejecuta en agentes de Windows. Si las canalizaciones requieren agentes de Linux y es necesario copiar los archivos en una cuenta de Azure Storage, considere la posibilidad de ejecutar los comandos az storage blob en la tarea de la CLI de Azure como alternativa.

La tarea se usa para copiar archivos de aplicación y otros artefactos necesarios para instalar la aplicación; por ejemplo, scripts de PowerShell, módulos de PowerShell-DSC, etc.

Cuando el destino son máquinas virtuales de Azure, los archivos se copian primero en un contenedor de blobs de Azure generado automáticamente y, a continuación, se descargan en las máquinas virtuales. El contenedor se elimina después de que los archivos se copien correctamente en las máquinas virtuales.

La tarea usa AzCopy, la utilidad de línea de comandos creada para copiar datos rápidamente desde y hacia cuentas de almacenamiento de Azure. La versión 5 de la tarea copia de archivos de Azure usa AzCopy V10.

La copia de archivos de Azure versión 3 e inferior recuperaría la clave de Azure Storage para proporcionar acceso. La copia de archivos de Azure versión 4 y posteriores requieren que Azure Storage esté autorizado a través de Microsoft Entra ID o token de SAS. Está disponible la autenticación mediante una entidad de servicio y una identidad administrada. En el caso de las identidades administradas, solo se admite la identidad administrada en todo el sistema. El nivel de autorización necesario se muestra en la opción 1: Usar Microsoft Entra ID.

Para implementar dinámicamente grupos de recursos de Azure que contienen máquinas virtuales, use la tarea Implementación de un grupo de recursos de Azure. Esta tarea tiene una plantilla de ejemplo que puede realizar las operaciones necesarias para configurar el protocolo HTTPS de WinRM en las máquinas virtuales, abrir el puerto 5986 en el firewall e instalar el certificado de prueba.

Nota

Si va a realizar la implementación en Azure Static Websites como contenedor en Blob Storage, use la versión 2 o posterior de la tarea para conservar el nombre del contenedor $web .

¿Cuáles son los requisitos previos de Azure PowerShell para usar esta tarea?

La tarea requiere que Azure PowerShell esté instalado en la máquina que ejecuta el agente de automatización. La versión recomendada es 1.0.2, pero la tarea funcionará con la versión 0.9.8 y posteriores. Puede usar el instalador de Azure PowerShell v1.0.2 para obtenerlo.

¿Cuáles son los requisitos previos de WinRM para esta tarea?

La tarea usa el protocolo HTTPS de Administración remota de Windows (WinRM) para copiar los archivos del contenedor de blobs de almacenamiento en las máquinas virtuales de Azure. Esto requiere que el servicio HTTPS de WinRM esté configurado en las máquinas virtuales y se instale un certificado adecuado.

Configuración de WinRM después de la creación de una máquina virtual

Si las máquinas virtuales se crearon sin abrir los puertos HTTPS de WinRM, realice lo siguiente:

  1. Configure una regla de acceso de entrada para permitir HTTPS en el puerto 5986 de cada máquina virtual.
  2. Deshabilite las restricciones remotas de UAC.
  3. Especifique las credenciales de la tarea para acceder a las máquinas virtuales mediante un inicio de sesión de nivel de administrador con el formato simple nombre de usuario sin ningún elemento de dominio.
  4. Instale un certificado en la máquina que ejecuta el agente de automatización.
  5. Si usa un certificado autofirmado, establezca el parámetro Test Certificate de la tarea.

¿Qué tipo de conexión de servicio debo elegir?

  • En el caso de las cuentas de almacenamiento de Azure Resource Manager y de las máquinas virtuales de Azure Resource Manager, use un tipo de conexión de servicio de Azure Resource Manager. Consulte Automatización de la implementación del grupo de recursos de Azure mediante una entidad de servicio.

  • Al usar un tipo de conexión de servicio de Azure Resource Manager, la tarea filtra automáticamente las cuentas de almacenamiento de Azure Resource Manager apropiadas y más recientes, así como otros campos. Por ejemplo, el grupo de recursos o el servicio en la nube y las máquinas virtuales.

¿Cómo puedo crear una cuenta profesional o educativa para usarla con esta tarea?

Se puede crear una cuenta adecuada para su uso en una conexión de servicio:

  1. Use Azure Portal para crear una cuenta de usuario en Azure Active Directory.
  2. Agregue la cuenta de usuario de Azure Active Directory al grupo de coadministradores de la suscripción a Azure.
  3. Inicie sesión en Azure Portal con esta cuenta de usuario y cambie la contraseña.
  4. Use las credenciales de esta cuenta en la conexión de servicio. A continuación, las implementaciones se procesan mediante esta cuenta.

Si se produce un error en la tarea, ¿se reanudará la copia?

Como AzCopy V10 no admite archivos de diario, la tarea no puede reanudar la copia. Debe volver a ejecutar la tarea para copiar todos los archivos.

¿Los archivos de registro y los archivos de plan se limpian después de la copia?

La tarea no elimina los archivos de registro y de plan. Para limpiar explícitamente los archivos, agregue un paso de la CLI en el flujo de trabajo mediante azcopy jobs clean.

¿Cómo puedo usar la tarea de copia de archivos de Azure para copiar un archivo en una máquina virtual de Azure que no tiene una dirección IP pública?

Asegúrese de que usa la versión 5 de la tarea de copia de archivos de Azure. Si se produce un error en la tarea, puede agregar un paso de compilación para ejecutar el comando azcopy cp "source-file-path" "destination-file-path" para sustituir los valores de origen y destino.

Error prohibido: "AzCopy.exe terminó con el código de salida distinto de cero al cargar archivos en el almacenamiento de blobs" al usar la tarea de copia de archivos de Azure

Los agentes hospedados se asignan aleatoriamente cada vez que se desencadena una compilación, las direcciones IP del agente serán diferentes en cada ejecución. Si estas direcciones IP no están en la lista de direcciones IP permitidas, se producirá un error en la comunicación entre Azure DevOps y la cuenta de almacenamiento. En estos escenarios, siga los pasos descritos:

  1. Agregue un paso de compilación mediante la CLI de Azure para identificar la dirección IP del agente de compilación hospedada de Microsoft en tiempo de ejecución. Agregará la dirección IP a la regla de red en la cuenta de Azure Storage.
  2. Ejecute el paso de compilación de la cuenta de Azure Storage.
  3. Agregue otro paso de compilación mediante la CLI de Azure para quitar la dirección IP del agente de compilación de la regla de red de la cuenta de Azure Storage.

Ejemplos

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- task: AzureFileCopy@5
  inputs:
    SourcePath: 'Readme.md'
    azureSubscription: 'MyAzureSubscription'
    Destination: 'AzureBlob'
    storage: 'MyStorage'
    ContainerName: 'MyContainerName'
  name: AzureFileCopy
  
- script: | 
    echo $(AzureFileCopy.StorageContainerUri)
    echo $(AzureFileCopy.StorageContainerSasToken)

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
Peticiones Los agentes autohospedados deben tener funcionalidades que coincidan con las siguientes demandas para ejecutar trabajos que usan esta tarea: azureps
Capabilities Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
Restricciones de comandos Any
Variables que se pueden establecer Any
Versión del agente 1.103.0 o superior
Categoría de la tarea: Implementación