Compartilhar via


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

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

Observação

Essa tarefa não dá suporte a autenticação do Azure Resource Manager comde federação de identidade de fluxo de trabalho.

Sintaxe

# 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 - de origem
string. Obrigatório

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

variáveis de versão têm suporte apenas em versões clássicas. O símbolo de curinga (*) tem suporte em qualquer lugar no caminho do arquivo ou no nome do arquivo.


azureSubscription - assinatura do Azure
Alias de entrada: ConnectedServiceNameARM. string. Obrigatório

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á localizada. Consulte visão geral do Azure Resource Manager para obter mais detalhes.


Destination - tipo de destino
string. Obrigatório 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ório

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


de nome do contêiner ContainerName -
string. Necessá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 do contêiner mycontainer e o prefixo de blob: vd1/vd2.


BlobPrefix - prefixo de 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 de blob myvd1, um diretório virtual será criado dentro do contêiner. Os arquivos são copiados da origem para o https://myaccount.blob.core.windows.net/mycontainer/myvd1/.


do Grupo de Recursos do resourceGroup -
Alias de entrada: EnvironmentNameRM. string. Necessário quando Destination = AzureVMs.

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


ResourceFilteringMethod - selecionar computadores
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. marcas têm suporte apenas para recursos criados por meio do Azure Resource Manager.


critérios de filtro de MachineNames -
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 terá como destino. Os critérios de filtro válidos incluem:

  • O nome de uma do 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

de Logon do Administrador do vmsAdminUserName -
string. Necessá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 contas de sistema username@domain.com e internas, como NT Authority\System.

vmsAdminPassword - de senha
string. Necessário quando Destination = AzureVMs.

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

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


da Pasta de Destino TargetPath -
string. Necessá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 no blob)
string.

Forneça argumentos adicionais para AzCopy.exe para uso ao carregar no Blob e baixar para as VMs. Consulte Transferir dados com a do 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 for $root).


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

Forneça argumentos adicionais para AzCopy.exe que serão aplicados ao baixar em 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 conjunto de modo de depuração)
  • --recursive

sasTokenTimeOutInMinutes - período de expiração do 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 a cópia de pré-requisitos
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.

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

Especifique true para copiar arquivos em paralelo às VMs de destino.


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

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


skipCACheck - de certificado de teste
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 de tarefa

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

Variáveis de saída

Essa tarefa define as seguintes variáveis de saída , 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 for um Blob do Azure.

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

Observações

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

Observação

Essa tarefa é escrita no PowerShell e funciona apenas quando executada em agentes do Windows. Se os pipelines exigirem agentes do Linux e precisarem copiar arquivos para uma Conta de Armazenamento do Azure, considere executar comandos az storage blob na tarefa 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 PowerShell-DSC e muito mais.

Quando o destino é 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 do 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 do 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 exigem que o Armazenamento do Azure seja autorizado por meio da ID do Microsoft Entra ou do 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 a identidade gerenciada em todo o sistema. O nível de autorização necessário é mostrado no opção 1: usar a ID do Microsoft Entra.

Para implantar dinamicamente os Grupos de Recursos do Azure que contêm máquinas virtuais, use a tarefa de 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 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 a identidade gerenciada em todo o sistema.

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

A tarefa requer que o 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 do 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 que 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. Desabilitar restrições remotas do UAC.
  3. Especifique as credenciais para a tarefa acessar as VMs usando um logon no nível do administrador no formulário 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 uma 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 uma tipo de conexão de serviço do Azure Resource Manager, a tarefa filtra automaticamente as contas de armazenamento mais recentes do Azure Resource Manager 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 nova 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 limpar explicitamente os arquivos, adicione uma etapa da CLI no fluxo de trabalho usando trabalhos de azcopy limpar.

Como posso 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 na sua lista de IPs permitida, 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 do Microsoft Hosted Build 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
Execuções em Agent, DeploymentGroup
de demandas Os agentes auto-hospedados devem ter recursos que correspondam às seguintes demandas de para executar trabalhos que usam esta tarefa: azureps
recursos Essa tarefa não atende a nenhuma demanda para tarefas subsequentes no trabalho.
restrições de comando Qualquer
variáveis settable Qualquer
Versão do agente 1.103.0 ou superior
Categoria de tarefa Implantar