Freigeben über


AzureFileCopy@4 – Azure-Dateikopie v4-Aufgabe

Kopieren Sie Dateien in Azure Blob Storage oder virtuelle Computer.

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.

Eingänge

SourcePath - Source
string. Erforderlich.

Der Speicherort der Quelldateien. Unterstützte Werte sind YAML-Pipelines und Classic Release-Unterstützung vordefinierte Systemvariablen wie Build.Repository.LocalPath.

Releasevariablen werden nur in klassischen Versionen unterstützt. Das Platzhaltersymbol (*) wird an einer beliebigen Stelle im Dateipfad oder Dateinamen unterstützt.


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

Geben Sie den Namen einer Azure Resource Manager-Dienstverbindung an, 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 Storage Account
Eingabealias: StorageAccountRM. string. Erforderlich.

Geben Sie ein bereits vorhandenes ARM-Speicherkonto an. Dies ist das Speicherkonto, das als Vermittler zum Kopieren von Dateien in 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.

Verwenden Sie die Blobpräfixeingabe, um ein virtuelles Verzeichnis innerhalb des Containers zu erstellen. Geben Sie beispielsweise für den Zielspeicherort https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/containernamen mycontainer und Blobpräfix an: vd1/vd2.


BlobPrefix - Blobpräfix-
string. Wahlfrei. Wird verwendet, 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 innerhalb des Containers ein virtuelles Verzeichnis 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 die Dateien kopiert werden sollen.


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

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


MachineNames - Filterkriterien
string. Wahlfrei. Wird verwendet, wenn Destination = AzureVMs.

Stellen Sie eine Liste der VM-Namen oder Tagnamen bereit, die die virtuellen Computer identifizieren, auf die die Aufgabe ausgerichtet ist. Gültige Filterkriterien umfassen:

  • Der Name einer Azure Resource Group.
  • Eine Ausgabevariable aus einem vorherigen Vorgang.
  • Eine durch Trennzeichen getrennte Liste von Tagnamen oder VM-Namen.
  • Formatieren Sie VM-Namen mithilfe einer durch Kommas getrennten Liste von FQDNs oder IP-Adressen.
  • Formatieren von Tagnamen für einen Filter als {TagName}:{Value} Beispiel: Role:DB;OS:Win8.1

vmsAdminUserName - Administratoranmeldung
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 wie username@domain.com und integrierte Systemkonten wie NT Authority\System werden nicht unterstützt.

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

Geben Sie das Kennwort für den parameter Admin Login an.

Um die Variable zu finden, suchen Sie den Admin Login Parameter. Wählen Sie das Vorhängeschlosssymbol für eine Variable aus, die auf der Registerkarte Variables definiert ist, um den Wert zu schützen und den Variablennamen hier einzufügen.


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

Geben Sie den Pfad zum Ordner in den Virtuellen Azure-Computern 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 blob)
string.

Stellen Sie zusätzliche Argumente bereit, die AzCopy.exe, um sie beim Hochladen in das Blob zu verwenden und auf die virtuellen Computer herunterzuladen. Weitere Informationen finden Sie unter Transferdaten mit dem AzCopy Command-Line Utility.

Verwenden Sie für Premium-Speicherkonten, die nur Azure-Seiten-BLOBs unterstützen, --blob-type=PageBlob als zusätzliches Argument.

Standardargumente enthalten --log-level=INFO (Standard) und --recursive (wenn der Containername nicht $rootist).


AdditionalArgumentsForVMCopy - optionale Argumente (zum Herunterladen von Dateien auf einen virtuellen Computer)
string. Wahlfrei. Wird verwendet, wenn Destination = AzureVMs.

Stellen Sie zusätzliche Argumente für AzCopy.exe bereit, die beim Herunterladen auf VMs wie --check-length=trueangewendet werden.

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

  • --log-level=INFO
  • --log-level=DEBUG (Wenn die Pipeline im Debugmodus festgelegt wird)
  • --recursive

ablaufzeitraum sasTokenTimeOutInMinutes - SAS-Token in Minuten
string. Wahlfrei. Wird verwendet, wenn Destination = AzureBlob. Standardwert: 240.

Geben Sie die Zeit in Minuten an, nach der das SAS-Token für den Container abläuft. Dieses Token läuft standardmäßig nach 4 Stunden ab.


enableCopyPrerequisites - Aktivieren von Kopiervoraussetzungen
boolean. Wahlfrei. Wird verwendet, wenn Destination = AzureVMs. Standardwert: false.

Wenn diese Option aktiviert ist, verwendet diese Option ein selbstsigniertes Zertifikat, um den Windows Remote Management (WinRM)-Listener über das HTTPS-Protokoll auf Port 5986 zu konfigurieren. Diese Konfiguration ist für das Ausführen von Kopiervorgängen auf Azure-VMs erforderlich.

  • Wenn auf die Ziel-VMs über einen Lastenausgleich zugegriffen wird, konfigurieren Sie eine eingehende NAT-Regel, um den Zugriff auf Port 5986 zu ermöglichen.
  • Wenn die Ziel-VMs einer Netzwerksicherheitsgruppe (Network Security Group, NSG) zugeordnet sind, konfigurieren Sie eine eingehende Sicherheitsregel, um den Zugriff auf Port 5986 zuzulassen.

CopyFilesInParallel - Kopieren in paralleler
boolean. Wahlfrei. Wird verwendet, wenn Destination = AzureVMs. Standardwert: true.

Geben Sie true an, um Dateien parallel zu den Ziel-VMs zu kopieren.


CleanTargetBeforeCopy - clean Target
boolean. Wahlfrei. Wird verwendet, wenn Destination = AzureVMs. Standardwert: false.

Geben Sie true an, um den Zielordner vor dem Kopieren von Dateien zu bereinigen.


skipCACheck - Testzertifikat
boolean. Wahlfrei. Wird verwendet, wenn Destination = AzureVMs. Standardwert: true.

WinRM erfordert ein Zertifikat für die HTTPS-Übertragung beim Kopieren von Dateien aus dem Zwischenspeicher-BLOB in die Azure-VMs.

Wenn Sie ein selbstsigniertes Zertifikat verwenden, geben Sie true an, um zu verhindern, dass das Zertifikat mit einer vertrauenswürdigen Zertifizierungsstelle überprüft wird.


Aufgabensteuerungsoptionen

Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.

Ausgabevariablen

Mit dieser Aufgabe werden die folgenden Ausgabevariablendefiniert, die Sie in nachgeschalteten Schritten, Aufträgen und Phasen verwenden können.

StorageContainerUri
URI des Containers, in den die Dateien kopiert wurden. Nur gültig, wenn das ausgewählte Ziel ein Azure Blob ist.

StorageContainerSasToken
SasToken für den Container, in den die Dateien kopiert wurden. Nur gültig, wenn das ausgewählte Ziel ein Azure Blob ist.

Bemerkungen

AzureFileCopy@4 unterstützt AzCopy.exe Version 10.8.0.

Hinweis

Diese Aufgabe ist in PowerShell geschrieben und funktioniert nur, wenn sie unter Windows-Agents ausgeführt werden. Wenn Ihre Pipelines Linux-Agents erfordern und Dateien in ein Azure Storage-Konto kopieren müssen, sollten Sie az storage blob Befehle in der Azure CLI-Aufgabe als Alternative ausführen.

Die Aufgabe wird verwendet, um Anwendungsdateien und andere Artefakte zu kopieren, die zum Installieren der App erforderlich sind. z. B. PowerShell-Skripts, PowerShell-DSC Module und vieles mehr.

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

Die Aufgabe verwendet AzCopy, das Befehlszeilenprogramm, das für schnelles Kopieren von Daten aus und in Azure-Speicherkonten erstellt wurde. Version 4 der Azure File Copy-Aufgabe verwendet AzCopy V10.

Azure File Copy, Version 3 und niedriger, würde den Azure Storage-Schlüssel abrufen, um Zugriff zu bieten. Azure File Copy Version 4 und höher erfordern, dass Azure Storage über Microsoft Entra ID oder SAS-Tokenautorisiert wird. Die Authentifizierung mithilfe eines Dienstprinzipals und einer verwalteten Identität ist verfügbar. Bei verwalteten Identitäten wird nur die systemweite verwaltete Identität unterstützt. Die erforderliche Autorisierungsstufe wird in Option 1 angezeigt: Microsoft Entra IDverwenden.

Um Azure-Ressourcengruppen, die virtuelle Computer enthalten, dynamisch bereitzustellen, verwenden Sie die Azure Resource Group Deployment Task. Diese Aufgabe verfügt über eine Beispielvorlage, die die erforderlichen Vorgänge ausführen kann, um das WinRM HTTPS-Protokoll auf den virtuellen Computern einzurichten, Port 5986 in der Firewall zu öffnen und das Testzertifikat zu installieren.

Hinweis

Wenn Sie in Azure Static Websites als Container im Blob Storage bereitstellen, verwenden Sie Version 2 oder höher der Aufgabe, um den Namen des $web Containers beizubehalten.

Die Aufgabe unterstützt die Authentifizierung basierend auf Azure Active Directory. Die Authentifizierung mithilfe eines Dienstprinzipals und einer verwalteten Identität ist verfügbar. Bei verwalteten Identitäten wird nur die systemweite verwaltete Identität unterstützt.

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

Die Aufgabe erfordert, dass Azure PowerShell auf dem Computer installiert ist, auf dem der Automatisierungs-Agent ausgeführt wird. Die empfohlene Version ist 1.0.2, die Aufgabe funktioniert jedoch mit Version 0.9.8 und höher. Sie können den Azure PowerShell Installer v1.0.2 verwenden, um dies zu erhalten.

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

Die Aufgabe verwendet das HTTPS-Protokoll der Windows-Remoteverwaltung (WinRM), um die Dateien aus dem Speicher-BLOB-Container in die Azure-VMs zu kopieren. Dies erfordert, dass der WinRM HTTPS-Dienst auf den virtuellen Computern konfiguriert ist und ein geeignetes Zertifikat installiert ist.

Konfigurieren von WinRM nach der Erstellung virtueller Computer

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

  1. Konfigurieren Sie eine Eingehende Zugriffsregel, um HTTPS auf Port 5986 jeder VM zuzulassen.
  2. Deaktivieren Sie UAC-Remoteeinschränkungen.
  3. Geben Sie die Anmeldeinformationen für die Aufgabe an, um mithilfe einer Anmeldung auf Administratorebene im einfachen Formular Benutzernamen ohne Domänenteil zuzugreifen.
  4. Installieren Sie ein Zertifikat auf dem Computer, auf dem der Automatisierungs-Agent ausgeführt wird.
  5. Wenn Sie ein selbstsigniertes Zertifikat verwenden, legen Sie den Testzertifikat Parameter der Aufgabe fest.

Welche Art von Dienstverbindung sollte ich auswählen?

  • Verwenden Sie für Azure Resource Manager-Speicherkonten und azure Resource Manager-VMs einen Azure Resource Manager Dienstverbindungstyp. Siehe Automatisieren der Azure Resource Group-Bereitstellung mithilfe eines Dienstprinzipals.

  • Bei Verwendung eines Azure Resource Manager Dienstverbindungstyp filtert der Vorgang automatisch die entsprechenden neueren Azure Resource Manager-Speicherkonten und andere Felder. Beispielsweise die Ressourcengruppe oder der Clouddienst und die virtuellen Computer.

Wie erstelle ich ein Schul- oder Geschäftskonto für die Verwendung mit dieser Aufgabe?

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

  1. Verwenden Sie das Azure-Portal, um ein neues Benutzerkonto in Azure Active Directory zu erstellen.
  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 Anmeldeinformationen dieses Kontos in der Dienstverbindung. Bereitstellungen werden dann mit diesem Konto verarbeitet.

Wenn die Aufgabe fehlschlägt, wird die Kopie fortgesetzt?

Da von AzCopy v10 keine Journaldateien unterstützt werden, kann der Kopiervorgang nicht fortgesetzt werden. Sie müssen die Aufgabe erneut ausführen, um alle Dateien zu kopieren.

Werden die Protokolldateien und die Plandateien nach der Kopie bereinigt?

Die Protokoll- und Plandateien werden von der Aufgabe nicht gelöscht. Um die Dateien explizit zu bereinigen, fügen Sie einen CLI-Schritt im Workflow hinzu, indem Sie azcopy-Aufträge sauber.

Wie kann ich die Azure-Dateikopie-Aufgabe verwenden, um eine Datei auf einen virtuellen Azure-Computer zu kopieren, der keine öffentliche IP-Adresse hat?

Stellen Sie sicher, dass Sie Version 4 der Azure-Dateikopie-Aufgabe verwenden. Wenn die Aufgabe fehlschlägt, können Sie einen Buildschritt hinzufügen, um den Befehl azcopy cp "source-file-path" "destination-file-path" auszuführen, um die Quell- und Zielwerte zu ersetzen.

Unzulässiger Fehler: 'AzCopy.exe beim Hochladen von Dateien in BLOB-Speicher mit Nicht-Null-Beendigungscode beendet, während die Azure-Dateikopie-Aufgabe verwendet wird

Die gehosteten Agents werden bei jedem Auslösen eines Builds zufällig zugewiesen, die Agent-IP-Adressen bei jeder Ausführung unterschiedlich sein. Wenn diese IP-Adressen nicht in Ihrer Liste zulässiger IPs enthalten sind, schlägt die Kommunikation zwischen Azure DevOps und dem Speicherkonto fehl. Führen Sie in solchen Szenarien die beschriebenen Schritte aus:

  1. Fügen Sie einen Buildschritt mit Azure CLI hinzu, um die IP-Adresse des Microsoft Hosted Build-Agents zur Laufzeit zu identifizieren. Die IP-Adresse wird der Netzwerkregel im Azure Storage-Konto hinzugefügt.
  2. Führen Sie den Buildschritt für Ihr Azure Storage-Konto aus.
  3. Fügen Sie einen weiteren Buildschritt mit Azure CLI hinzu, um die IP-Adresse des Build-Agents aus der Azure Storage Account-Netzwerkregel zu entfernen.

Beispiele

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

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Classic Build, Classic Release
Läuft auf Agent, DeploymentGroup
Anforderungen Self-hosted agents must have capabilities that match the following anforderungen to run jobs that use this task: azureps:
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Jegliche
Settable-Variablen Jegliche
Agentversion 1.103.0 oder höher
Vorgangskategorie Einsetzen