Delen via


AzureFileCopy@3 - Azure-taak voor het kopiëren van bestanden v3

Bestanden kopiëren naar Azure Blob Storage of virtuele machines.

Notitie

Deze taak biedt geen ondersteuning voor Azure Resource Manager-verificatie met werkstroomidentiteitsfederatie.

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.

Invoerwaarden

SourcePath - Bron
string. Vereist.

Geef het absolute pad op van de bronmap, het bestand op de lokale computer of een UNC-share. U kunt vooraf gedefinieerde systeemvariabelen gebruiken, zoals $(Build.Repository.LocalPath). Namen met jokertekens zoals *.zip worden niet ondersteund. De waarde of expressie die u opgeeft, moet één map of een bestandsnaam retourneren.


azureSubscription - Azure-abonnement
Invoeralias: ConnectedServiceNameARM. string. Vereist.

Geef de naam op van een Azure Resource Manager-serviceverbinding die is geconfigureerd voor het abonnement waar de doel-Azure-service, virtuele machine of opslagaccount zich bevindt. Zie Overzicht van Azure Resource Manager voor meer informatie.


Destination - Doeltype
string. Vereist. Toegestane waarden: AzureBlob (Azure Blob), AzureVMs (Azure-VM's).

Geef het doeltype op.


storage - RM-opslagaccount
Invoeralias: StorageAccountRM. string. Vereist.

Geef een bestaand ARM-opslagaccount op. Dit is het opslagaccount dat wordt gebruikt als intermediair voor het kopiëren van bestanden naar Azure-VM's.


ContainerName - Containernaam
string. Vereist wanneer Destination = AzureBlob.

De naam van de container waarnaar bestanden worden gekopieerd. Als de opgegeven container niet bestaat in het opslagaccount, wordt deze gemaakt.

Als u een virtuele map in de container wilt maken, gebruikt u de invoer van het blobvoorvoegsel. Geef bijvoorbeeld voor de doellocatie https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/de containernaam mycontainer en het blobvoorvoegsel op: vd1/vd2.


BlobPrefix - Blobvoorvoegsel
string. Optioneel. Gebruik wanneer Destination = AzureBlob.

Geef een voorvoegsel op dat kan worden gebruikt om bestanden te filteren.

Voorbeeld: U kunt een buildnummer toevoegen om de bestanden van alle blobs met hetzelfde buildnummer te filteren.

Voorbeeld: als u een blobvoorvoegsel myvd1opgeeft, wordt er een virtuele map in de container gemaakt. Bestanden worden gekopieerd van de bron naar https://myaccount.blob.core.windows.net/mycontainer/myvd1/.


resourceGroup - Resourcegroep
Invoeralias: EnvironmentNameRM. string. Vereist wanneer Destination = AzureVMs.

Geef de naam op van de doelresourcegroep waarnaar de bestanden worden gekopieerd.


ResourceFilteringMethod - Machines selecteren op
string. Optioneel. Gebruik wanneer Destination = AzureVMs. Toegestane waarden: machineNames (Computernamen), tags. Standaardwaarde: machineNames.

Geef een VM-hostnaam of -tag op waarmee een subset van vm's in een resourcegroep wordt geïdentificeerd. Tags worden alleen ondersteund voor resources die zijn gemaakt via de Azure Resource Manager.


MachineNames - Filtercriteria
string. Optioneel. Gebruik wanneer Destination = AzureVMs.

Geef een lijst op met VM-namen of tagnamen die de VM's identificeren waarop de taak is gericht. Geldige filtercriteria zijn onder andere:

  • De naam van een Azure-resourcegroep.
  • Een uitvoervariabele van een vorige taak.
  • Een door komma's gescheiden lijst met tagnamen of VM-namen.
  • Maak VM-namen op met behulp van een door komma's gescheiden lijst met FQDN's of IP-adressen.
  • Tagnamen voor een filter opmaken als {TagName}:{Value}. Voorbeeld: Role:DB;OS:Win8.1, ffweb, ffdbof tags zoals Role:DB, Web, OS:Win8.1.

Opmerking: geldige scheidingstekens voor tags zijn onder andere , (komma), :(komma) en ;(semicolon). Wanneer u meerdere tags opgeeft, wordt de taak alleen uitgevoerd op de VM's die de opgegeven tags bevatten. De taak wordt standaard uitgevoerd op alle VM's.


vmsAdminUserName - Beheer aanmelden
string. Vereist wanneer Destination = AzureVMs.

Geef de gebruikersnaam op van een account met beheerdersmachtigingen op alle doel-VM's.

  • Ondersteunde indelingen zijn: username, domain\username, machine-name\usernameen .\username.
  • UPN-indelingen met inbegrip username@domain.com van en ingebouwde systeemaccounts zoals NT Authority\System worden niet ondersteund.

vmsAdminPassword - Wachtwoord
string. Vereist wanneer Destination = AzureVMs.

Geef het beheerderswachtwoord van de VM's op.

Geldige invoer omvat variabelen die zijn gedefinieerd in build- of release-pijplijnen, zoals $(passwordVariable). Als u een wachtwoord wilt beveiligen, markeert u het als secret.


TargetPath - Doelmap
string. Vereist wanneer Destination = AzureVMs.

Geef het pad op naar de map in de Azure-VM's waarnaar bestanden worden gekopieerd.

Omgevingsvariabelen zoals $env:windir en $env:systemroot worden ondersteund. De voorbeelden: $env:windir\FabrikamFiber\Web en c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Optionele argumenten (voor het uploaden van bestanden naar blob)
string.

Geef aanvullende argumenten op AzCopy.exe die kunnen worden toegepast bij het uploaden naar blobs, zoals /NC:10.

Als er geen optionele argumenten zijn opgegeven, worden standaard de volgende argumenten toegevoegd.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S - Toegevoegd wanneer de containernaam niet $rootis.
  • /BlobType:page -Toegevoegd wanneer het opgegeven opslagaccount een Premium-account is.
  • /Pattern - Toegevoegd wanneer het bronpad een bestand is. Inbegrepen bij eventuele andere opgegeven optionele argumenten.

AdditionalArgumentsForVMCopy - Optionele argumenten (voor het downloaden van bestanden naar VM)
string. Optioneel. Gebruik wanneer Destination = AzureVMs.

Geef aanvullende argumenten op AzCopy.exe die kunnen worden toegepast bij het downloaden naar VM's, zoals /NC:10.

Als er geen optionele argumenten zijn opgegeven, worden standaard het volgende toegevoegd.

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

enableCopyPrerequisites - Vereisten voor kopiëren inschakelen
boolean. Optioneel. Gebruik wanneer Destination = AzureVMs. Standaardwaarde: false.

Indien ingeschakeld, wordt een zelfondertekend certificaat gebruikt om een WinRM-listener (Windows Remote Management) te configureren op poort 5986 in plaats van het HTTPS-protocol. Vereist voor het uitvoeren van kopieerbewerkingen op Azure-VM's. Als de doel-VM's een load balancer gebruiken, configureert u binnenkomende NAT-regels voor de doelpoort (5986). Is alleen van toepassing op ARM-VM's. Configureer op doel-VM's die zijn gekoppeld aan een netwerkbeveiligingsgroep (NSG) een binnenkomende beveiligingsregel om toegang toe te staan op poort 5986.


CopyFilesInParallel - Parallel kopiëren
boolean. Optioneel. Gebruik wanneer Destination = AzureVMs. Standaardwaarde: true.

Geef op true om bestanden parallel met de doel-VM's te kopiëren. Als u deze waarde gebruikt, kunt u de totale tijd verkorten die nodig is om de actie uit te voeren.


CleanTargetBeforeCopy - Doel opschonen
boolean. Optioneel. Gebruik wanneer Destination = AzureVMs. Standaardwaarde: false.

Als u deze waarde instelt op true , wordt de doelmap opgeschoond voordat de kopieeractie wordt uitgevoerd.


skipCACheck - Testcertificaat
boolean. Optioneel. Gebruik wanneer Destination = AzureVMs. Standaardwaarde: true.

De standaardwaarde valideert niet of het servercertificaat is ondertekend door een vertrouwde CA voordat er verbinding werd gemaakt via HTTPS.


outputStorageUri - Opslagcontainer-URI
string.

Geef de naam op van de variabele die wordt gebruikt voor de opslagcontainer-URI waarnaar bestanden zijn gekopieerd. Alleen geldig als de geselecteerde bestemming een Azure-blob is.


outputStorageContainerSasToken - SAS-token voor opslagcontainers
string.

Geef de naam op van de variabele die wordt gebruikt voor het SAS-token van de opslagcontainer dat toegang heeft tot de bestanden die zijn gekopieerd. Gebruik deze variabele als invoer voor volgende taken. Standaard verloopt het SAS-token na 4 uur.


sasTokenTimeOutInMinutes - Verloopperiode van SAS-token in minuten
string.

Geef de tijd in minuten op waarna het SAS-token verloopt. Alleen geldig als de geselecteerde bestemming Azure Blob is.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties voor besturingselementen en algemene taakeigenschappen voor meer informatie.

Uitvoervariabelen

Geen.

Opmerkingen

Wat is er nieuw in versie AzureFileCopy@3

  • AzureFileCopy@3 ondersteunt Az Module en is gestopt met het ondersteunen van het klassieke Azure-service-eindpunt.

  • De taak wordt gebruikt voor het kopiëren van toepassingsbestanden en andere artefacten die nodig zijn om de app te installeren, zoals PowerShell-scripts, PowerShell-DSC-modules en meer.

  • Wanneer het doel Azure-VM's is, worden de bestanden eerst gekopieerd naar een automatisch gegenereerde Azure Blob-container en vervolgens gedownload naar de VM's. De container wordt verwijderd nadat de bestanden naar de VM's zijn gekopieerd.

  • De taak maakt gebruik van AzCopy, het opdrachtregelprogramma dat is gebouwd om snel gegevens van en naar Azure-opslagaccounts te kopiëren. De taakversie 3 of lager maakt gebruik van AzCopy V7.

  • Als u Azure-resourcegroepen die virtuele machines bevatten, dynamisch wilt implementeren, gebruikt u de azure-resourcegroepimplementatietaak . Deze taak heeft een voorbeeldsjabloon waarmee de vereiste bewerkingen kunnen worden uitgevoerd om het WinRM HTTPS-protocol in te stellen op VM's, poort 5986 in de firewall te openen en het testcertificaat te installeren.

Notitie

Als u naar Azure Static Websites implementeert als een container in Blob Storage, gebruikt u versie 2 of hoger om de naam van de $web container te behouden.

Veelgestelde vragen

Wat zijn de Azure PowerShell vereisten voor het gebruik van deze taak?

Voor de taak moet Azure PowerShell zijn geïnstalleerd op de computer waarop de automatiseringsagent wordt uitgevoerd. De aanbevolen versie is 1.0.2, maar de taak werkt met versie 0.9.8 en hoger. Gebruik Azure PowerShell Installer v1.0.2 om de aanbevolen versie op te halen.

Wat zijn de WinRM-vereisten voor deze taak?

De taak maakt gebruik van het WinRM HTTPS-protocol om de bestanden van de opslag-blobcontainer naar de Azure-VM's te kopiëren. De WinRM HTTPS-service moet worden geconfigureerd op de VM's en er moet een geschikt certificaat worden geïnstalleerd.

Als de VM's worden gemaakt zonder de Https-poorten van WinRM te openen, voert u de volgende stappen uit:

  1. Configureer een regel voor binnenkomende toegang om HTTPS toe te staan op poort 5986 van elke VM.
  2. Externe UAC-beperkingen uitschakelen.
  3. Geef de referenties op voor de taak voor toegang tot de VM's met behulp van een aanmelding op beheerdersniveau die is opgemaakt als gebruikersnaam zonder domeinverwijzing.
  4. Installeer een certificaat op de computer waarop de automatiseringsagent wordt uitgevoerd.
  5. Stel de parameter Test Certificate van de taak in voor een zelfondertekend certificaat.

Welk type serviceverbinding moet ik kiezen?

De volgende tabel bevat de typen opslagaccounts en de bijbehorende serviceverbindingen. Als u wilt bepalen of een opslagaccount is gebaseerd op de klassieke API's of de Resource Manager API's, meldt u zich aan bij de Azure Portal en zoekt u naar Opslagaccounts (klassiek) of Opslagaccounts.

Type opslagaccount Azure-serviceverbindingen in TFS/TS
Resource Manager Azure Resource Manager-serviceverbinding
Klassiek Azure-serviceverbinding met verificatie op basis van certificaten of verificatie op basis van referenties met behulp van een school- of werkaccount
  • Gebruik voor klassieke Azure-resources een Azure-serviceverbindingstype met verificatie op basis van certificaten of referenties. Als u verificatie op basis van referenties gebruikt, moet u ervoor zorgen dat de referenties voor een school- of werkaccount zijn. Microsoft-accounts zoals joe@live.com en joe@hotmail.com worden niet ondersteund.

  • Gebruik voor Azure Resource Manager-VM's een verbindingstype voor de Azure Resource Manager-service. Zie Implementatie van Azure-resourcegroepen automatiseren met behulp van een service-principal voor meer informatie.

  • Als u een verbindingstype voor een Azure Resource Manager-service of een Azure-serviceverbindingstype met verificatie op basis van certificaten gebruikt, filtert de taak automatisch de juiste klassieke opslagaccounts, nieuwere Azure Resource Manager-opslagaccounts en andere velden. Bijvoorbeeld de resourcegroep of cloudservice en de virtuele machines.

Notitie

Momenteel filtert een Azure-serviceverbindingstype met verificatie op basis van referenties de velden opslag, resourcegroep of cloudservice en virtuele machine niet.

Hoe kan ik fout '403: deze aanvraag is niet gemachtigd om deze bewerking uit te voeren met behulp van deze machtiging'?

Wanneer Azure DevOps de serviceverbinding met Azure maakt en autoriseert, wordt er een app-registratie gemaakt in de Active Directory van uw abonnement. Deze identiteit wordt automatisch met een Contributor rol toegevoegd aan alle resources in de resourcegroep die u wilt autoriseren. Als u blobs wilt uploaden naar een opslagaccount, is het niet voldoende om een Contributor te zijn. U moet de Storage Blob Data Contributor rol handmatig toewijzen aan de app-registratie-id.

Kopieer de app-identiteit uit de bestaande overgenomen vermelding zoals Contributor die u in het deelvenster IAM ziet en zoek er expliciet naar in de Add role assignment gebruikersinterface. De identiteit wordt niet vermeld in de vervolgkeuzelijst. U moet zoeken naar de id.

Wat gebeurt er als mijn resourcegroep zowel klassieke als Resource Manager VM's bevat?

Als de opgegeven resourcegroep zowel Azure Resource Manager als klassieke VM's bevat, is de set vm's waarop het doel is gebaseerd, afhankelijk van het verbindingstype.

  • Voor verbindingen op basis van certificaten en verbindingen op basis van referenties wordt de kopieerbewerking alleen uitgevoerd op klassieke VM's.
  • Voor verbindingen op basis van service-principals wordt de kopieerbewerking alleen uitgevoerd op Resource Manager VM's.

Hoe kan ik een school- of werkaccount maken voor gebruik met deze taak?

Een geschikt account kan eenvoudig worden gemaakt voor gebruik in een serviceverbinding:

  1. Gebruik de Azure Portal om een nieuw gebruikersaccount te maken in Azure Active Directory.
  2. Voeg het Azure Active Directory-gebruikersaccount toe aan de groep co-beheerders in uw Azure-abonnement.
  3. Meld u aan bij de Azure Portal met dit gebruikersaccount en wijzig het wachtwoord.
  4. Gebruik de nieuwe referenties voor dit account in de serviceverbinding. Implementaties worden verwerkt met dit account.

Voorbeelden

# 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

Vereisten

Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
Eisen Zelf-hostende agents moeten mogelijkheden hebben die voldoen aan de volgende vereisten om taken uit te voeren die deze taak gebruiken: azureps
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie 1.103.0 of hoger
Taakcategorie Implementeren