Compartilhar via


AzureFileCopy@3 – tarefa de cópia de arquivo do Azure v3

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

Sintaxe

# Azure file copy v3
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@3
  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. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
  # Output
    #outputStorageUri: # string. Storage Container URI. 
    #outputStorageContainerSasToken: # string. Storage Container SAS Token. 
    #sasTokenTimeOutInMinutes: # string. SAS Token Expiration Period In Minutes.

Entradas

SourcePath - Fonte
string. Obrigatórios.

Especifique o caminho absoluto da pasta de origem ou arquivo no computador local ou um compartilhamento UNC. Você pode usar variáveis de sistema predefinidas, como $(Build.Repository.LocalPath). Não há suporte para nomes que contêm caracteres curinga como *.zip. O valor ou expressão que você especificar deve retornar uma única pasta ou um nome de arquivo.


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

Especifique o nome de uma conexão de serviço Resource Manager do Azure 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 do RM
Alias de entrada: StorageAccountRM. string. Obrigatórios.

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.


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 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 marcas 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, ffweb, ffdbou marcas como Role:DB, Web, , OS:Win8.1.

Observação: delimitadores válidos para marcas incluem ,(vírgula), :(colon) e ;(semicolon). Ao fornecer várias marcas, a tarefa será executada somente nas VMs que contêm as marcas especificadas. Por padrão, a tarefa é executada em todas as VMs.


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 de administrador das VMs.

A entrada válida inclui variáveis definidas em pipelines de build ou de lançamento, como $(passwordVariable). Para proteger uma senha, marque-a como secret.


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 que possam ser aplicados ao carregar em Blobs, como /NC:10.

Se nenhum argumento opcional for especificado, os seguintes argumentos serão adicionados por padrão.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S - Adicionado quando o nome do contêiner não $rooté .
  • /BlobType:page -Adicionado quando a conta de armazenamento especificada é uma conta premium.
  • /Pattern - Adicionado quando o caminho de origem é um arquivo. Incluído com quaisquer outros argumentos opcionais especificados.

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

Forneça argumentos adicionais para AzCopy.exe que possam ser aplicados ao baixar em VMs como /NC:10.

Se nenhum argumento opcional for especificado, os seguintes serão adicionados por padrão.

  • /Y
  • /S
  • /Z
  • /V

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

Quando habilitado, usa um certificado autoassinado para configurar um ouvinte do WinRM (Gerenciamento Remoto do Windows) na porta 5986 em vez do protocolo HTTPS. Necessário para executar a operação de cópia em VMs do Azure. Se as VMs de destino usarem um balanceador de carga, configure as regras NAT de entrada para a porta de destino (5986). Aplica-se somente a VMs arm. Em VMs de destino 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. O uso desse valor pode reduzir o tempo geral necessário para executar a ação.


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

Definir esse valor como true limpa a pasta de destino antes de executar a ação de cópia.


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

O valor padrão não validará se o certificado do servidor foi assinado por uma AC confiável antes de se conectar por HTTPS.


outputStorageUri - URI do Contêiner de Armazenamento
string.

Especifique o nome da variável usada para o URI do contêiner de armazenamento para o qual os arquivos foram copiados. Válido somente quando o destino selecionado é um Blob do Azure.


outputStorageContainerSasToken - Token SAS do contêiner de armazenamento
string.

Especifique o nome da variável usada para o token SAS do contêiner de armazenamento que acessa os arquivos que foram copiados. Use essa variável como uma entrada para tarefas subsequentes. Por padrão, o token SAS expira após 4 horas.


sasTokenTimeOutInMinutes - Período de expiração de token SAS em minutos
string.

Especifique o tempo em minutos após o qual o token SAS expirará. Válido somente quando o destino selecionado for Blob do Azure.


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

Nenhum.

Comentários

Novidades na versão AzureFileCopy@3

  • AzureFileCopy@3 dá suporte ao Módulo Az e parou de dar suporte ao ponto de extremidade de serviço clássico do Azure.

  • 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 é VMs do Azure, os arquivos são copiados primeiro 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 rapidamente dados de e para contas de armazenamento do Azure. A tarefa versão 3 ou inferior usa o AzCopy V7.

  • 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 em 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 para preservar o nome do contêiner $web .

Perguntas frequentes

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 funciona com a versão 0.9.8 e superior. Use Azure PowerShell Installer v1.0.2 para obter a versão recomendada.

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

A tarefa usa o protocolo HTTPS do WinRM para copiar os arquivos do contêiner de Blob de armazenamento para as VMs do Azure. O serviço HTTPS do WinRM deve ser configurado nas VMs e um certificado adequado instalado.

Se as VMs forem criadas sem abrir as portas HTTPS do WinRM, siga estas etapas:

  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 formatado como nome de usuário sem qualquer referência de domínio.
  4. Instale um certificado no computador que executa o agente de automação.
  5. Defina o parâmetro Certificado de Teste da tarefa para um certificado autoassinado.

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

A tabela a seguir lista os tipos de conta de armazenamento e as conexões de serviço associadas. Para identificar se uma conta de armazenamento se baseia nas APIs clássicas ou nas APIs Resource Manager, faça logon no portal do Azure e pesquise contas de armazenamento (Clássicas) ou contas de armazenamento.

Tipo de conta de armazenamento Conexões de Serviço do Azure no TFS/TS
Gerenciador de Recursos Conexão de serviço do Azure Resource Manager
Clássico Conexão de serviço do Azure com autenticação baseada em certificado ou credenciais usando uma conta corporativa ou de estudante
  • Para recursos clássicos do Azure, use um tipo de conexão de serviço do Azure com autenticação baseada em certificado ou credenciais. Se você estiver usando a autenticação baseada em credenciais, verifique se as credenciais são para uma conta corporativa ou de estudante. Contas Microsoft como joe@live.com e joe@hotmail.com não são compatíveis.

  • Para VMs do Azure Resource Manager, use um tipo de conexão de serviço do Azure Resource Manager. Para obter mais detalhes, consulte Automatizando a implantação do Grupo de Recursos do Azure usando uma entidade de serviço.

  • Se estiver usando um tipo de conexão de serviço do Azure Resource Manager ou um tipo de conexão de serviço do Azure com autenticação baseada em certificado, a tarefa filtrará automaticamente as contas de armazenamento clássicas apropriadas, 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 máquinas virtuais.

Observação

Atualmente, um tipo de conexão de serviço do Azure com autenticação baseada em credenciais não filtra os campos armazenamento, Grupo de Recursos ou serviço de nuvem e máquina virtual.

Como fazer corrigir a falha '403: essa solicitação não está autorizada a executar essa operação usando essa permissão'?

Quando o Azure DevOps cria e autoriza a conexão de serviço com o Azure, ele cria um Registro de Aplicativo no Active Directory da sua assinatura. Essa identidade é adicionada automaticamente com uma função Contributor a todos os recursos no Grupo de Recursos que você escolheu autorizar. Para carregar Blobs em uma conta de armazenamento, ser um Contributor não é suficiente. Você precisa atribuir manualmente a função Storage Blob Data Contributor à identidade de registro do aplicativo.

Copie a identidade do aplicativo da entrada herdada existente como Contributor você verá no painel IAM e pesquise explicitamente por ela na interface do Add role assignment usuário. A identidade não está listada na lista suspensa, você deve pesquisar seu identificador.

O que acontece se meu Grupo de Recursos contiver VMs Clássicas e do Resource Manager?

Se o Grupo de Recursos especificado contiver Resource Manager do Azure e VMs Clássicas, o conjunto de VMs que são direcionadas dependerá do tipo de conexão.

  • Para conexões baseadas em certificado e conexões baseadas em credenciais, a operação de cópia só é executada em VMs clássicas.
  • Para conexões baseadas em Nome da Entidade de Serviço, a operação de cópia é executada somente em VMs Resource Manager.

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

Uma conta adequada pode ser criada facilmente 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 novas credenciais para essa conta na conexão de serviço. As implantações serão processadas usando essa conta.

Exemplos

# Example: Upload files from Pipeline staging directory to blob storage.
- task: AzureFileCopy@3
  displayName: 'Example Step Name'
  inputs:
    sourcePath: '$(Build.ArtifactStagingDirectory)/BlobsToUpload'
    additionalArgumentsForBlobCopy: |
      '/Y' # Supresses all AZCopy Confirmations. Used here to allow overwrites
      '/Pattern:*' # Pattern of files to copy.
      '/S' # Recursive Copy
    azureSubscription: 'Subscription Name'
    destination: AzureBlob
    storage: storageaccountname
    containerName: storagecontainername
    blobPrefix: targetdirectoryincontainer

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