Freigeben über


AzureFileCopy@3– Aufgabe zum Kopieren von Azure-Dateien v3

Kopieren Sie Dateien auf Azure Blob Storage oder virtuellen Computern.

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.

Eingaben

SourcePath - Quelle
string. Erforderlich.

Geben Sie den absoluten Pfad des Quellordners oder der Datei auf dem lokalen Computer oder einer UNC-Freigabe an. Sie können vordefinierte Systemvariablen wie $(Build.Repository.LocalPath)verwenden. Namen mit Platzhaltern wie *.zip werden nicht unterstützt. Der von Ihnen angegebene Wert oder Ausdruck sollte einen einzelnen Ordner oder einen Dateinamen zurückgeben.


azureSubscription - Azure-Abonnement
Eingabealias: ConnectedServiceNameARM. string. Erforderlich.

Geben Sie den Namen einer Azure Resource Manager-Dienstverbindung an, die für das Abonnement konfiguriert ist, in dem sich der Azure-Zieldienst, der virtuelle Computer oder das Speicherkonto befindet. Weitere Informationen finden Sie unter Azure Resource Manager – Übersicht.


Destination - Zieltyp
string. Erforderlich. Zulässige Werte: AzureBlob (Azure Blob), AzureVMs (Azure-VMs).

Geben Sie den Zieltyp an.


storage - RM-Speicherkonto
Eingabealias: StorageAccountRM. string. Erforderlich.

Wählen Sie ein bereits vorhandenes ARM-Speicherkonto aus. Dies ist das Speicherkonto, das als Vermittler zum Kopieren von Dateien auf azure-VMs verwendet wird.


ContainerName - Containername
string. Erforderlich, wenn Destination = AzureBlob.

Der Name des Containers, in den Dateien kopiert werden. Wenn der angegebene Container nicht im Speicherkonto vorhanden ist, wird er erstellt.

Um ein virtuelles Verzeichnis im Container zu erstellen, verwenden Sie die Blobpräfixeingabe. Geben Sie beispielsweise für den Zielspeicherort https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/den Containernamen mycontainer und das Blobpräfix an: vd1/vd2.


BlobPrefix - Blobpräfix
string. Optional. Verwenden Sie , wenn Destination = AzureBlob.

Geben Sie ein Präfix an, das zum Filtern von Dateien verwendet werden kann.

Beispiel: Sie können eine Buildnummer anfügen, um die Dateien aus allen Blobs mit derselben Buildnummer zu filtern.

Beispiel: Wenn Sie ein Blobpräfix myvd1angeben, wird ein virtuelles Verzeichnis im Container erstellt. Dateien werden aus der Quelle in https://myaccount.blob.core.windows.net/mycontainer/myvd1/kopiert.


resourceGroup - Ressourcengruppe
Eingabealias: EnvironmentNameRM. string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie den Namen der Zielressourcengruppe an, in die Dateien kopiert werden sollen.


ResourceFilteringMethod - Computer nach auswählen
string. Optional. Verwenden Sie , wenn Destination = AzureVMs. Zulässige Werte: machineNames (Computernamen), tags. Standardwert. machineNames.

Geben Sie einen VM-Hostnamen oder -Tag an, der eine Teilmenge von VMs in einer Ressourcengruppe identifiziert. Tags werden nur für Ressourcen unterstützt, die über die Azure-Resource Manager erstellt wurden.


MachineNames - Filterkriterien
string. Optional. Verwenden Sie , wenn Destination = AzureVMs.

Geben Sie eine Liste von VM- oder Tagnamen an, die die VMs identifizieren, auf die die Aufgabe abzielen soll. Gültige Filterkriterien umfassen:

  • Der Name einer Azure-Ressourcengruppe.
  • Eine Ausgabevariable aus einer vorherigen Aufgabe.
  • Eine durch Trennzeichen getrennte Liste von Tagnamen oder VM-Namen.
  • Formatieren Sie VM-Namen mithilfe einer durch Trennzeichen getrennten Liste von FQDNs oder IP-Adressen.
  • Formatieren Sie Tagnamen für einen Filter als {TagName}:{Value}. Beispiel: Role:DB;OS:Win8.1, ffweb, ffdboder Tags wie Role:DB, Web, . OS:Win8.1

Hinweis: Gültige Trennzeichen für Tags sind ,(Kommas), :(kolon) und ;(semicolon). Wenn mehrere Tags bereitgestellt werden, wird der Task nur auf den virtuellen Computern ausgeführt, die die angegebenen Tags enthalten. Standardmäßig wird der Task auf allen virtuellen Computern ausgeführt.


vmsAdminUserName - Admin Anmeldung
string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie den Benutzernamen eines Kontos mit Administratorberechtigungen für alle Ziel-VMs an.

  • Zu den unterstützten Formaten gehören : username, domain\username, machine-name\usernameund .\username.
  • UPN-Formate, einschließlich username@domain.com und integrierte Systemkonten, wie NT Authority\System z. B. werden nicht unterstützt.

vmsAdminPassword - Passwort
string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie das Administratorkennwort der VMs an.

Gültige Eingaben umfassen Variablen, die in Build- oder Releasepipelines wie $(passwordVariable)definiert sind. Um ein Kennwort zu sichern, markieren Sie es als secret.


TargetPath - Zielordner
string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie den Pfad zu dem Ordner auf den azure-VMs an, in den Dateien kopiert werden sollen.

Umgebungsvariablen wie $env:windir und $env:systemroot werden unterstützt. Beispiele: $env:windir\FabrikamFiber\Web und c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Optionale Argumente (zum Hochladen von Dateien in ein Blob)
string.

Stellen Sie zusätzliche Argumente bereit, die AzCopy.exe beim Hochladen auf Blobs wie /NC:10angewendet werden können.

Wenn keine optionalen Argumente angegeben werden, werden standardmäßig die folgenden Argumente hinzugefügt.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S – Wird hinzugefügt, wenn der Containername nicht $rootist.
  • /BlobType:page –Wird hinzugefügt, wenn es sich bei dem angegebenen Speicherkonto um ein Premium-Konto handelt.
  • /Pattern – Wird hinzugefügt, wenn der Quellpfad eine Datei ist. Enthalten in allen anderen angegebenen optionalen Argumenten.

AdditionalArgumentsForVMCopy - Optionale Argumente (zum Herunterladen von Dateien auf einen virtuellen Computer)
string. Optional. Verwenden Sie , wenn Destination = AzureVMs.

Stellen Sie zusätzliche Argumente bereit, die AzCopy.exe beim Herunterladen auf virtuelle Computer wie /NC:10angewendet werden können.

Wenn keine optionalen Argumente angegeben werden, wird standardmäßig Folgendes hinzugefügt.

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

enableCopyPrerequisites - Aktivieren der Kopiervoraussetzungen
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. false.

Wenn aktiviert, wird ein selbstsigniertes Zertifikat verwendet, um einen Windows-Remoteverwaltungslistener (WinRM) an Port 5986 anstelle des HTTPS-Protokolls zu konfigurieren. Erforderlich für die Ausführung eines Kopiervorgangs auf Azure-VMs. Wenn die Ziel-VMs einen Lastenausgleich verwenden, konfigurieren Sie eingehende NAT-Regeln für den Zielport (5986). Gilt nur für ARM-VMs. Konfigurieren Sie auf Ziel-VMs, die einer Netzwerksicherheitsgruppe (NSG) zugeordnet sind, eine Eingangssicherheitsregel, um den Zugriff auf Port 5986 zuzulassen.


CopyFilesInParallel - Parallel kopieren
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. true.

Geben Sie an true , dass Dateien parallel zu den Ziel-VMs kopiert werden sollen. Wenn Sie diesen Wert verwenden, können Sie die gesamte Zeit reduzieren, die für die Ausführung der Aktion erforderlich ist.


CleanTargetBeforeCopy - Ziel bereinigen
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. false.

Wenn Sie diesen Wert so festlegen, dass true der Zielordner vor dem Ausführen der Kopieraktion bereinigt wird.


skipCACheck - Zertifikat testen
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. true.

Der Standardwert überprüft nicht, ob das Serverzertifikat vor der Verbindung über HTTPS von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde.


outputStorageUri - Speichercontainer-URI
string.

Geben Sie den Namen der Variablen an, die für den Speichercontainer-URI verwendet wird, in den Dateien kopiert wurden. Gültig nur, wenn das ausgewählte Ziel ein Azure Blob ist.


outputStorageContainerSasToken - SAS-Token für Speichercontainer
string.

Geben Sie den Namen der Variablen an, die für das SAS-Token des Speichercontainers verwendet wird, das auf die kopierten Dateien zugreift. Verwenden Sie diese Variable als Eingabe für nachfolgende Aufgaben. Standardmäßig läuft das SAS-Token nach 4 Stunden ab.


sasTokenTimeOutInMinutes - ABLAUFZEITRAUM für SAS-Token in Minuten
string.

Geben Sie die Zeit in Minuten an, nach der das SAS-Token abläuft. Gültig nur, wenn das ausgewählte Ziel Azure Blob ist.


Optionen für die Vorgangskontrolle

Alle Vorgänge verfügen zusätzlich zu ihren Eingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.

Ausgabevariablen

Keine.

Hinweise

Neuerungen in Version AzureFileCopy@3

  • AzureFileCopy@3 unterstützt Az Module und beendet die Unterstützung des klassischen Azure-Dienstendpunkts.

  • Die Aufgabe wird verwendet, um Anwendungsdateien und andere Artefakte zu kopieren, die für die Installation der App erforderlich sind, z. B. PowerShell-Skripts, PowerShell-DSC-Module usw.

  • Wenn das Ziel Azure-VMs ist, werden die Dateien zuerst in einen automatisch generierten Azure Blob-Container kopiert und dann auf die virtuellen Computer heruntergeladen. Der Container wird gelöscht, nachdem die Dateien erfolgreich auf die VMs kopiert wurden.

  • Die Aufgabe verwendet AzCopy, das Befehlszeilenhilfsprogramm, das zum schnellen Kopieren von Daten aus und in Azure-Speicherkonten entwickelt wurde. In Versionen der Aufgabe bis Version 3 wird AzCopy V7 verwendet.

  • Verwenden Sie zum dynamischen Bereitstellen von Azure-Ressourcengruppen, die virtuelle Computer enthalten, die Aufgabe Bereitstellung von Azure-Ressourcengruppen. Diese Aufgabe verfügt über eine Beispielvorlage, die die erforderlichen Vorgänge ausführen kann, um das WinRM-HTTPS-Protokoll auf VMs einzurichten, Port 5986 in der Firewall zu öffnen und das Testzertifikat zu installieren.

Hinweis

Wenn Sie die Bereitstellung in Azure Static Websites als Container in Blob Storage durchführen, verwenden Sie Version 2 oder höher, um den $web Containernamen beizubehalten.

Häufig gestellte Fragen

Was sind die Azure PowerShell Voraussetzungen für die Verwendung dieser Aufgabe?

Die Aufgabe erfordert, dass Azure PowerShell auf dem Computer installiert ist, auf dem der Automation-Agent ausgeführt wird. Die empfohlene Version ist 1.0.2, aber die Aufgabe funktioniert mit Version 0.9.8 und höher. Verwenden Sie Azure PowerShell Installer v1.0.2, um die empfohlene Version abzurufen.

Was sind die WinRM-Voraussetzungen für diese Aufgabe?

Die Aufgabe verwendet das WinRM-HTTPS-Protokoll, um die Dateien aus dem Speicherblobcontainer auf die azure-VMs zu kopieren. Der WinRM-HTTPS-Dienst muss auf den VMs konfiguriert und ein geeignetes Zertifikat installiert sein.

Wenn die virtuellen Computer erstellt werden, ohne die WinRM-HTTPS-Ports zu öffnen, führen Sie die folgenden Schritte aus:

  1. Konfigurieren Sie eine Zugriffsregel für eingehenden Datenverkehr, um HTTPS an Port 5986 jeder VM zuzulassen.
  2. Deaktivieren Sie UAC-Remoteeinschränkungen.
  3. Geben Sie die Anmeldeinformationen für die Aufgabe für den Zugriff auf die virtuellen Computer mithilfe einer Anmeldung auf Administratorebene an, die als Benutzername ohne Domänenverweis formatiert ist.
  4. Installieren Sie ein Zertifikat auf dem Computer, auf dem der Automatisierungs-Agent ausgeführt wird.
  5. Legen Sie den Test Certificate-Parameter der Aufgabe für ein selbstsigniertes Zertifikat fest.

Welche Art von Dienstverbindung sollte ich auswählen?

In der folgenden Tabelle sind Speicherkontotypen und die zugehörigen Dienstverbindungen aufgeführt. Um zu ermitteln, ob ein Speicherkonto auf den klassischen APIs oder den Resource Manager-APIs basiert, melden Sie sich beim Azure-Portal an, und suchen Sie nach Speicherkonten (klassisch) oder Speicherkonten.

Speicherkontotyp Azure-Dienstverbindungen in TFS/TS
Ressourcen-Manager Herstellen einer Verbindung mit Microsoft Azure
Klassisch Azure-Dienstverbindung mit zertifikatbasierter oder anmeldeinformationenbasierter Authentifizierung über ein Schul-, Geschäfts- oder Unikonto
  • Verwenden Sie für klassische Azure-Ressourcen einen Azure-Dienstverbindungstyp mit zertifikat- oder anmeldeinformationenbasierter Authentifizierung. Wenn Sie anmeldeinformationenbasierte Authentifizierung verwenden, stellen Sie sicher, dass die Anmeldeinformationen für ein Schul- oder Geschäftskonto gelten. Microsoft-Konten wie joe@live.com und joe@hotmail.com werden nicht unterstützt.

  • Verwenden Sie für Azure Resource Manager-VMs einen Azure Resource Manager-Dienstverbindungstyp. Weitere Informationen finden Sie unter Automatisieren der Azure-Ressourcengruppenbereitstellung mithilfe eines Dienstprinzipals.

  • Wenn Sie einen Azure Resource Manager-Dienstverbindungstyp oder einen Azure-Dienstverbindungstyp mit zertifikatbasierter Authentifizierung verwenden, filtert die Aufgabe automatisch die entsprechenden klassischen Speicherkonten, neuere Azure Resource Manager Speicherkonten und andere Felder. Beispiele: Ressourcengruppe oder Clouddienst, virtuelle Computer.

Hinweis

Derzeit filtert ein Azure-Dienstverbindungstyp mit anmeldeinformationenbasierter Authentifizierung nicht die Felder Speicher, Ressourcengruppe oder Clouddienst und virtuelle Computer.

Wie kann ich den Fehler „403: Diese Anforderung ist nicht autorisiert, diesen Vorgang mit dieser Berechtigung auszuführen“ beheben?

Beim Erstellen und Autorisieren der Dienstverbindung mit Azure durch Azure DevOps wird eine App-Registrierung in der Active Directory-Instanz Ihres Abonnements erstellt. Diese Identität wird automatisch allen Ressourcen in der Ressourcengruppe, die Sie autorisieren möchten, mit der Rolle Contributor hinzugefügt. Um Blobs in ein Speicherkonto hochzuladen, reicht es nicht aus, ein -ContributorKonto zu sein. Sie müssen die Rolle Storage Blob Data Contributor manuell der App-Registrierungsidentität zuweisen.

Kopieren Sie die App-Identität aus dem vorhandenen geerbten Eintrag, wie Contributor sie im IAM-Bereich angezeigt wird, und suchen Sie explizit auf der Add role assignment Benutzeroberfläche danach. Die Identität ist nicht in der Dropdownliste aufgeführt, Sie müssen nach ihrem Bezeichner suchen.

Was geschieht, wenn meine Ressourcengruppe sowohl klassische als auch Resource Manager-VMs enthält?

Wenn die angegebene Ressourcengruppe sowohl Azure Resource Manager als auch klassische VMs enthält, hängt die Gruppe von VMs, die als Ziel verwendet werden, vom Verbindungstyp ab.

  • Bei zertifikatbasierten Verbindungen und anmeldeinformationenbasierten Verbindungen wird der Kopiervorgang nur auf klassischen VMs ausgeführt.
  • Für Dienstprinzipalnamen-basierte Verbindungen wird der Kopiervorgang nur auf Resource Manager virtuellen Computern ausgeführt.

Wie kann ich ein Schul-, Geschäfts- oder Unikonto für diese Aufgabe erstellen?

Ein geeignetes Konto kann ganz einfach für die Verwendung in einer Dienstverbindung erstellt werden:

  1. Erstellen Sie über das Azure-Portal ein neues Benutzerkonto in Azure Active Directory.
  2. Fügen Sie das Azure Active Directory-Benutzerkonto der Gruppe „Co-Administratoren“ in Ihrem Azure-Abonnement hinzu.
  3. Melden Sie sich mit diesem Benutzerkonto beim Azure-Portal an, und ändern Sie das Kennwort.
  4. Verwenden Sie die neuen Anmeldeinformationen für dieses Konto in der Dienstverbindung. Bereitstellungen werden mit diesem Konto verarbeitet.

Beispiele

# 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

Anforderungen

Anforderung Beschreibung
Pipelinetypen YAML, Klassischer Build, klassisches Release
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Selbstgehostete Agents müssen über Funktionen verfügen, die den folgenden Anforderungen entsprechen, um Aufträge auszuführen, die diese Aufgabe verwenden: azureps
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Setzbare Variablen Any
Agent-Version 1.103.0 oder höher
Aufgabenkategorie Bereitstellen