AzureFileCopy@4: Azure-Dateikopiervorgang v4

Kopieren von Dateien auf 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.

Eingaben

SourcePath - Quelle
string. Erforderlich.

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

Releasevariablen werden nur in klassischen Releases unterstützt. Das Karte Symbol (*) wird überall im Dateipfad oder Dateinamen unterstützt.


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.

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/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 im Container 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 - Wählen Sie Computer nach aus.
string. Optional. Verwenden Sie , wenn Destination = AzureVMs. Zulässige Werte: machineNames (Computernamen), tags. Standardwert. machineNames.

Geben Sie einen VM-Hostnamen oder ein 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-Namen oder Tagnamen an, die die VMs identifizieren, auf die die Aufgabe ausgerichtet wird. 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 von Tagnamen für einen Filter als {TagName}:{Value} Beispiel: Role:DB;OS:Win8.1

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

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

  • Unterstützte Formate sind: 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 - Passwort
string. Erforderlich, wenn Destination = AzureVMs.

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

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


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 in das Blob und Herunterladen auf die VMs verwendet werden sollen. Weitere Informationen finden Sie unter Übertragen von Daten mit dem AzCopy-Command-Line-Hilfsprogramm .

Verwenden Sie --blob-type=PageBlob für Storage Premium-Konten, die nur Azure-Seitenblobs unterstützen, als zusätzliches Argument.

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


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

Stellen Sie zusätzliche Argumente bereit, die AzCopy.exe beim Herunterladen auf VMs angewendet werden, --check-length=truez. B. .

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

  • --log-level=INFO
  • --log-level=DEBUG (Wenn die Pipeline im Debugmodus ausgeführt wird, legen Sie fest.
  • --recursive

sasTokenTimeOutInMinutes - Ablaufzeitraum für SAS-Token in Minuten
string. Optional. Verwenden Sie , wenn Destination = AzureBlob. Standardwert. 240.

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


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

Wenn diese Option aktiviert ist, verwendet diese Option ein selbstsigniertes Zertifikat, um den Windows-Remoteverwaltungslistener (Windows Remote Management, WinRM) über das HTTPS-Protokoll an Port 5986 zu konfigurieren. Diese Konfiguration ist erforderlich, um Kopiervorgänge auf Azure-VMs auszuführen.

  • Wenn über einen Lastenausgleich auf die Ziel-VMs zugegriffen wird, konfigurieren Sie eine NAT-Regel für eingehenden Datenverkehr, um den Zugriff auf Port 5986 zuzulassen.
  • Wenn die Ziel-VMs einer Netzwerksicherheitsgruppe (NSG) zugeordnet sind, konfigurieren Sie 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 , um Dateien parallel zu den Ziel-VMs zu kopieren.


CleanTargetBeforeCopy - Bereinigen des Ziels
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. false.

Geben Sie antrue, um den Zielordner vor dem Kopieren von Dateien zu sauber.


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

WinRM erfordert ein Zertifikat für die HTTPS-Übertragung, wenn Dateien aus dem Zwischenspeicherblob in die Azure-VMs kopiert werden.

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


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

Diese Aufgabe definiert die folgenden Ausgabevariablen, die Sie in Downstreamschritten, 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.

Hinweise

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

Hinweis

Diese Aufgabe ist in PowerShell geschrieben und funktioniert nur , wenn sie auf Windows-Agents ausgeführt wird. Wenn Ihre Pipelines Linux-Agents erfordern und Dateien in ein Azure Storage-Konto kopieren müssen, sollten Sie alternativ befehle in der Azure CLI-Aufgabe ausführenaz storage blob.

In dieser Aufgabe werden Anwendungsdateien und andere Artefakte kopiert, die für die Installation der App erforderlich sind, z. B. PowerShell-Skripts, PowerShell-DSC-Module und andere.

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

Die Aufgabe verwendet AzCopy, das Befehlszeilenprogramm, das für das schnelle Kopieren von Daten aus und in Azure-Speicherkonten entwickelt wurde. Version 4 des Azure-Dateikopiertasks verwendet AzCopy V10.

Azure File Copy, Version 3 und niedriger, ruft den Azure Storage-Schlüssel ab, um Zugriff zu gewähren. Azure File Copy Version 4 und höher erfordert, dass Azure Storage über Microsoft Entra ID oder SAS-Token autorisiert wird. Die Authentifizierung mit einem Dienstprinzipal und einer verwalteten Identität ist verfügbar. Für verwaltete Identitäten wird nur die systemweite verwaltete Identität unterstützt. Die erforderliche Autorisierungsebene wird unter Option 1: Use Microsoft Entra ID (Option 1: Use Microsoft Entra ID) angezeigt.

Verwenden Sie zum dynamischen Bereitstellen von Azure-Ressourcengruppen, die virtuelle Computer enthalten, die Aufgabe Bereitstellung von Azure-Ressourcengruppen. Diese Aufgabe enthält eine Beispielvorlage, die die erforderlichen Vorgänge ausführen kann, um das WinRM-HTTPS-Protokoll auf den 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 der Aufgabe, um den namen des $web Containers beizubehalten.

Die Aufgabe unterstützt die Authentifizierung basierend auf Azure Active Directory. Die Authentifizierung mit einem Dienstprinzipal und einer verwalteten Identität ist verfügbar. Für verwaltete Identitäten wird nur die systemweite verwaltete Identität unterstützt.

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 Automatisierungs-Agent ausgeführt wird. Die empfohlene Version ist 1.0.2, aber die Aufgabe funktioniert ab Version 0.9.8. Sie können den Azure PowerShell Installer v1.0.2 verwenden, um diese Version zu erhalten.

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

Die Aufgabe verwendet das HTTPS-Protokoll windows remote management (WinRM), um die Dateien aus dem Speicherblobcontainer auf 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 Erstellung eines virtuellen Computers

Wenn die virtuellen Computer erstellt wurden, 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 in der einfachen Form Benutzername ohne Domänenteil an, um mithilfe einer Anmeldung auf Administratorebene auf die VMs 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 Parameter Testzertifikat 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. Weitere Informationen finden Sie unter Automatisieren der Bereitstellung von Azure-Ressourcengruppen mithilfe eines Dienstprinzipals.

  • Bei Verwendung eines Azure Resource Manager-Dienstverbindungstyps filtert die Aufgabe automatisch die entsprechenden neueren Azure Resource Manager-Speicherkonten und andere Felder. Beispielsweise die Ressourcengruppe oder der Clouddienst und die VMs.

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

Ein geeignetes Konto kann 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 Anmeldeinformationen dieses Kontos in der Dienstverbindung. Bereitstellungen werden dann mit diesem Konto verarbeitet.

Wenn die Aufgabe fehlschlägt, wird der Kopiervorgang 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 Plandateien nach dem Kopieren bereinigt?

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

Gewusst wie die Azure-Dateikopieraufgabe verwenden, um eine Datei auf einen virtuellen Azure-Computer zu kopieren, der keine öffentliche IP-Adresse hat?

Stellen Sie sicher, dass Sie Version 4 des Kopiertasks für Azure-Dateien 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 storage mit einem Exitcode beendet, der nicht null ist" während der Verwendung des Azure-Dateikopiertasks

Die gehosteten Agents werden bei jedem Auslösen eines Builds nach dem Zufallsprinzip zugewiesen, die AGENT-IP-Adressen unterscheiden sich bei jeder Ausführung. Wenn diese IP-Adressen nicht in Der Liste der zulässigen IP-Adressen 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 mithilfe der 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 mithilfe der Azure CLI hinzu, um die IP-Adresse des Build-Agents aus der Netzwerkregel "Azure Storage-Konto" 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, 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