Condividi tramite


AzureFileCopy@3 - Attività copia file di Azure v3

Copiare file in Archiviazione BLOB di Azure o in macchine virtuali.

Questa attività è deprecata perché questa versione dell'attività AzureFileCopy usa una versione ritirata di AzCopy. Usare la versione più recente dell'attività AzureFileCopy. Vedere Guida alla migrazione di AzCopy da v8 a v10.

Copiare file in Archiviazione BLOB di Azure o in macchine virtuali.

Sintassi

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

Ingressi dati

SourcePath - origine
string. Obbligatorio.

Specificare il percorso assoluto della cartella di origine o del file nel computer locale o una condivisione UNC. È possibile usare variabili di sistema predefinite, ad esempio $(Build.Repository.LocalPath). I nomi contenenti caratteri jolly, ad esempio *.zip, non sono supportati. Il valore o l'espressione specificata deve restituire una singola cartella o un nome di file.


azureSubscription - sottoscrizione di Azure
Alias di input: ConnectedServiceNameARM. string. Obbligatorio.

Specificare il nome di una connessione al servizio Azure Resource Manager configurata per la sottoscrizione in cui si trova il servizio di Azure di destinazione, la macchina virtuale o l'account di archiviazione. Per altre informazioni, vedere panoramica di Azure Resource Manager.


Destination - tipo di destinazione
string. Obbligatorio. Valori consentiti: AzureBlob (BLOB di Azure), AzureVMs (macchine virtuali di Azure).

Specificare il tipo di destinazione.


storage - account di archiviazione RM
Alias di input: StorageAccountRM. string. Obbligatorio.

Specificare un account di archiviazione ARM preesistente. Si tratta dell'account di archiviazione usato come intermediario per copiare i file nelle macchine virtuali di Azure.


nome contenitore ContainerName -
string. Obbligatorio quando Destination = AzureBlob.

Nome del contenitore in cui vengono copiati i file. Se il contenitore specificato non esiste nell'account di archiviazione, verrà creato.

Per creare una directory virtuale all'interno del contenitore, usare l'input del prefisso BLOB. Ad esempio, per il percorso di destinazione https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/, specificare il nome del contenitore mycontainer e il prefisso BLOB: vd1/vd2.


BlobPrefix - prefisso BLOB
string. Opzionale. Usare quando Destination = AzureBlob.

Specificare un prefisso che può essere usato per filtrare i file.

Esempio: è possibile aggiungere un numero di build per filtrare i file da tutti i BLOB con lo stesso numero di build.

Esempio: se si specifica un prefisso BLOB myvd1, viene creata una directory virtuale all'interno del contenitore. I file vengono copiati dall'origine in https://myaccount.blob.core.windows.net/mycontainer/myvd1/.


gruppo di risorse resourceGroup -
Alias di input: EnvironmentNameRM. string. Obbligatorio quando Destination = AzureVMs.

Specificare il nome del gruppo di risorse di destinazione in cui verranno copiati i file.


ResourceFilteringMethod - Selezionare computer per
string. Opzionale. Usare quando Destination = AzureVMs. Valori consentiti: machineNames (nomi computer), tags. Valore predefinito: machineNames

Specificare un nome host o un tag di macchina virtuale che identifica un subset di macchine virtuali in un gruppo di risorse. i tag sono supportati solo per le risorse create tramite Azure Resource Manager.


MachineNames - criteri di filtro
string. Opzionale. Usare quando Destination = AzureVMs.

Specificare un elenco di nomi di vm o nomi di tag che identificano le macchine virtuali di destinazione dell'attività. I criteri di filtro validi includono:

  • Nome di un gruppo di risorse di Azure .
  • Variabile di output di un'attività precedente.
  • Elenco delimitato da virgole di nomi di tag o nomi di vm.
  • Formattare i nomi delle macchine virtuali usando un elenco delimitato da virgole di nomi di dominio completi o indirizzi IP.
  • Formattare i nomi dei tag per un filtro come {TagName}:{Value}. Esempio: Role:DB;OS:Win8.1, ffweb, ffdbo tag come Role:DB, Web, OS:Win8.1.

Nota: i delimitatori validi per i tag includono ,(virgola), :(colon) e ;(semicolon). Quando si specificano più tag, l'attività verrà eseguita solo nelle macchine virtuali che contengono i tag specificati. Per impostazione predefinita, l'attività viene eseguita in tutte le macchine virtuali.


di accesso amministratore di vmsAdminUserName -
string. Obbligatorio quando Destination = AzureVMs.

Specificare il nome utente di un account con autorizzazioni amministrative per tutte le macchine virtuali di destinazione.

  • I formati supportati includono: username, domain\username, machine-name\usernamee .\username.
  • I formati UPN, inclusi username@domain.com e gli account di sistema predefiniti, ad esempio NT Authority\System, non sono supportati.

vmsAdminPassword - password
string. Obbligatorio quando Destination = AzureVMs.

Specificare la password amministratore delle macchine virtuali.

L'input valido include variabili definite nelle pipeline di compilazione o versione, ad esempio $(passwordVariable). Per proteggere una password, contrassegnarla come secret.


TargetPath - Cartella di destinazione
string. Obbligatorio quando Destination = AzureVMs.

Specificare il percorso della cartella nelle macchine virtuali di Azure in cui verranno copiati i file.

Sono supportate variabili di ambiente come $env:windir e $env:systemroot. Esempi: $env:windir\FabrikamFiber\Web e c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Argomenti facoltativi (per il caricamento di file nel BLOB)
string.

Specificare argomenti aggiuntivi per AzCopy.exe che possono essere applicati durante il caricamento in BLOB, ad esempio /NC:10.

Se non vengono specificati argomenti facoltativi, per impostazione predefinita vengono aggiunti gli argomenti seguenti.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S : aggiunta quando il nome del contenitore non è $root.
  • /BlobType:page -Added quando l'account di archiviazione specificato è un account Premium.
  • /Pattern : aggiunta quando il percorso di origine è un file. Incluso con qualsiasi altro argomento facoltativo specificato.

AdditionalArgumentsForVMCopy - argomenti facoltativi (per il download di file nella macchina virtuale)
string. Opzionale. Usare quando Destination = AzureVMs.

Specificare argomenti aggiuntivi per AzCopy.exe che possono essere applicati durante il download in macchine virtuali, ad esempio /NC:10.

Se non vengono specificati argomenti facoltativi, per impostazione predefinita vengono aggiunti gli argomenti seguenti.

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

enableCopyPrerequisites - Abilitare i prerequisiti di copia
boolean. Opzionale. Usare quando Destination = AzureVMs. Valore predefinito: false

Se abilitata, usa un certificato autofirmato per configurare un listener di Gestione remota Windows (WinRM) sulla porta 5986 anziché sul protocollo HTTPS. Obbligatorio per eseguire l'operazione di copia nelle macchine virtuali di Azure. Se le macchine virtuali di destinazione usano un servizio di bilanciamento del carico, configurare le regole NAT in ingresso per la porta di destinazione (5986). Si applica solo per le macchine virtuali ARM. Nelle macchine virtuali di destinazione associate a un gruppo di sicurezza di rete (NSG), configurare una regola di sicurezza in ingresso per consentire l'accesso sulla porta 5986.


CopyFilesInParallel - copia in parallelo
boolean. Opzionale. Usare quando Destination = AzureVMs. Valore predefinito: true

Specificare true per copiare i file in parallelo alle macchine virtuali di destinazione. L'uso di questo valore può ridurre il tempo complessivo impiegato per eseguire l'azione.


CleanTargetBeforeCopy - di destinazione pulita
boolean. Opzionale. Usare quando Destination = AzureVMs. Valore predefinito: false

L'impostazione di questo valore su true pulisce la cartella di destinazione prima di eseguire l'azione di copia.


skipCACheck - certificato di test
boolean. Opzionale. Usare quando Destination = AzureVMs. Valore predefinito: true

Il valore predefinito non verrà convalidato se il certificato del server è stato firmato da una CA attendibile prima di connettersi tramite HTTPS.


outputStorageUri - URI del contenitore di archiviazione
string.

Specificare il nome della variabile usata per l'URI del contenitore di archiviazione in cui sono stati copiati i file. Valido solo quando la destinazione selezionata è un BLOB di Azure.


outputStorageContainerSasToken - token di firma di accesso condiviso del contenitore di archiviazione
string.

Specificare il nome della variabile usata per il token di firma di accesso condiviso del contenitore di archiviazione che accede ai file copiati. Usare questa variabile come input per le attività successive. Per impostazione predefinita, il token di firma di accesso condiviso scade dopo 4 ore.


sasTokenTimeOutInMinutes - periodo di scadenza del token di firma di accesso condiviso in minuti
string.

Specificare il tempo in minuti dopo il quale il token di firma di accesso condiviso scadrà. Valido solo quando la destinazione selezionata è BLOB di Azure.


Opzioni di controllo delle attività

Tutte le attività dispongono di opzioni di controllo oltre ai relativi input attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.

Variabili di output

Nessuno.

Osservazioni:

Novità della versione AzureFileCopy@3

  • AzureFileCopy@3 supporta Az Module e ha interrotto il supporto dell'endpoint di servizio di Azure classico.

  • L'attività viene usata per copiare i file dell'applicazione e altri elementi necessari per installare l'app, ad esempio script di PowerShell, moduli PowerShell-DSC e altro ancora.

  • Quando la destinazione è macchine virtuali di Azure, i file vengono prima copiati in un contenitore BLOB di Azure generato automaticamente e quindi scaricati nelle macchine virtuali. Il contenitore viene eliminato dopo che i file vengono copiati correttamente nelle macchine virtuali.

  • L'attività usa AzCopy, l'utilità della riga di comando compilata per copiare rapidamente i dati da e negli account di archiviazione di Azure. L'attività versione 3 o successiva usa AzCopy V7.

  • Per distribuire in modo dinamico i gruppi di risorse di Azure che contengono macchine virtuali, usare l'attività distribuzione del gruppo di risorse di Azure. Questa attività include un modello di esempio che può eseguire le operazioni necessarie per configurare il protocollo HTTPS WinRM nelle macchine virtuali, aprire la porta 5986 nel firewall e installare il certificato di test.

Nota

Se si esegue la distribuzione in Siti Web statici di Azure come contenitore nell'archiviazione BLOB, usare versione 2 o versione successiva per mantenere il nome del contenitore $web.

Domande frequenti

Quali sono i prerequisiti di Azure PowerShell per l'uso di questa attività?

L'attività richiede che Azure PowerShell sia installato nel computer che esegue l'agente di automazione. La versione consigliata è 1.0.2, ma l'attività funziona con la versione 0.9.8 e successive. Usare programma di installazione di Azure PowerShell v1.0.2 per ottenere la versione consigliata.

Quali sono i prerequisiti winRM per questa attività?

L'attività usa il protocollo HTTPS WinRM per copiare i file dal contenitore BLOB di archiviazione alle macchine virtuali di Azure. Il servizio HTTPS WinRM deve essere configurato nelle macchine virtuali e un certificato appropriato installato.

Se le macchine virtuali vengono create senza aprire le porte HTTPS WinRM, seguire questa procedura:

  1. Configurare una regola di accesso in ingresso per consentire HTTPS sulla porta 5986 di ogni macchina virtuale.
  2. Disabilitare restrizioni remote di Controllo dell'account utente.
  3. Specificare le credenziali per l'attività per accedere alle macchine virtuali usando un account di accesso a livello di amministratore formattato come nome utente senza riferimenti al dominio.
  4. Installare un certificato nel computer che esegue l'agente di automazione.
  5. Impostare il parametro certificato di test dell'attività per un certificato autofirmato.

Quale tipo di connessione al servizio è necessario scegliere?

Nella tabella seguente sono elencati i tipi di account di archiviazione e le connessioni al servizio associate. Per identificare se un account di archiviazione si basa sulle API classiche o sulle API di Resource Manager, accedere al portale di Azure e cercare account di archiviazione (versione classica) o account di archiviazione.

Tipo di account di archiviazione Connessioni al servizio di Azure in TFS/TS
Gestore delle Risorse Connessione al servizio Azure Resource Manager
Classico Connessione al servizio di Azure con autenticazione basata su certificati o basata su credenziali tramite un account dell'istituto di istruzione o aziendale
  • Per le risorse classiche di Azure, usare un tipo di connessione del servizio di Azure con l'autenticazione basata su certificati o credenziali. Se si usa l'autenticazione basata su credenziali, assicurarsi che le credenziali siano per un account aziendale o dell'istituto di istruzione . Gli account Microsoft, ad esempio joe@live.com e joe@hotmail.com, non sono supportati.

  • Per le macchine virtuali di Azure Resource Manager, usare un tipo di connessione del servizio azure Resource Manager. Per altre informazioni, vedere Automatizzare la distribuzione del gruppo di risorse di Azure usando un'entità servizio.

  • Se si usa un azure Resource Manager tipo di connessione del servizio o un tipo di connessione del servizio azure con autenticazione basata su certificati, l'attività filtra automaticamente gli account di archiviazione classici appropriati, gli account di archiviazione di Azure Resource Manager più recenti e altri campi. Ad esempio, il gruppo di risorse o il servizio cloud e le macchine virtuali.

Nota

Attualmente un tipo di connessione del servizio azure con l'autenticazione basata sulle credenziali non filtra i campi di archiviazione, gruppo di risorse o servizio cloud e macchine virtuali.

Come è possibile correggere l'errore '403: questa richiesta non è autorizzata a eseguire questa operazione usando questa autorizzazione'?

Quando Azure DevOps crea e autorizza la connessione al servizio ad Azure, crea una registrazione dell'app nell'istanza di Active Directory della sottoscrizione. Questa identità viene aggiunta automaticamente con un ruolo Contributor a tutte le risorse nel gruppo di risorse scelto di autorizzare. Per caricare BLOB in un account di archiviazione, l'Contributor è non sufficiente. È necessario assegnare manualmente il ruolo di Storage Blob Data Contributor all'identità di registrazione dell'app.

Copiare l'identità dell'app dalla voce ereditata esistente come Contributor che verrà visualizzata nel riquadro IAM e cercarla in modo esplicito nell'interfaccia utente Add role assignment. L'identità non è elencata nell'elenco a discesa, è necessario cercarne l'identificatore.

Cosa accade se il gruppo di risorse contiene macchine virtuali sia classiche che di Resource Manager?

Se il gruppo di risorse specificato contiene sia Azure Resource Manager che macchine virtuali classiche, il set di macchine virtuali di destinazione dipende dal tipo di connessione.

  • Per le connessioni basate su certificati e le connessioni basate su credenziali, l'operazione di copia viene eseguita solo nelle macchine virtuali classiche.
  • Per le connessioni basate sul nome dell'entità servizio, l'operazione di copia viene eseguita solo nelle macchine virtuali di Resource Manager.

Come si crea un account aziendale o dell'istituto di istruzione da usare con questa attività?

È possibile creare facilmente un account appropriato per l'uso in una connessione al servizio:

  1. Usare il portale di Azure per creare un nuovo account utente in Azure Active Directory.
  2. Aggiungere l'account utente di Azure Active Directory al gruppo coamministratori nella sottoscrizione di Azure.
  3. Accedere al portale di Azure con questo account utente e modificare la password.
  4. Usare le nuove credenziali per questo account nella connessione al servizio. Le distribuzioni verranno elaborate usando questo account.

Esempi

# 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

Requisiti

Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
richieste Gli agenti self-hosted devono avere funzionalità di che corrispondono alle seguenti richiedono di eseguire processi che usano questa attività: azureps
funzionalità di Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione dell'agente 1.103.0 o versione successiva
Categoria attività Distribuire