Partilhar via


AzureFileCopy@6 - Tarefa v6 de cópia de ficheiros do Azure

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

Esta versão da tarefa suporta a Federação de Identidade da Carga de Trabalho e utiliza o RBAC do Azure para aceder ao Armazenamento do Azure. Como resultado da utilização do RBAC do Azure, os tokens de SAS já não são utilizados. Para obter mais informações, consulte a secção Observações .

Syntax

# Azure file copy v6
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@6
  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. 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 Versão Clássica suportam variáveis de sistema predefinidas , 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.

A expressão deve devolver uma única pasta ou um ficheiro.


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

Especifique o nome de uma ligação de serviço do Azure Resource Manager configurada para a subscrição onde está localizada a conta de armazenamento, a máquina virtual ou o serviço do Azure de destino. 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 para o 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 blob. 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 do blob: 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 múltiplos 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 item único 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 de destino da tarefa. 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 os nomes das 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.

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

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

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

Indique a palavra-passe do 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 AzCopy.exe utilizar ao carregar para o Blob e ao 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 serão aplicados ao AzCopy.exe transferir para VMs como, por exemplo, --check-length=true.

Se não forem especificados argumentos opcionais, são adicionados os seguintes argumentos por predefinição:

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

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 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.

Observações

AzureFileCopy@6 suporta a Federação de Identidade da Carga de Trabalho e utiliza o RBAC do Azure para aceder ao Armazenamento do Azure. Como resultado da utilização do RBAC do Azure, os tokens de SAS já não são utilizados e a entrada da sasTokenTimeOutInMinutes tarefa é removida.

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 AzureFileCopy@6 tarefa 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 6 da tarefa cópia de ficheiros do Azure utiliza o AzCopy V10.

A versão 6 da Cópia de Ficheiros do Azure exige que o Armazenamento do Azure seja autorizado através de Microsoft Entra ID. 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.

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 definição Qualquer
Versão do agente 1.103.0 ou superior
Categoria da tarefa Implementação