Partilhar via


AzureFileCopy@5 - Tarefa v5 de cópia de ficheiros do Azure

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

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 - Origem
string. Obrigatório.

A localização dos ficheiros de origem. Os valores suportados incluem Pipelines yaml e variáveis de sistema predefinidas de suporte de Versão Clássica, como Build.Repository.LocalPath.

As variáveis de versão só são suportadas em versões clássicas. O símbolo de wild card (*) é suportado em qualquer lugar no caminho do ficheiro ou nome do ficheiro.


azureSubscription - Subscrição do Azure
Alias de entrada: ConnectedServiceNameARM. string. Obrigatório.

Especifique o nome de uma ligação de serviço Resource Manager do Azure configurada para a subscrição onde se encontra o serviço do Azure de destino, a máquina virtual ou a conta de armazenamento. Veja Descriçã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 arm pré-existente. Esta é a conta de armazenamento utilizada como intermediário para copiar ficheiros para VMs do Azure.


ContainerName - Nome do Contentor
string. Necessário quando Destination = AzureBlob.

O nome do contentor no qual os ficheiros são copiados. Se o contentor especificado não existir na conta de armazenamento, será criado.

Para criar um diretório virtual dentro do contentor, utilize a entrada de prefixo de blobs. Por exemplo, para a localização de destino https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/, especifique o nome mycontainer do contentor e o prefixo de blobs: vd1/vd2.


BlobPrefix - Prefixo de Blobs
string. Opcional. Utilize quando Destination = AzureBlob.

Especifique um prefixo para o diretório virtual de destino no contentor de Blobs do Azure. Isto aplica-se quando o SourcePath contém um caráter universal que pode corresponder a vários itens.

Exemplo: pode acrescentar um número de compilação para prefixar os ficheiros de todos os blobs com o mesmo número de compilação.

Exemplo: se especificar um prefixo myvd1de blob, é criado um diretório virtual dentro do contentor. Os ficheiros são copiados da origem para https://myaccount.blob.core.windows.net/mycontainer/myvd1/.

No caso de ser SourcePath um único item sem caráter universal, este prefixo de blob funcionará como o nome do blob de destino.


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

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


ResourceFilteringMethod - Selecionar Máquinas Por
string. Opcional. Utilize quando Destination = AzureVMs. Valores permitidos: machineNames (Nomes das Máquinas), tags. Valor predefinido: machineNames.

Especifique um nome ou etiqueta de anfitrião de VM que identifique um subconjunto de VMs num grupo de recursos. As etiquetas são suportadas para recursos criados apenas através do Azure Resource Manager.


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

Forneça uma lista de nomes de VMs ou nomes de etiquetas que identifiquem as VMs que a tarefa terá como destino. 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 etiquetas ou nomes de VMs.
  • Formate nomes de VMs com uma lista separada por vírgulas de FQDNs ou endereços IP.
  • Formatar nomes de etiquetas para um filtro como {TagName}:{Value} Exemplo: Role:DB;OS:Win8.1

vmsAdminUserName - Início de Sessão do Administração
string. Necessário quando Destination = AzureVMs.

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

  • Os formatos suportados incluem: username, , domain\usernamemachine-name\usernamee .\username.
  • Os formatos UPN, incluindo username@domain.com e contas de sistema incorporadas, como NT Authority\System não são suportados.

vmsAdminPassword - Palavra-passe
string. Necessário quando Destination = AzureVMs.

Indique a palavra-passe para o Admin Login parâmetro .

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


TargetPath - Pasta de Destino
string. Necessário quando Destination = AzureVMs.

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

As variáveis de ambiente, como $env:windir e $env:systemroot são suportadas. Exemplos: $env:windir\FabrikamFiber\Web e c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Argumentos Opcionais (para carregar ficheiros para blob)
string.

Forneça argumentos adicionais para utilizar ao AzCopy.exe carregar para o Blob e transferir para as VMs. Veja Transferir dados com o Utilitário Command-Line do AzCopy para obter detalhes.

Para contas de armazenamento Premium que suportam apenas blobs de páginas do Azure, utilize --blob-type=PageBlob como argumento adicional.

Os argumentos predefinidos incluem --log-level=INFO (predefinição) e --recursive (se o nome do contentor não $rootfor ).


AdditionalArgumentsForVMCopy - Argumentos Opcionais (para transferir ficheiros para a VM)
string. Opcional. Utilize quando Destination = AzureVMs.

Forneça argumentos adicionais para que sejam aplicados ao AzCopy.exe transferir para VMs como, por exemplo, --check-length=true.

Se não forem especificados argumentos opcionais, o seguinte será adicionado por predefinição:

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

sasTokenTimeOutInMinutes - Período de Expiração do Token de SAS em Minutos
string. Opcional. Utilize quando Destination = AzureBlob. Valor predefinido: 240.

Especifique o tempo em minutos após o qual o token de SAS para o contentor irá expirar. Por predefinição, este token expira após 4 horas.


enableCopyPrerequisites - Ativar Pré-requisitos de Cópia
boolean. Opcional. Utilize quando Destination = AzureVMs. Valor predefinido: false.

Quando ativada, esta opção utiliza um certificado autoassinado para configurar o serviço de escuta da Gestão Remota do Windows (WinRM) através do protocolo HTTPS na porta 5986. Esta configuração é necessária para realizar operações de cópia em VMs do Azure. Aplicável apenas para VMs do ARM.

  • Se as VMs de destino forem acedidas através 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 Grupo de Segurança de Rede (NSG), configure uma regra de segurança de entrada para permitir o acesso na porta 5986.

CopyFilesInParallel - Copiar em Paralelo
boolean. Opcional. Utilize quando Destination = AzureVMs. Valor predefinido: true.

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


CleanTargetBeforeCopy - Destino Limpo
boolean. Valor predefinido: false.

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


skipCACheck - Certificado de Teste
boolean. Opcional. Utilize quando Destination = AzureVMs. Valor predefinido: true.

O WinRM requer um certificado para a transferência HTTPS ao copiar ficheiros do Blob de armazenamento intermédio para as VMs do Azure.

Se utilizar um certificado autoassinado, especifique true para impedir que o processo valide o certificado com uma AC fidedigna.


Opções de controlo de tarefas

Todas as tarefas têm opções de controlo para além das entradas de tarefas. Para obter mais informações, veja Opções de controlo e propriedades de tarefas comuns.

Variáveis de saída

Esta tarefa define as seguintes variáveis de saída, que pode consumir em passos, tarefas e fases a jusante.

StorageContainerUri
Uri do contentor para o qual os ficheiros foram copiados. Válido apenas quando o destino selecionado é o Blob do Azure.

StorageContainerSasToken
SasToken para o contentor para o qual os ficheiros foram copiados. Válido apenas quando o destino selecionado é o Blob do Azure.

Observações

AzureFileCopy@5 suporta AzCopy.exe versão 10.12.2.

Nota

Pode bloquear a utilização de chaves de conta de armazenamento e tokens DE SAS nas suas contas de armazenamento. Nestas situações, a tarefa AzureFileCopy@5 , que depende de tokens SAS, não pode ser utilizada.

A tarefa AzureFileCopy@6 utiliza o RBAC do Azure para aceder ao armazenamento de blobs. Isto requer a identidade da ligação de serviço utilizada para ter a função RBAC adequada, por exemplo, Contribuidor de Dados de Blobs de Armazenamento. Veja Atribuir uma função do Azure para acesso aos dados de blobs.

A tarefa AzureFileCopy@6 também suporta ligações de serviço que utilizam a federação de identidade da carga de trabalho.

Nota

Esta tarefa é escrita no PowerShell e funciona apenas quando executada em agentes do Windows. Se os pipelines exigirem agentes do Linux e precisarem de copiar ficheiros para uma Conta de Armazenamento do Azure, considere executar az storage blob comandos na tarefa da CLI do Azure como alternativa.

A tarefa é utilizada para copiar ficheiros de aplicação e outros artefactos necessários para instalar a aplicação; como scripts do PowerShell, módulos do PowerShell-DSC e muito mais.

Quando o destino é VMs do Azure, os ficheiros são copiados primeiro para um contentor de blobs do Azure gerado automaticamente e, em seguida, transferidos para as VMs. O contentor é eliminado depois de os ficheiros serem copiados com êxito para as VMs.

A tarefa utiliza o AzCopy, o utilitário de linha de comandos criado para copiar rapidamente dados de e para contas de armazenamento do Azure. A versão 5 da tarefa cópia de ficheiros do Azure utiliza o AzCopy V10.

A versão 3 e inferior da Cópia de Ficheiros do Azure obteria a chave de Armazenamento do Azure para fornecer acesso. A versão 4 e superior da Cópia de Ficheiros do Azure exige que o Armazenamento do Azure seja autorizado através de Microsoft Entra ID ou token de SAS. A autenticação com um principal de serviço e a identidade gerida estão disponíveis. Para identidades geridas, apenas é suportada a identidade gerida em todo o sistema. O nível de autorização necessário é apresentado na Opção 1: Utilizar Microsoft Entra ID.

Para implementar dinamicamente Grupos de Recursos do Azure que contêm máquinas virtuais, utilize a tarefa Implementação do Grupo de Recursos do Azure . Esta tarefa tem um modelo de exemplo que pode executar as operações necessárias para configurar o protocolo HTTPS winRM nas VMs, abrir a porta 5986 na firewall e instalar o certificado de teste.

Nota

Se estiver a implementar em Sites Estáticos do Azure como um contentor no Armazenamento de blobs, utilize a Versão 2 ou superior da tarefa para preservar o $web nome do contentor.

Quais são os pré-requisitos de Azure PowerShell para utilizar esta tarefa?

A tarefa requer que Azure PowerShell esteja instalada no computador que executa o agente de automatização. A versão recomendada é 1.0.2, mas a tarefa funcionará com a versão 0.9.8 e superior. Pode utilizar o instalador de Azure PowerShell v1.0.2 para o obter.

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

A tarefa utiliza o protocolo HTTPS de Gestão Remota do Windows (WinRM) para copiar os ficheiros do contentor de Blobs de armazenamento para as VMs do Azure. Isto requer que o serviço WINRM HTTPS esteja configurado nas VMs e seja instalado um certificado adequado.

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. Desative as restrições remotas do UAC.
  3. Especifique as credenciais da tarefa para aceder às VMs com um início de sessão ao nível do administrador no nome de utilizador de formulário simples sem qualquer parte de domínio.
  4. Instale um certificado no computador que executa o agente de automatização.
  5. Se estiver a utilizar um certificado autoassinado, defina o parâmetro Certificado de Teste da tarefa.

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

  • Para contas de armazenamento do Azure Resource Manager e VMs de Resource Manager do Azure, utilize um tipo de ligação de serviço do Azure Resource Manager. Veja Automatizar a implementação do Grupo de Recursos do Azure com um Principal de Serviço.

  • Ao utilizar um tipo de ligaçã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 cloud e as VMs.

Como devo proceder para criar uma conta escolar ou profissional para utilização com esta tarefa?

Pode criar uma conta adequada para utilização numa ligação de serviço:

  1. Utilize o portal do Azure para criar uma nova conta de utilizador no Azure Active Directory.
  2. Adicione a conta de utilizador do Azure Active Directory ao grupo de coadministradores na sua subscrição do Azure.
  3. Inicie sessão no portal do Azure com esta conta de utilizador e altere a palavra-passe.
  4. Utilize as credenciais desta conta na ligação de serviço. Em seguida, as implementações são processadas com esta conta.

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

Uma vez que o AzCopy V10 não suporta ficheiros de diário, a tarefa não poderá retomar a cópia. Tem de executar a tarefa novamente para copiar todos os ficheiros.

Os ficheiros de registo e os ficheiros de plano são limpos após a cópia?

Os ficheiros de registo e de plano não são eliminados pela tarefa. Para limpar explicitamente os ficheiros, adicione um passo da CLI no fluxo de trabalho com tarefas de azcopy limpas.

Como devo proceder para utilizar a tarefa de cópia de ficheiros do Azure para copiar um ficheiro para uma máquina virtual do Azure que não tenha um endereço IP público?

Certifique-se de que está a utilizar a versão 5 da tarefa de cópia de ficheiros do Azure. Se a tarefa falhar, pode adicionar um passo de compilação para executar o comando azcopy cp "source-file-path" "destination-file-path" para substituir os valores de origem e destino.

Erro proibido: "AzCopy.exe saído com código de saída não zero ao carregar ficheiros para o armazenamento de blobs" ao utilizar a tarefa cópia de ficheiros do Azure

Os agentes alojados são atribuídos aleatoriamente sempre que uma compilação é acionada, os endereços IP do agente serão diferentes em cada execução. Se estes endereços IP não estiverem na lista de IPs permitidos, a comunicação entre o Azure DevOps e a conta de armazenamento falhará. Nestes cenários, siga os passos descritos:

  1. Adicione um passo de compilação com a CLI do Azure para identificar o endereço IP do agente de Compilação Alojada da Microsoft no runtime. Irá adicionar o endereço IP à regra de Rede na Conta de Armazenamento do Azure.
  2. Execute o passo de compilação da Sua Conta de Armazenamento do Azure.
  3. Adicione outro passo de compilação com a CLI do Azure para remover o endereço IP do agente de compilação da regra de rede da Conta de Armazenamento do Azure.

Exemplos

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 Description
Tipos de pipeline YAML, Compilação clássica, Versão clássica
É executado em Agente, DeploymentGroup
Exigências Os agentes autoalojados têm de ter capacidades que correspondam às seguintes exigências para executar tarefas que utilizam esta tarefa: azureps
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes na tarefa.
Restrições de comandos Qualquer
Variáveis de tabelas definidas Qualquer
Versão do agente 1.103.0 ou superior
Categoria da tarefa Implementação