AzureFileCopy@3 - Tarefa v3 de cópia de ficheiros do Azure

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

Syntax

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

Especifique o caminho absoluto da pasta de origem ou o ficheiro no computador local ou uma partilha UNC. Pode utilizar variáveis de sistema predefinidas, como $(Build.Repository.LocalPath). Os nomes que contêm carateres universais, como *.zip não são suportados. O valor ou expressão que especificar deve devolver uma única pasta ou um nome de 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 que pode ser utilizado para filtrar ficheiros.

Exemplo: pode acrescentar um número de compilação para filtrar 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/.


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, ffweb, ffdbou etiquetas como Role:DB, , WebOS:Win8.1.

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


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

A entrada válida inclui variáveis definidas em pipelines de compilação ou versão, como $(passwordVariable). Para proteger uma palavra-passe, marque-a como secret.


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.

Indique argumentos adicionais para que possam ser aplicados ao AzCopy.exe carregar para Blobs, como /NC:10.

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

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

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

Indique argumentos adicionais para que possam ser aplicados ao AzCopy.exe transferir para VMs como /NC:10.

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

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

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

Quando ativado, utiliza um certificado autoassinado para configurar um serviço de escuta de Gestão Remota do Windows (WinRM) na porta 5986 em vez do protocolo HTTPS. Necessário para executar a operação de cópia nas VMs do Azure. Se as VMs de destino utilizarem um balanceador de carga, configure regras NAT de entrada para a porta de destino (5986). Aplica-se apenas a VMs do ARM. Nas VMs de destino 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. A utilização deste valor pode reduzir o tempo global necessário para executar a ação.


CleanTargetBeforeCopy - Destino Limpo
boolean. Opcional. Utilize quando Destination = AzureVMs. Valor predefinido: false.

Definir este valor para true limpar a pasta de destino antes de executar a ação de cópia.


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

O valor predefinido não validará se o certificado de servidor foi assinado por uma AC fidedigna antes de se ligar através de HTTPS.


outputStorageUri - URI do Contentor de Armazenamento
string.

Especifique o nome da variável utilizada para o URI do contentor de armazenamento para o qual os ficheiros foram copiados. Válido apenas quando o destino selecionado é um Blob do Azure.


outputStorageContainerSasToken - Token de SAS de Contentor de Armazenamento
string.

Especifique o nome da variável utilizada para o token SAS do contentor de armazenamento que acede aos ficheiros que foram copiados. Utilize esta variável como uma entrada para tarefas subsequentes. Por predefinição, o token de SAS expira após 4 horas.


sasTokenTimeOutInMinutes - Período de Expiração do Token de SAS em Minutos
string.

Especifique o tempo em minutos após o qual o token de SAS irá expirar. Válido apenas quando o destino selecionado é o Blob do Azure.


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

Nenhum.

Observações

Novidades na Versão AzureFileCopy@3

  • AzureFileCopy@3 suporta o Módulo Az e deixou de suportar o ponto final de serviço clássico do Azure.

  • 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 3 ou abaixo da tarefa utiliza o AzCopy V7.

  • 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 do WinRM em 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 para preservar o $web nome do contentor.

FAQ

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

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

A tarefa utiliza o protocolo HTTPS do WinRM para copiar os ficheiros do contentor de Blobs de armazenamento para as VMs do Azure. O serviço WINRM HTTPS tem de ser configurado nas VMs e um certificado adequado instalado.

Se as VMs forem criadas sem abrir as portas HTTPS do WinRM, siga estes passos:

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

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

A tabela seguinte lista os tipos de conta de armazenamento e as ligações de serviço associadas. Para identificar se uma conta de armazenamento se baseia nas APIs clássicas ou nas APIs Resource Manager, inicie sessão no portal do Azure e procure contas de Armazenamento (Clássicas) ou Contas de armazenamento.

Tipo de conta de armazenamento Ligações de Serviço do Azure no TFS/TS
Resource Manager Ligação de serviço do Azure Resource Manager
Clássico Ligação do serviço do Azure com autenticação baseada em certificados ou credenciais com uma conta escolar ou profissional
  • Para recursos clássicos do Azure, utilize um tipo de ligação de serviço do Azure com autenticação baseada em certificados ou credenciais. Se estiver a utilizar a autenticação baseada em credenciais, certifique-se de que as credenciais se destinam a uma conta escolar ou profissional. As contas Microsoft, como joe@live.com e joe@hotmail.com não são suportadas.

  • Para VMs Resource Manager do Azure, utilize um tipo de ligação de serviço do Azure Resource Manager. Para obter mais detalhes, veja Automatizar a implementação do Grupo de Recursos do Azure com um Principal de Serviço.

  • Se utilizar um tipo de ligação de serviço do Azure Resource Manager ou um tipo de ligação de serviço do Azure com autenticação baseada em certificados, a tarefa filtra automaticamente as contas de armazenamento clássicas adequadas, 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 máquinas virtuais.

Nota

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

Como devo proceder para corrigir a falha "403: Este pedido não está autorizado a executar esta operação com esta permissão"?

Quando o Azure DevOps cria e autoriza a ligação do serviço ao Azure, cria um Registo de Aplicações no Active Directory da sua subscrição. Esta identidade é adicionada automaticamente com uma Contributor função a todos os recursos no Grupo de Recursos que escolheu autorizar. Para carregar Blobs para uma conta de armazenamento, ser um Contributor não é suficiente. Tem de atribuir manualmente a Storage Blob Data Contributor função à identidade de registo da aplicação.

Copie a identidade da aplicação a partir da entrada herdada existente, como Contributor verá no painel IAM e procure-a explicitamente na Add role assignment IU. A identidade não está listada na lista pendente. Tem de procurar o identificador.

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

Se o Grupo de Recursos especificado contiver Resource Manager do Azure e VMs Clássicas, o conjunto de VMs direcionadas depende do tipo de ligação.

  • Para ligações baseadas em certificados e ligações baseadas em credenciais, a operação de cópia é realizada apenas em VMs Clássicas.
  • Para ligações baseadas no Nome do Principal de Serviço, a operação de cópia é realizada apenas em Resource Manager VMs.

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

Uma conta adequada pode ser criada facilmente 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 novas credenciais para esta conta na ligação de serviço. As implementações serão processadas com esta 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 Description
Tipos de pipeline YAML, Compilação clássica, Versão clássica
É executado em Agent, DeploymentGroup
Exigências Os agentes autoalojados têm de ter capacidades que correspondam às seguintes exigências para executar tarefas que utilizem 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