AzureFileCopy@4 – Tarefa de cópia de arquivo v4 do Azure

Copie arquivos para Armazenamento de Blobs do Azure ou máquinas virtuais.

Syntax

# 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 - Fonte
string. Obrigatórios.

O local dos arquivos de origem. Os valores com suporte incluem Pipelines YAML e Versão Clássica dão suporte a variáveis de sistema predefinidas , como Build.Repository.LocalPath.

Também há suporte para variáveis de versão apenas em versões clássicas. O símbolo de cartão selvagem (*) tem suporte em qualquer lugar no caminho do arquivo ou no nome do arquivo.


azureSubscription - Assinatura do Azure
Alias de entrada: ConnectedServiceNameARM. string. Obrigatórios.

Especifique o nome de uma conexão de serviço do Azure Resource Manager configurada para a assinatura em que o serviço do Azure de destino, a máquina virtual ou a conta de armazenamento estão localizados. Confira Visão geral do Azure Resource Manager para obter mais detalhes.


Destination - Tipo de destino
string. Obrigatórios. Valores permitidos: AzureBlob (Blob do Azure), AzureVMs (VMs do Azure).

Especifique o tipo de destino.


storage - Conta de Armazenamento RM
Alias de entrada: StorageAccountRM. string. Obrigatórios.

Especifique uma conta de armazenamento do ARM pré-existente. Essa é a conta de armazenamento usada como um intermediário para copiar arquivos para VMs do Azure.


ContainerName - Nome do contêiner
string. Obrigatório quando Destination = AzureBlob.

O nome do contêiner no qual os arquivos são copiados. Se o contêiner especificado não existir na conta de armazenamento, ele será criado.

Para criar um diretório virtual dentro do contêiner, use a entrada de prefixo de blob. Por exemplo, para o local de destino https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/, especifique o nome mycontainer do contêiner e o prefixo de blob: vd1/vd2.


BlobPrefix - Prefixo do blob
string. Opcional. Use quando Destination = AzureBlob.

Especifique um prefixo que pode ser usado para filtrar arquivos.

Exemplo: você pode acrescentar um número de build para filtrar os arquivos de todos os blobs com o mesmo número de build.

Exemplo: se você especificar um prefixo myvd1de blob, um diretório virtual será criado dentro do contêiner. Os arquivos são copiados da origem para https://myaccount.blob.core.windows.net/mycontainer/myvd1/.


resourceGroup - Grupo de Recursos
Alias de entrada: EnvironmentNameRM. string. Obrigatório quando Destination = AzureVMs.

Especifique o nome do Grupo de Recursos de destino no qual os arquivos serão copiados.


ResourceFilteringMethod - Selecionar computadores por
string. Opcional. Use quando Destination = AzureVMs. Valores permitidos: machineNames (Nomes de Máquina), tags. Valor padrão: machineNames.

Especifique um nome ou marca de host de VM que identifique um subconjunto de VMs em um grupo de recursos. As marcas têm suporte apenas para recursos criados por meio do Resource Manager do Azure.


MachineNames - Critérios de Filtro
string. Opcional. Use quando Destination = AzureVMs.

Forneça uma lista de nomes de VM ou nomes de marca que identificam as VMs que a tarefa direcionará. Os critérios de filtro válidos incluem:

  • O nome de um Grupo de Recursos do Azure.
  • Uma variável de saída de uma tarefa anterior.
  • Uma lista delimitada por vírgulas de nomes de marca ou nomes de VM.
  • Formate nomes de VM usando uma lista separada por vírgulas de FQDNs ou endereços IP.
  • Formatar nomes de marca para um filtro como {TagName}:{Value} Exemplo: Role:DB;OS:Win8.1

vmsAdminUserName - Logon de administrador
string. Obrigatório quando Destination = AzureVMs.

Forneça o nome de usuário de uma conta com permissões administrativas em todas as VMs de destino.

  • Os formatos com suporte incluem: username, domain\username, machine-name\usernamee .\username.
  • Não há suporte para formatos UPN, incluindo username@domain.com contas de sistema internas, como NT Authority\System .

vmsAdminPassword - Senha
string. Obrigatório quando Destination = AzureVMs.

Forneça a senha para o Admin Login parâmetro .

Para localizar a variável, localize o Admin Login parâmetro . Selecione o ícone de cadeado para uma variável definida na Variables guia para proteger o valor e inserir o nome da variável aqui.


TargetPath - Pasta de Destino
string. Obrigatório quando Destination = AzureVMs.

Especifique o caminho para a pasta nas VMs do Azure nas quais os arquivos serão copiados.

Há suporte para variáveis de ambiente como $env:windir e $env:systemroot. Exemplos: $env:windir\FabrikamFiber\Web e c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Argumentos opcionais (para carregar arquivos para o blob)
string.

Forneça argumentos adicionais para AzCopy.exe uso ao carregar no Blob e baixar para as VMs. Consulte Transferir dados com o Utilitário de Command-Line do AzCopy para obter detalhes.

Para contas de armazenamento Premium que dão suporte apenas a Blobs de página do Azure, use --blob-type=PageBlob como um argumento adicional.

Os argumentos padrão incluem --log-level=INFO (padrão) e --recursive (se o nome do contêiner não $rootfor ).


AdditionalArgumentsForVMCopy - Argumentos opcionais (para baixar arquivos para a VM)
string. Opcional. Use quando Destination = AzureVMs.

Forneça argumentos adicionais para AzCopy.exe que serão aplicados ao baixar para VMs como , --check-length=true.

Se nenhum argumento opcional for especificado, o seguinte será adicionado por padrão:

  • --log-level=INFO
  • --log-level=DEBUG (Se o pipeline estiver em execução no modo de depuração definido)
  • --recursive

sasTokenTimeOutInMinutes - Período de expiração de token SAS em minutos
string. Opcional. Use quando Destination = AzureBlob. Valor padrão: 240.

Especifique o tempo em minutos após o qual o token SAS para o contêiner expirará. Por padrão, esse token expira após 4 horas.


enableCopyPrerequisites - Habilitar pré-requisitos de cópia
boolean. Opcional. Use quando Destination = AzureVMs. Valor padrão: false.

Quando habilitada, essa opção usa um certificado autoassinado para configurar o ouvinte do WinRM (Gerenciamento Remoto do Windows) pelo protocolo HTTPS na porta 5986. Essa configuração é necessária para executar operações de cópia em VMs do Azure.

  • Se as VMs de destino forem acessadas por meio de um balanceador de carga, configure uma regra NAT de entrada para permitir o acesso na porta 5986.
  • Se as VMs de destino estiverem associadas a um NSG (Grupo de Segurança de Rede), configure uma regra de segurança de entrada para permitir o acesso na porta 5986.

CopyFilesInParallel - Copiar em paralelo
boolean. Opcional. Use quando Destination = AzureVMs. Valor padrão: true.

Especifique true para copiar arquivos em paralelo para as VMs de destino.


CleanTargetBeforeCopy - Limpar destino
boolean. Opcional. Use quando Destination = AzureVMs. Valor padrão: false.

Especifique true para limpo a pasta de destino antes de copiar arquivos.


skipCACheck - Testar certificado
boolean. Opcional. Use quando Destination = AzureVMs. Valor padrão: true.

O WinRM requer um certificado para a transferência HTTPS ao copiar arquivos do Blob de armazenamento intermediário para as VMs do Azure.

Se você usar um certificado autoassinado, especifique true para impedir que o processo valide o certificado com uma AC confiável.


Opções de controle da tarefa

Todas as tarefas têm opções de controle além de suas entradas de tarefa. Para obter mais informações, consulte Opções de controle e propriedades comuns da tarefa.

Variáveis de saída

Essa tarefa define as variáveis de saída a seguir, que você pode consumir em etapas downstream, trabalhos e estágios.

StorageContainerUri
URI do contêiner para o qual os arquivos foram copiados. Válido somente quando o destino selecionado é um Blob do Azure.

StorageContainerSasToken
SasToken para o contêiner para o qual os arquivos foram copiados. Válido somente quando o destino selecionado é um Blob do Azure.

Comentários

AzureFileCopy@4 dá suporte a AzCopy.exe versão 10.8.0.

Observação

Essa tarefa é escrita no PowerShell e funciona somente quando executada em agentes do Windows. Se seus pipelines exigirem agentes do Linux e precisarem copiar arquivos para uma conta de Armazenamento do Microsoft Azure, considere a execução de comandos az storage blob na tarefa da CLI do Azure como alternativa.

A tarefa é usada para copiar arquivos de aplicativo e outros artefatos necessários para instalar o aplicativo; como scripts do PowerShell, módulos do PowerShell-DSC e muito mais.

Quando o destino são VMs do Azure, os arquivos são primeiro copiados para um contêiner de blob do Azure gerado automaticamente e, em seguida, baixados nas VMs. O contêiner é excluído depois que os arquivos são copiados com êxito para as VMs.

A tarefa usa o AzCopy, o utilitário de linha de comando criado para copiar dados rapidamente de e para contas de armazenamento do Azure. A versão 4 da tarefa Cópia de Arquivo do Azure usa o AzCopy V10.

A Cópia de Arquivo do Azure versão 3 e inferior recuperaria a chave de Armazenamento do Azure para fornecer acesso. A Cópia de Arquivo do Azure versão 4 e superior exige que o Armazenamento do Azure seja autorizado por meio de Microsoft Entra ID ou token SAS. A autenticação usando uma entidade de serviço e uma identidade gerenciada estão disponíveis. Para identidades gerenciadas, há suporte apenas para identidade gerenciada em todo o sistema. O nível de autorização necessário é mostrado na Opção 1: Usar Microsoft Entra ID.

Para implantar dinamicamente grupos de recursos do Azure que contêm máquinas virtuais, use a tarefa Implantação do Grupo de Recursos do Azure. Essa tarefa tem um modelo de exemplo que pode executar as operações necessárias para configurar o protocolo HTTPS do WinRM nas VMs, abrir a porta 5986 no firewall e instalar o certificado de teste.

Observação

Se você estiver implantando em Sites Estáticos do Azure como um contêiner no Armazenamento de Blobs, use a Versão 2 ou superior da tarefa para preservar o nome do contêiner $web .

A tarefa dá suporte à autenticação com base no Azure Active Directory. A autenticação usando uma entidade de serviço e uma identidade gerenciada estão disponíveis. Para identidades gerenciadas, há suporte apenas para identidade gerenciada em todo o sistema.

Quais são os pré-requisitos Azure PowerShell para usar essa tarefa?

A tarefa requer que Azure PowerShell esteja instalado no computador que executa o agente de automação. A versão recomendada é 1.0.2, mas a tarefa funcionará com a versão 0.9.8 e superior. Você pode usar o Instalador do Azure PowerShell v1.0.2 para obter isso.

Quais são os pré-requisitos do WinRM para essa tarefa?

A tarefa usa o protocolo HTTPS do WinRM (Gerenciamento Remoto do Windows) para copiar os arquivos do contêiner de Blob de armazenamento para as VMs do Azure. Isso requer que o serviço HTTPS do WinRM esteja configurado nas VMs e um certificado adequado seja instalado.

Configurar o WinRM após a criação da máquina virtual

Se as VMs foram criadas sem abrir as portas HTTPS do WinRM, execute o seguinte:

  1. Configure uma regra de acesso de entrada para permitir HTTPS na porta 5986 de cada VM.
  2. Desabilite as restrições remotas do UAC.
  3. Especifique as credenciais para a tarefa acessar as VMs usando um logon no nível do administrador no formato simples nome de usuário, sem nenhuma parte do domínio.
  4. Instale um certificado no computador que executa o agente de automação.
  5. Se você estiver usando um certificado autoassinado, defina o parâmetro Certificado de Teste da tarefa.

Que tipo de conexão de serviço devo escolher?

  • Para contas de armazenamento do Azure Resource Manager e VMs do Azure Resource Manager, use um tipo de conexão de serviço do Azure Resource Manager. Consulte Automatizando a implantação do Grupo de Recursos do Azure usando uma entidade de serviço.

  • Ao usar um tipo de conexão de serviço do Azure Resource Manager, a tarefa filtra automaticamente as contas de armazenamento do Azure Resource Manager mais recentes e outros campos. Por exemplo, o grupo de recursos ou o serviço de nuvem e as VMs.

Como criar uma conta corporativa ou de estudante para uso com essa tarefa?

Uma conta adequada pode ser criada para uso em uma conexão de serviço:

  1. Use o portal do Azure para criar uma conta de usuário no Azure Active Directory.
  2. Adicione a conta de usuário do Azure Active Directory ao grupo de coadministradores em sua assinatura do Azure.
  3. Entre no portal do Azure com essa conta de usuário e altere a senha.
  4. Use as credenciais dessa conta na conexão de serviço. Em seguida, as implantações são processadas usando essa conta.

Se a tarefa falhar, a cópia será retomada?

Como o AzCopy V10 não é compatível com arquivos de diário, a tarefa não pode continuar a cópia. Você deve executar a tarefa novamente para copiar todos os arquivos.

Os arquivos de log e os arquivos de plano são limpos após a cópia?

Os arquivos de log e de plano não são excluídos pela tarefa. Para limpo explicitamente os arquivos, adicione uma etapa da CLI no fluxo de trabalho usando trabalhos azcopy limpo.

Como faço para usar a tarefa de cópia de arquivo do Azure para copiar um arquivo para uma máquina virtual do Azure que não tem um endereço IP público?

Verifique se você está usando a versão 4 da tarefa de cópia de arquivo do Azure. Se a tarefa falhar, você poderá adicionar uma etapa de build para executar o comando azcopy cp "source-file-path" "destination-file-path" para substituir os valores de origem e destino.

Erro proibido: 'AzCopy.exe encerrado com código de saída diferente de zero ao carregar arquivos no armazenamento de blobs' ao usar a tarefa Cópia de Arquivo do Azure

Os agentes hospedados são atribuídos aleatoriamente sempre que um build é disparado, os endereços IP do agente serão diferentes em cada execução. Se esses endereços IP não estiverem em sua lista de IPs permitidos, a comunicação entre o Azure DevOps e a conta de armazenamento falhará. Nesses cenários, siga as etapas descritas:

  1. Adicione uma etapa de build usando a CLI do Azure para identificar o endereço IP do agente de Build Hospedado da Microsoft em runtime. Ele adicionará o endereço IP à regra de rede na Conta de Armazenamento do Azure.
  2. Execute a etapa de build para sua Conta de Armazenamento do Azure.
  3. Adicione outra etapa de build usando a CLI do Azure para remover o endereço IP do agente de build da regra de rede da Conta de Armazenamento do Azure.

Exemplos

- 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 Descrição
Tipos de pipeline YAML, build clássico, versão clássica
Executa em Agent, DeploymentGroup
Demandas Os agentes auto-hospedados devem ter recursos que correspondam às seguintes demandas para executar trabalhos que usam essa tarefa: azureps
Funcionalidades Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 1.103.0 ou superior
Categoria da tarefa Implantar