AzureFileCopy@4 - Azure-taak voor het kopiëren van bestanden v4

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

Invoerwaarden

SourcePath - Bron
string. Vereist.

De locatie van bronbestanden. Ondersteunde waarden zijn yaml-pijplijnen en klassieke releaseondersteuning voor vooraf gedefinieerde systeemvariabelen , zoals Build.Repository.LocalPath.

Releasevariabelen worden alleen ondersteund in klassieke releases. Het jokerteken (*) wordt overal in het bestandspad of de bestandsnaam ondersteund.


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

Geef de naam op van een Azure Resource Manager-serviceverbinding die is geconfigureerd voor het abonnement waarin 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 in het opslagaccount bestaat, wordt deze gemaakt.

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


BlobPrefix - Blob-voorvoegsel
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 blob-voorvoegsel 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 op selecteren
string. Optioneel. Gebruik wanneer Destination = AzureVMs. Toegestane waarden: machineNames (machinenamen), tags. Standaardwaarde: machineNames.

Geef de naam of tag van een VM-host op die een subset van VM's in een resourcegroep identificeert. 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 met VM-namen of tagnamen op 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

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

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

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

vmsAdminPassword - Wachtwoord
string. Vereist wanneer Destination = AzureVMs.

Geef het wachtwoord voor de Admin Login parameter op.

Zoek de parameter om de Admin Login variabele te vinden. Selecteer het hangslotpictogram voor een variabele die is gedefinieerd op het Variables tabblad 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 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 voor gebruik bij het uploaden naar de blob en het downloaden naar de VM's. Zie Gegevens overdragen met het hulpprogramma AzCopy Command-Line voor meer informatie.

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

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


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

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

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

  • --log-level=INFO
  • --log-level=DEBUG (Als de pijplijn wordt uitgevoerd in de foutopsporingsmodus ingesteld)
  • --recursive

sasTokenTimeOutInMinutes - Verloopperiode van SAS-token in minuten
string. Optioneel. Gebruik 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. Optioneel. Gebruik 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 toe te staan op poort 5986.
  • Als de doel-VM's zijn gekoppeld aan een netwerkbeveiligingsgroep (NSG), configureert u 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 te kopiëren naar de doel-VM's.


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

Geef op true dat u de doelmap wilt opschonen voordat u bestanden kopieert.


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

WinRM vereist een certificaat voor de HTTPS-overdracht bij het kopiëren van bestanden van de tussenliggende opslagblob naar de Azure-VM's.

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 Besturingsopties en algemene taakeigenschappen voor 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 als de geselecteerde bestemming een Azure-blob is.

StorageContainerSasToken
SasToken voor de container waarnaar de bestanden zijn gekopieerd. Alleen geldig als 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 als alternatief opdrachten uitvoeren az storage blob in de Azure CLI-taak .

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-blobcontainer 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 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 is beschikbaar. Voor beheerde identiteiten wordt alleen een door het hele systeem beheerde identiteit ondersteund. Het vereiste autorisatieniveau wordt weergegeven in Optie 1: Microsoft Entra-id gebruiken.

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 de 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 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 is beschikbaar. Voor beheerde identiteiten wordt alleen een door het hele 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 het Azure PowerShell Installer v1.0.2 gebruiken om dit te verkrijgen.

Wat zijn de WinRM-vereisten voor deze taak?

De taak maakt gebruik van het Windows Remote Management (WinRM) HTTPS-protocol om de bestanden van de opslagblobcontainer naar de Azure-VM's te kopiëren. Hiervoor moet de WinRM HTTPS-service zijn geconfigureerd op de VM's en moet er een geschikt certificaat zijn geïnstalleerd.

WinRM configureren nadat de virtuele machine is gemaakt

Als de VM's 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 VM.
  2. Externe UAC-beperkingen uitschakelen.
  3. Geef de referenties op voor de taak voor toegang tot de VM's met behulp van aanmelding op beheerdersniveau in de eenvoudige vorm 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 Testcertificaat van de taak in.

Welk type serviceverbinding moet ik kiezen?

  • Gebruik voor Azure Resource Manager-opslagaccounts en Azure Resource Manager-VM's een verbindingstype azure Resource Manager service. Zie Implementatie van Azure-resourcegroepen automatiseren met behulp van een service-principal.

  • Tijdens het gebruik van een verbindingstype van een Azure Resource Manager-service filtert de taak automatisch de juiste nieuwere Azure Resource Manager-opslagaccounts en andere velden. Bijvoorbeeld de resourcegroep of cloudservice en de VM's.

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

Een geschikt account kan 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 referenties van dit account in de serviceverbinding. Implementaties worden vervolgens verwerkt met dit account.

Als de taak mislukt, wordt het kopiëren dan 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 aan de werkstroom met azcopy jobs clean.

Hoe kan ik de azure-bestandskopietaak gebruiken 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 build-stap toevoegen om de opdracht azcopy cp "source-file-path" "destination-file-path" uit te voeren om de bron- en doelwaarden te vervangen.

Fout verboden: 'AzCopy.exe afgesloten met niet-nul afsluitcode tijdens het uploaden van bestanden naar blob-opslag' tijdens het gebruik van de Azure-taak Voor het kopiëren van bestanden

De gehoste agents worden willekeurig toegewezen telkens wanneer een build wordt geactiveerd, de IP-adressen van de agent zijn bij elke uitvoering anders. 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 build-stap toe met behulp van Azure CLI om het IP-adres van de Microsoft Hosted Build-agent tijdens runtime te identificeren. Het IP-adres wordt toegevoegd aan de netwerkregel in het Azure Storage-account.
  2. Voer de build-stap uit voor uw Azure Storage-account.
  3. Voeg nog een 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

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 gebruikmaken van deze taak: 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