AzureFileCopy@4: tarea copia de archivos de Azure v4
Copie archivos en Azure Blob Storage o máquinas virtuales.
Nota:
Esta tarea no admite autenticación de Azure Resource Manager con la federación de identidades de flujo de trabajo.
Sintaxis
# Azure file copy v4
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@4
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. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
#skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
Entradas
SourcePath
-
origen
string
. Obligatorio.
Ubicación de los archivos de origen. Los valores admitidos incluyen canalizaciones yaML y compatibilidad con versiones clásicas variables de sistema predefinidas como Build.Repository.LocalPath.
las variables release solo se admiten en 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
-
de 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 información general de Azure Resource Manager para más información.
tipo de destino de Destination
-
string
. Obligatorio. Valores permitidos: AzureBlob
(Blob de Azure), AzureVMs
(máquinas virtuales de Azure).
Especifique el tipo de destino.
storage
-
de cuenta de almacenamiento de RM
Alias de entrada: StorageAccountRM
.
string
. Obligatorio.
Especifique una cuenta de almacenamiento arm existente previamente. Esta es la cuenta de almacenamiento que se usa como intermediario para copiar archivos en máquinas virtuales de Azure.
ContainerName
-
nombre de contenedor
string
. Obligatorio 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 del prefijo de blob. Por ejemplo, para la ubicación de destino https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/
, especifique el nombre del contenedor mycontainer
y el prefijo de blob: vd1/vd2
.
de prefijo de blob de BlobPrefix
-
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 de blob myvd1
, se crea un directorio virtual dentro del contenedor. Los archivos se copian del origen en https://myaccount.blob.core.windows.net/mycontainer/myvd1/
.
de grupo de recursos de resourceGroup
-
Alias de entrada: EnvironmentNameRM
.
string
. Obligatorio 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. 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.
- Una 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 ejemplo de
{TagName}:{Value}
:Role:DB;OS:Win8.1
de inicio de sesión de administrador de vmsAdminUserName
-
string
. Obligatorio 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\username
y.\username
. - No se admiten formatos UPN, como
username@domain.com
y cuentas de sistema integradas, comoNT Authority\System
.
de contraseña de vmsAdminPassword
-
string
. Obligatorio cuando Destination = AzureVMs
.
Proporcione la contraseña para el parámetro Admin Login
.
Para buscar la variable, busque el parámetro Admin Login
. Seleccione el icono de candado de una variable definida en la pestaña Variables
para proteger el valor e insertar el nombre de la variable aquí.
carpeta de destino de TargetPath
-
string
. Obligatorio 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
y $env:systemroot
. Ejemplos: $env:windir\FabrikamFiber\Web
y c:\FabrikamFiber
AdditionalArgumentsForBlobCopy
-
argumentos opcionales (para cargar archivos en blob)
string
.
Proporcione argumentos adicionales para AzCopy.exe
para su uso al cargar en el blob y descargarlo en las máquinas virtuales. Consulte Transferencia de datos con la utilidad AzCopy Command-Line para obtener 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 es $root
).
AdditionalArgumentsForVMCopy
-
argumentos opcionales (para descargar archivos en la máquina virtual)
string
. Opcional. Use cuando Destination = AzureVMs
.
Proporcione argumentos adicionales para AzCopy.exe
que se aplicarán al descargarse en máquinas virtuales como, por ejemplo, --check-length=true
.
Si no se especifica ningún argumento opcional, se agregan de forma predeterminada lo siguiente:
--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 está habilitada, 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.
- 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.
copia de CopyFilesInParallel
- en 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
-
de destino limpio
boolean
. Opcional. Use cuando Destination = AzureVMs
. Valor predeterminado: false
.
Especifique true
para limpiar la carpeta de destino antes de copiar archivos.
skipCACheck
-
de 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 sus entradas de tarea. Para obtener más información, consulte 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. Válido solo cuando el destino seleccionado es un blob de Azure.
StorageContainerSasToken
SasToken para el contenedor en el que se copiaron los archivos. Válido solo cuando el destino seleccionado es un blob de Azure.
Observaciones
AzureFileCopy@4 admite AzCopy.exe versión 10.8.0.
Nota:
Esta tarea se escribe en PowerShell y funciona solo cuando se ejecuta en agentes de Windows. Si las canalizaciones requieren agentes de Linux y necesitan copiar archivos en una cuenta de Azure Storage, considere la posibilidad de ejecutar comandos de 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 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 datos rápidamente desde y hacia cuentas de Azure Storage. La versión 4 de la tarea Copia de archivos de Azure usa AzCopy V10.
Azure File Copy versión 3 e inferior recuperaría la clave de Azure Storage para proporcionar acceso. Azure File Copy versión 4 y posteriores requieren que Azure Storage esté autorizado a través de microsoft Entra ID o token de SAS. La autenticación mediante una entidad de servicio y una identidad administrada están disponibles. 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 Opción 1: Usar el identificador de Entra de Microsoft.
Para implementar dinámicamente grupos de recursos de Azure que contienen máquinas virtuales, use la tarea implementación del 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 implementar en Azure Static Websites como contenedor en Blob Storage, use versión 2 o superior de la tarea para conservar el nombre del contenedor de $web.
La tarea admite la autenticación basada en Azure Active Directory. La autenticación mediante una entidad de servicio y una identidad administrada están disponibles. En el caso de las identidades administradas, solo se admite la identidad administrada en todo el sistema.
¿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 máquinas virtuales
Si las máquinas virtuales se crearon sin abrir los puertos HTTPS de WinRM, realice lo siguiente:
- Configure una regla de acceso de entrada para permitir HTTPS en el puerto 5986 de cada máquina virtual.
- Deshabilite restricciones remotas de UAC.
- Especifique las credenciales de la tarea para acceder a las máquinas virtuales mediante un inicio de sesión de nivel de administrador en el formato simple nombre de usuario sin ningún elemento de dominio.
- Instale un certificado en la máquina que ejecuta el agente de automatización.
- 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 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 Azure Resource Manager, la tarea filtra automáticamente las cuentas de almacenamiento de Azure Resource Manager más recientes apropiadas y 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:
- Use Azure Portal para crear una cuenta de usuario en Azure Active Directory.
- Agregue la cuenta de usuario de Azure Active Directory al grupo de coadministradores de la suscripción de Azure.
- Inicie sesión en Azure Portal con esta cuenta de usuario y cambie la contraseña.
- Use las credenciales de esta cuenta en la conexión de servicio. A continuación, las implementaciones se procesan con 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 uso 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 4 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"
sustituir los valores de origen y destino.
Error prohibido: "AzCopy.exe salir con código de salida distinto de cero al cargar archivos en Blob Storage" mientras se usa 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 de serán diferentes en cada ejecución. Si estas direcciones IP no están en la lista de direcciones IP permitidas, se produce un error en la comunicación entre Azure DevOps y la cuenta de almacenamiento. En estos escenarios, siga los pasos descritos:
- 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.
- Ejecute el paso de compilación de la cuenta de Azure Storage.
- 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
- task: AzureFileCopy@4
inputs:
SourcePath: 'Readme.md'
azureSubscription: 'Azure'
Destination: 'AzureBlob'
storage: 'storageAccount'
ContainerName: 'containerName'
BlobPrefix: ''
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 |
demandas | Los agentes autohospedados deben tener funcionalidades que coincidan con los siguientes exigen ejecutar trabajos que usen esta tarea: azureps |
funcionalidades de |
Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
restricciones de comandos | Cualquiera |
variables settable | Cualquiera |
Versión del agente | 1.103.0 o superior |
Categoría de tarea | Desplegar |