Delen via


AzureFileCopy@4 - Azure-bestandskopie v4-taak

Kopieer bestanden naar Azure Blob Storage of virtuele machines.

Notitie

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

Syntaxis

# Azure file copy v4
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@4
  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). 
    #sasTokenTimeOutInMinutes: '240' # string. Optional. Use when Destination = AzureBlob. SAS Token Expiration Period In Minutes. Default: 240.
    #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.

Invoer

SourcePath - bron
string. Verplicht.

De locatie van bronbestanden. Ondersteunde waarden zijn YAML Pipelines en classic Release-ondersteuning vooraf gedefinieerde systeemvariabelen zoals Build.Repository.LocalPath.

Release-variabelen worden alleen ondersteund in klassieke versies. Het jokerteken (*) wordt overal in het bestandspad of de bestandsnaam ondersteund.


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

Geef de naam op van een Azure Resource Manager-serviceverbinding geconfigureerd voor het abonnement waarin de Azure-doelservice, de virtuele machine of het opslagaccount zich bevindt. Zie Overzicht van Azure Resource Manager voor meer informatie.


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

Geef het doeltype op.


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

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 waarin 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 voor 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. Facultatief. Gebruiken 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 opgeeft myvd1, wordt er een virtuele map gemaakt in de container. 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 waarin de bestanden worden gekopieerd.


ResourceFilteringMethod - Machines selecteren op
string. Facultatief. Gebruiken wanneer Destination = AzureVMs. Toegestane waarden: machineNames (machinenamen), tags. Standaardwaarde: machineNames.

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


MachineNames - filtercriteria
string. Facultatief. Gebruiken wanneer Destination = AzureVMs.

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

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

vmsAdminUserName - aanmeldgegevens van beheerders
string. Vereist wanneer Destination = AzureVMs.

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

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

vmsAdminPassword - wachtwoord
string. Vereist wanneer Destination = AzureVMs.

Geef het wachtwoord op voor de parameter Admin Login.

Zoek de parameter Admin Login om de variabele te vinden. Selecteer het hangslotpictogram voor een variabele die is gedefinieerd op het tabblad Variables om de waarde te beveiligen en voeg hier de naam van de variabele in.


TargetPath - doelmap
string. Vereist wanneer Destination = AzureVMs.

Geef het pad op naar de map in de Virtuele Azure-machines waarin bestanden worden gekopieerd.

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


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

Geef aanvullende argumenten op voor AzCopy.exe voor gebruik bij het uploaden naar de blob en het downloaden naar de VM's. Zie Gegevens overdragen met de Command-Line Utility van AzCopy voor meer informatie.

Voor Premium-opslagaccounts die alleen Azure-pagina-blobs ondersteunen, gebruikt u --blob-type=PageBlob als een extra argument.

Standaardargumenten zijn --log-level=INFO (standaard) en --recursive (als de containernaam niet is $root).


AdditionalArgumentsForVMCopy - optionele argumenten (voor het downloaden van bestanden naar VM)
string. Facultatief. Gebruiken wanneer Destination = AzureVMs.

Geef aanvullende argumenten op voor AzCopy.exe die worden toegepast bij het downloaden naar VM's, zoals --check-length=true.

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

  • --log-level=INFO
  • --log-level=DEBUG (als de pijplijn wordt uitgevoerd in de foutopsporingsmodusset)
  • --recursive

sasTokenTimeOutInMinutes - verloopperiode van SAS-token in minuten
string. Facultatief. Gebruiken wanneer Destination = AzureBlob. Standaardwaarde: 240.

Geef de tijd in minuten op waarna het SAS-token voor de container verloopt. Dit token verloopt standaard na 4 uur.


enableCopyPrerequisites - vereisten voor kopiëren inschakelen
boolean. Facultatief. Gebruiken wanneer Destination = AzureVMs. Standaardwaarde: false.

Wanneer deze optie is ingeschakeld, wordt een zelfondertekend certificaat gebruikt om de WinRM-listener (Windows Remote Management) te configureren via het HTTPS-protocol op poort 5986. Deze configuratie is vereist voor het uitvoeren van kopieerbewerkingen op Azure-VM's.

  • Als de doel-VM's worden geopend via een load balancer, configureert u een binnenkomende NAT-regel om toegang op poort 5986 toe te staan.
  • Als de doel-VM's zijn gekoppeld aan een netwerkbeveiligingsgroep (NSG), configureert u een inkomende beveiligingsregel om toegang op poort 5986 toe te staan.

CopyFilesInParallel - kopiëren in parallelle
boolean. Facultatief. Gebruiken wanneer Destination = AzureVMs. Standaardwaarde: true.

Geef true op om bestanden parallel te kopiëren naar de doel-VM's.


CleanTargetBeforeCopy - doel opschonen
boolean. Facultatief. Gebruiken wanneer Destination = AzureVMs. Standaardwaarde: false.

Geef true op om de doelmap op te schonen voordat u bestanden kopieert.


skipCACheck - certificaat testen
boolean. Facultatief. Gebruiken wanneer Destination = AzureVMs. Standaardwaarde: true.

WinRM vereist een certificaat voor de HTTPS-overdracht bij het kopiëren van bestanden uit de tussenliggende opslagblob naar de Virtuele Azure-machines.

Als u een zelfondertekend certificaat gebruikt, geeft u true op om te voorkomen dat het proces het certificaat valideert met een vertrouwde CA.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties en algemene taakeigenschappenvoor meer informatie.

Uitvoervariabelen

Deze taak definieert de volgende uitvoervariabelen, die u kunt gebruiken in downstreamstappen, taken en fasen.

StorageContainerUri
URI van de container waarnaar de bestanden zijn gekopieerd. Alleen geldig wanneer de geselecteerde bestemming een Azure Blob is.

StorageContainerSasToken
SasToken voor de container waarnaar de bestanden zijn gekopieerd. Alleen geldig wanneer de geselecteerde bestemming een Azure Blob is.

Opmerkingen

AzureFileCopy@4 ondersteunt AzCopy.exe versie 10.8.0.

Notitie

Deze taak is geschreven in PowerShell en werkt alleen wanneer deze wordt uitgevoerd op Windows-agents. Als voor uw pijplijnen Linux-agents zijn vereist en bestanden moeten worden gekopieerd naar een Azure Storage-account, kunt u overwegen om az storage blob opdrachten uit te voeren in de azure CLI-taak als alternatief.

De taak wordt gebruikt om toepassingsbestanden en andere artefacten te kopiëren 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-blobcontainer en vervolgens gedownload naar de VM's. De container wordt verwijderd nadat de bestanden zijn gekopieerd naar de VM's.

De taak maakt gebruik van AzCopy, het opdrachtregelprogramma dat is gebouwd voor het snel kopiëren van gegevens van en naar Azure-opslagaccounts. Versie 4 van de Azure File Copy-taak maakt gebruik van AzCopy V10.

Azure File Copy versie 3 en lager haalt de Azure Storage-sleutel op om toegang te bieden. Voor Azure File Copy versie 4 en hoger moet Azure Storage worden geautoriseerd via Microsoft Entra ID of SAS-token. Verificatie met behulp van een service-principal en beheerde identiteit zijn beschikbaar. Voor beheerde identiteiten wordt alleen door het systeem beheerde identiteit ondersteund. Het vereiste autorisatieniveau wordt weergegeven in optie 1: Microsoft Entra IDgebruiken.

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

Notitie

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

De taak ondersteunt verificatie op basis van Azure Active Directory. Verificatie met behulp van een service-principal en beheerde identiteit zijn beschikbaar. Voor beheerde identiteiten wordt alleen door het systeem beheerde identiteit ondersteund.

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. U kunt de Azure PowerShell Installer v1.0.2 gebruiken om dit te verkrijgen.

Wat zijn de WinRM-vereisten voor deze taak?

Voor de taak wordt het HTTPS-protocol van Windows Remote Management (WinRM) gebruikt om de bestanden van de opslagblobcontainer naar de Virtuele Azure-machines te kopiëren. Hiervoor is vereist dat de WinRM HTTPS-service is geconfigureerd op de VM's en dat er een geschikt certificaat is geïnstalleerd.

WinRM configureren na het maken van een virtuele machine

Als de VIRTUELE machines zijn gemaakt zonder de WinRM HTTPS-poorten te openen, voert u het volgende uit:

  1. Configureer een regel voor binnenkomende toegang om HTTPS toe te staan op poort 5986 van elke VIRTUELE machine.
  2. Schakel externe beperkingen voor UAC uit.
  3. Geef de referenties voor de taak op voor toegang tot de VM's met behulp van een aanmelding op beheerdersniveau in het eenvoudige formulier gebruikersnaam zonder domeinonderdeel.
  4. Installeer een certificaat op de computer waarop de automatiseringsagent wordt uitgevoerd.
  5. Als u een zelfondertekend certificaat gebruikt, stelt u de parameter Test Certificate van de taak in.

Welk type serviceverbinding moet ik kiezen?

  • Gebruik voor Azure Resource Manager-opslagaccounts en Azure Resource Manager-VM's een Azure Resource Manager serviceverbindingstype. Zie Azure Resource Group-implementatie automatiseren met behulp van een service-principal-.

  • Tijdens het gebruik van een Azure Resource Manager serviceverbindingstype, filtert de taak automatisch de juistere Azure Resource Manager-opslagaccounts en andere velden. Bijvoorbeeld de resourcegroep of cloudservice en de VM's.

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

Er kan een geschikt account worden gemaakt voor gebruik in een serviceverbinding:

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

Als de taak mislukt, wordt het kopiëren hervat?

AzCopy V10 biedt geen ondersteuning voor logboekbestanden, dus de taak kan de kopie niet hervatten. U moet de taak opnieuw uitvoeren om alle bestanden te kopiëren.

Worden de logboekbestanden en planbestanden na de kopie opgeschoond?

De logboek- en planbestanden worden niet door de taak verwijderd. Als u de bestanden expliciet wilt opschonen, voegt u een CLI-stap toe in de werkstroom met behulp van azcopy-taken schoon.

Hoe gebruik ik de Azure-taak voor het kopiëren van bestanden om een bestand te kopiëren naar een virtuele Azure-machine die geen openbaar IP-adres heeft?

Zorg ervoor dat u versie 4 van de Azure-bestandskopietaak gebruikt. Als de taak mislukt, kunt u een buildstap toevoegen om de opdracht uit te voeren azcopy cp "source-file-path" "destination-file-path" om de bron- en doelwaarden te vervangen.

Fout Verboden: 'AzCopy.exe afgesloten met niet-nul afsluitcode tijdens het uploaden van bestanden naar blobopslag' tijdens het gebruik van de Azure File Copy-taak

De gehoste agents worden willekeurig toegewezen telkens wanneer een build wordt geactiveerd, de IP-adressen van de agent verschillen bij elke uitvoering. Als deze IP-adressen niet in uw lijst met toegestane IP-adressen staan, mislukt de communicatie tussen Azure DevOps en het opslagaccount. Volg in dergelijke scenario's de stappen die worden beschreven:

  1. Voeg een buildstap toe met behulp van Azure CLI om het IP-adres van de Door Microsoft gehoste build-agent tijdens runtime te identificeren. Hiermee wordt het IP-adres toegevoegd aan de netwerkregel in het Azure Storage-account.
  2. Voer de buildstap voor uw Azure Storage-account uit.
  3. Voeg een andere buildstap toe met behulp van Azure CLI om het IP-adres van de buildagent te verwijderen uit de netwerkregel voor het Azure Storage-account.

Voorbeelden

- task: AzureFileCopy@4
  inputs:
    SourcePath: 'Readme.md'
    azureSubscription: 'Azure'
    Destination: 'AzureBlob'
    storage: 'storageAccount'
    ContainerName: 'containerName'
    BlobPrefix: ''
  name: AzureFileCopy
  
- script: | 
    echo $(AzureFileCopy.StorageContainerUri)
    echo $(AzureFileCopy.StorageContainerSasToken)

Vereisten

Voorwaarde Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
eisen Zelf-hostende agents moeten mogelijkheden hebben die overeenkomen met de volgende eisen om taken uit te voeren die gebruikmaken van deze taak: azureps:
mogelijkheden Deze taak voldoet niet aan de vereisten voor volgende taken in de taak.
opdrachtbeperkingen Welk dan ook
variabelen instellen Welk dan ook
Agentversie 1.103.0 of hoger
Taakcategorie Implementeren