Comparteix a través de


AzureFileCopy@3: tarea de copia de archivos de Azure v3

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

Sintaxis

# Azure file copy v3
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@3
  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). 
    #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. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
  # Output
    #outputStorageUri: # string. Storage Container URI. 
    #outputStorageContainerSasToken: # string. Storage Container SAS Token. 
    #sasTokenTimeOutInMinutes: # string. SAS Token Expiration Period In Minutes.

Entradas

SourcePath - Fuente
string. Obligatorio.

Especifique la ruta de acceso absoluta de la carpeta de origen o el archivo en el equipo local o un recurso compartido UNC. Puede usar variables de sistema predefinidas, como $(Build.Repository.LocalPath). No se admiten nombres que contengan caracteres comodín, como *.zip. El valor o expresión que especifique debe devolver una sola carpeta o un 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 donde 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 que se pueda usar para filtrar archivos.

Ejemplo: puede anexar un número de compilación para filtrar 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/.


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 de máquina virtual o una etiqueta que identifique un subconjunto de máquinas virtuales en 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, ffweb, ffdbo etiquetas como Role:DB, Web, . OS:Win8.1

Nota: Los delimitadores válidos para las etiquetas incluyen ,(coma), :(colon) y ;(semicolon). Al proporcionar varias etiquetas, la tarea solo se ejecutará en las máquinas virtuales que contienen las etiquetas especificadas. De forma predeterminada, la tarea se ejecuta en todas las máquinas virtuales.


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.

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

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

Proporcione la contraseña de administrador de las máquinas virtuales.

La entrada válida incluye variables definidas en canalizaciones de compilación o versión, como $(passwordVariable). Para proteger una contraseña, marque como secret.


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 a AzCopy.exe que se pueden aplicar al cargar en blobs como /NC:10.

Si no se especifica ningún argumento opcional, los argumentos siguientes se agregan de forma predeterminada.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S : se agrega cuando el nombre del contenedor no $rootes .
  • /BlobType:page -Se agrega cuando la cuenta de almacenamiento especificada es una cuenta Premium.
  • /Pattern : se agrega cuando la ruta de acceso de origen es un archivo. Se incluye con cualquier otro argumento opcional especificado.

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 pueden aplicar al descargar en máquinas virtuales como /NC:10.

Si no se especifica ningún argumento opcional, se agrega lo siguiente de forma predeterminada.

  • /Y
  • /S
  • /Z
  • /V

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

Cuando se habilita, usa un certificado autofirmado para configurar un agente de escucha de Administración remota de Windows (WinRM) en el puerto 5986 en lugar del protocolo HTTPS. Necesario para realizar la operación de copia en máquinas virtuales de Azure. Si las máquinas virtuales de destino usan un equilibrador de carga, configure las reglas NAT de entrada para el puerto de destino (5986). Solo se aplica a las máquinas virtuales arm. En las máquinas virtuales de destino 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. El uso de este valor puede reducir el tiempo total necesario para realizar la acción.


CleanTargetBeforeCopy - Limpiar destino
boolean. Opcional. Use cuando Destination = AzureVMs. Valor predeterminado: false.

Si se establece este valor en , true se limpia la carpeta de destino antes de realizar la acción de copia.


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

El valor predeterminado no se validará si el certificado de servidor ha sido firmado por una entidad de certificación de confianza antes de conectarse a través de HTTPS.


outputStorageUri - URI del contenedor de almacenamiento
string.

Especifique el nombre de la variable usada para el URI del contenedor de almacenamiento en el que se copiaron los archivos. Válido solo cuando el destino seleccionado es un blob de Azure.


outputStorageContainerSasToken - Token de SAS del contenedor de almacenamiento
string.

Especifique el nombre de la variable usada para el token de SAS del contenedor de almacenamiento que tiene acceso a los archivos que se copiaron. Use esta variable como entrada para las tareas posteriores. De forma predeterminada, el token de SAS expira después de 4 horas.


sasTokenTimeOutInMinutes - Período de expiración del token de SAS en minutos
string.

Especifique el tiempo en minutos después del cual expirará el token de SAS. Es válido solo cuando el destino seleccionado es Azure Blob.


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

Ninguno.

Comentarios

Novedades de la versión AzureFileCopy@3

  • AzureFileCopy@3 admite Az Module y ha dejado de admitir el punto de conexión de servicio clásico de Azure.

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

  • Cuando el destino es 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 rápidamente datos de y en cuentas de almacenamiento de Azure. La versión 3 o inferior de la tarea usa AzCopy V7.

  • 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 máquinas virtuales, abrir el puerto 5986 en el firewall e instalar el certificado de prueba.

Nota

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

Preguntas más frecuentes

¿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 funciona con la versión 0.9.8 y posteriores. Use Azure PowerShell Installer v1.0.2 para obtener la versión recomendada.

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

La tarea usa el protocolo HTTPS de WinRM para copiar los archivos del contenedor de blobs de almacenamiento en las máquinas virtuales de Azure. El servicio HTTPS de WinRM debe configurarse en las máquinas virtuales y se debe instalar un certificado adecuado.

Si las máquinas virtuales se crean sin abrir los puertos HTTPS de WinRM, siga estos pasos:

  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 formato de nombre de usuario sin ninguna referencia de dominio.
  4. Instale un certificado en la máquina que ejecuta el agente de automatización.
  5. Establezca el parámetro Test Certificate de la tarea para un certificado autofirmado.

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

En la tabla siguiente se enumeran los tipos de cuenta de almacenamiento y las conexiones de servicio asociadas. Para identificar si una cuenta de almacenamiento se basa en las API clásicas o en las API de Resource Manager, inicie sesión en el Azure Portal y busque cuentas de almacenamiento (clásicas) o cuentas de almacenamiento.

Tipo de cuenta de almacenamiento Conexiones de servicio de Azure en TFS/TS
Resource Manager Conexión del servicio Azure Resource Manager
Clásico Conexión de servicio de Azure con autenticación basada en certificados o basada en credenciales mediante una cuenta profesional o educativa
  • En el caso de los recursos clásicos de Azure, use un tipo de conexión de servicio de Azure con autenticación basada en credenciales o certificados. Si usa la autenticación basada en credenciales, asegúrese de que las credenciales son para una cuenta profesional o educativa. No se admiten cuentas de Microsoft como joe@live.com y joe@hotmail.com.

  • En el caso de las máquinas virtuales de Azure Resource Manager, use un tipo de conexión de servicio de Azure Resource Manager. Para más información, consulte Automatización de la implementación del grupo de recursos de Azure mediante una entidad de servicio.

  • Si usa un tipo de conexión de servicio de Azure Resource Manager o un tipo de conexión de servicio de Azure con autenticación basada en certificados, la tarea filtra automáticamente las cuentas de almacenamiento clásicas adecuadas, las cuentas de almacenamiento más recientes de Azure Resource Manager y otros campos. Por ejemplo, el grupo de recursos o el servicio en la nube y las máquinas virtuales.

Nota

Actualmente, un tipo de conexión de servicio de Azure con autenticación basada en credenciales no filtra el almacenamiento, el grupo de recursos o el servicio en la nube y los campos de máquina virtual.

¿Cómo se corrige el error «403: Esta solicitud no está autorizada para realizar esta operación con este permiso»?

Cuando Azure DevOps crea y autoriza la conexión de servicio a Azure, crea un registro de aplicaciones en Active Directory de la suscripción. Esta identidad se agrega automáticamente con un rol Contributor a todos los recursos del grupo de recursos que eligió autorizar. Para cargar blobs en una cuenta de almacenamiento, no es Contributorsuficiente. Debe asignar manualmente el Storage Blob Data Contributor rol a la identidad de registro de la aplicación.

Copie la identidad de la aplicación de la entrada heredada existente, ya Contributor que verá en el panel IAM y la buscará explícitamente en la Add role assignment interfaz de usuario. La identidad no aparece en la lista desplegable; debe buscar su identificador.

¿Qué ocurre si mi grupo de recursos contiene máquinas virtuales de Classic y de Resource Manager?

Si el grupo de recursos especificado contiene máquinas virtuales clásicas y de Azure Resource Manager, el conjunto de máquinas virtuales de destino depende del tipo de conexión.

  • En el caso de las conexiones basadas en certificados y las conexiones basadas en credenciales, la operación de copia solo se realiza en máquinas virtuales clásicas.
  • En el caso de las conexiones basadas en el nombre de entidad de seguridad de servicio, la operación de copia solo se realiza en Resource Manager máquinas virtuales.

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

Se puede crear fácilmente una cuenta adecuada para usarla 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 nuevas credenciales de esta cuenta en la conexión de servicio. Las implementaciones se procesarán con esta cuenta.

Ejemplos

# Example: Upload files from Pipeline staging directory to blob storage.
- task: AzureFileCopy@3
  displayName: 'Example Step Name'
  inputs:
    sourcePath: '$(Build.ArtifactStagingDirectory)/BlobsToUpload'
    additionalArgumentsForBlobCopy: |
      '/Y' # Supresses all AZCopy Confirmations. Used here to allow overwrites
      '/Pattern:*' # Pattern of files to copy.
      '/S' # Recursive Copy
    azureSubscription: 'Subscription Name'
    destination: AzureBlob
    storage: storageaccountname
    containerName: storagecontainername
    blobPrefix: targetdirectoryincontainer

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