Partager via


AzureFileCopy@6 - Tâche Copie de fichiers Azure v6

Copiez des fichiers vers stockage Blob Azure ou des machines virtuelles.

Cette version de la tâche prend en charge la fédération d'identité de charge de travail et utilise Azure RBAC pour accéder à Azure Storage. Du fait de l'utilisation d'Azure RBAC, les jetons SAS ne sont plus utilisés. Pour plus d’informations, consultez la section Remarques.

Syntaxe

# Azure file copy v6
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@6
  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. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.

Données d'entrée

SourcePath - source
string. Obligatoire.

Emplacement des fichiers sources. Les valeurs prises en charge incluent les pipelines YAML et la prise en charge de la version classique variables système prédéfinies comme Build.Repository.LocalPath.

variables release sont prises en charge uniquement dans les versions classiques. Le symbole générique (*) est pris en charge n’importe où dans le chemin d’accès ou le nom du fichier.

L’expression doit renvoyer un seul dossier ou un seul fichier.


azureSubscription - abonnement Azure
Alias d’entrée : ConnectedServiceNameARM. string. Obligatoire.

Spécifiez le nom d’une connexion de service Azure Resource Manager configurée pour l’abonnement où se trouve le service Azure cible, la machine virtuelle ou le compte de stockage. Pour plus d’informations, consultez vue d’ensemble d’Azure Resource Manager.


Destination - type de destination
string. Obligatoire. Valeurs autorisées : AzureBlob (Blob Azure), AzureVMs (machines virtuelles Azure).

Spécifiez le type de destination.


storage - compte de stockage RM
Alias d’entrée : StorageAccountRM. string. Obligatoire.

Spécifiez un compte de stockage ARM préexistant. Il s’agit du compte de stockage utilisé comme intermédiaire pour copier des fichiers vers des machines virtuelles Azure.


ContainerName - nom de conteneur
string. Obligatoire lorsque Destination = AzureBlob.

Nom du conteneur dans lequel les fichiers sont copiés. Si le conteneur spécifié n’existe pas dans le compte de stockage, il est créé.

Pour créer un répertoire virtuel à l’intérieur du conteneur, utilisez l’entrée de préfixe d’objet blob. Par exemple, pour l’emplacement cible https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/, spécifiez le nom du conteneur mycontainer et le préfixe d’objet blob : vd1/vd2.


BlobPrefix - préfixe d’objet blob
string. Optionnel. Utilisez quand Destination = AzureBlob.

Spécifiez un préfixe pour le répertoire virtuel de destination dans le conteneur d’objets blob Azure. Cela s’applique lorsque le SourcePath contient un caractère générique qui peut correspondre à plusieurs éléments.

Exemple : Vous pouvez ajouter un numéro de build pour préfixer les fichiers de tous les objets blob avec le même numéro de build.

Exemple : si vous spécifiez un préfixe d’objet blob myvd1, un répertoire virtuel est créé à l’intérieur du conteneur. Les fichiers sont copiés de la source vers https://myaccount.blob.core.windows.net/mycontainer/myvd1/.

Dans le cas où il s’agit SourcePath d’un élément unique sans caractère générique, ce préfixe d’objet blob fonctionnera comme nom d’objet blob de destination.


resourceGroup - groupe de ressources
Alias d’entrée : EnvironmentNameRM. string. Obligatoire lorsque Destination = AzureVMs.

Spécifiez le nom du groupe de ressources cible dans lequel les fichiers seront copiés.


ResourceFilteringMethod - sélectionner des machines par
string. Optionnel. Utilisez quand Destination = AzureVMs. Valeurs autorisées : machineNames (noms d’ordinateurs), tags. Valeur par défaut : machineNames.

Spécifiez un nom d’hôte ou une balise de machine virtuelle qui identifie un sous-ensemble de machines virtuelles dans un groupe de ressources. balises sont prises en charge pour les ressources créées via Azure Resource Manager uniquement.


MachineNames - critères de filtre
string. Optionnel. Utilisez quand Destination = AzureVMs.

Fournissez la liste des noms de machines virtuelles ou des noms d’étiquettes qui identifient les machines virtuelles que la tâche cible. Les critères de filtre valides sont les suivants :

  • Nom d’un groupe de ressources Azure .
  • Variable de sortie d’une tâche précédente.
  • Liste délimitée par des virgules de noms d’étiquettes ou de noms de machines virtuelles.
  • Mettez en forme les noms de machines virtuelles à l’aide d’une liste séparée par des virgules de noms de domaine complets ou d’adresses IP.
  • Mettre en forme les noms d’étiquettes pour un filtre en tant qu’exemple {TagName}:{Value} : Role:DB;OS:Win8.1

vmsAdminUserName - de connexion d’administrateur
string. Obligatoire lorsque Destination = AzureVMs.

Indiquez le nom d’utilisateur d’un compte disposant d’autorisations d’administration sur toutes les machines virtuelles cibles.

  • Les formats pris en charge sont les suivants : username, domain\username, machine-name\usernameet .\username.
  • Les formats UPN, y compris username@domain.com et les comptes système intégrés tels que les NT Authority\System ne sont pas pris en charge.

vmsAdminPassword - mot de passe
string. Obligatoire lorsque Destination = AzureVMs.

Indiquez le mot de passe du paramètre Admin Login.

Pour rechercher la variable, recherchez le paramètre Admin Login. Sélectionnez l’icône de cadenas pour une variable définie dans l’onglet Variables pour protéger la valeur et insérer le nom de la variable ici.


TargetPath - dossier de destination
string. Obligatoire lorsque Destination = AzureVMs.

Spécifiez le chemin d’accès au dossier dans les machines virtuelles Azure dans lesquelles les fichiers seront copiés.

Les variables d’environnement telles que $env:windir et les $env:systemroot sont prises en charge. Exemples : $env:windir\FabrikamFiber\Web et c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - arguments facultatifs (pour le chargement de fichiers dans un objet blob)
string.

Fournissez des arguments supplémentaires pour AzCopy.exe à utiliser lors du chargement sur l’objet blob et du téléchargement sur les machines virtuelles. Pour plus d’informations, consultez Transférer des données avec l’utilitaire AzCopy Command-Line Utility.

Pour les comptes de stockage Premium qui prennent uniquement en charge les objets blob de pages Azure, utilisez --blob-type=PageBlob comme argument supplémentaire.

Les arguments par défaut incluent --log-level=INFO (valeur par défaut) et --recursive (si le nom du conteneur n’est pas $root).


AdditionalArgumentsForVMCopy - arguments facultatifs (pour le téléchargement de fichiers sur une machine virtuelle)
string. Optionnel. Utilisez quand Destination = AzureVMs.

Fournissez des arguments supplémentaires pour AzCopy.exe qui seront appliqués lors du téléchargement sur des machines virtuelles telles que --check-length=true.

Si aucun argument facultatif n’est spécifié, les éléments suivants sont ajoutés par défaut :

  • --log-level=INFO
  • --log-level=DEBUG (si le pipeline s’exécute en mode débogage défini)
  • --recursive

enableCopyPrerequisites - activer les prérequis de copie
boolean. Optionnel. Utilisez quand Destination = AzureVMs. Valeur par défaut : false.

Lorsque cette option est activée, cette option utilise un certificat auto-signé pour configurer l’écouteur Windows Remote Management (WinRM) sur le protocole HTTPS sur le port 5986. Cette configuration est requise pour effectuer des opérations de copie sur des machines virtuelles Azure. Applicable uniquement aux machines virtuelles ARM.

  • Si les machines virtuelles cibles sont accessibles via un équilibreur de charge, configurez une règle NAT de trafic entrant pour autoriser l’accès sur le port 5986.
  • Si les machines virtuelles cibles sont associées à un groupe de sécurité réseau (NSG), configurez une règle de sécurité entrante pour autoriser l’accès sur le port 5986.

copie CopyFilesInParallel - en parallèle
boolean. Optionnel. Utilisez quand Destination = AzureVMs. Valeur par défaut : true.

Spécifiez true pour copier des fichiers en parallèle vers les machines virtuelles cibles.


CleanTargetBeforeCopy - nettoyer le cible
boolean. Valeur par défaut : false.

Spécifiez true pour nettoyer le dossier de destination avant de copier des fichiers.


skipCACheck - test de certificat
boolean. Optionnel. Utilisez quand Destination = AzureVMs. Valeur par défaut : true.

WinRM nécessite un certificat pour le transfert HTTPS lors de la copie de fichiers à partir de l’objet blob de stockage intermédiaire dans les machines virtuelles Azure.

Si vous utilisez un certificat auto-signé, spécifiez true pour empêcher le processus de valider le certificat avec une autorité de certification approuvée.


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez options de contrôle et propriétés de tâche courantes.

Variables de sortie

Cette tâche définit les variables de sortie suivantes, que vous pouvez utiliser en aval, les travaux et les étapes.

StorageContainerUri
URI du conteneur dans lequel les fichiers ont été copiés. Valide uniquement lorsque la destination sélectionnée est Azure Blob.

Remarques

AzureFileCopy@6 prend en charge la fédération d’identités de charge de travail et utilise Azure RBAC pour accéder au stockage Azure. À la suite de l’utilisation d’Azure RBAC, les jetons SAS ne sont plus utilisés et l’entrée de tâche sasTokenTimeOutInMinutes est supprimée.

Vous pouvez bloquer l’utilisation de clés de compte de stockage et de jetons SAS sur vos comptes de stockage. Dans ces situations, la tâche AzureFileCopy@5 , qui repose sur des jetons SAS, ne peut pas être utilisée.

La AzureFileCopy@6 tâche utilise Azure RBAC pour accéder au stockage d’objets blob à la place. Cela nécessite l’identité de la connexion de service utilisée pour avoir le rôle RBAC approprié, par exemple Storage Blob Data Contributor. Voir Attribuer un rôle Azure pour l’accès aux données blob.

La tâche AzureFileCopy@6 prend également en charge les connexions de service qui utilisent la fédération d’identité de charge de travail.

Remarque

Cette tâche est écrite dans PowerShell et fonctionne uniquement lors de l’exécution sur des agents Windows. Si vos pipelines nécessitent des agents Linux et doivent copier des fichiers vers un compte de stockage Azure, envisagez d’exécuter des commandes az storage blob dans la tâche Azure CLI comme alternative.

La tâche est utilisée pour copier des fichiers d’application et d’autres artefacts requis pour installer l’application ; comme les scripts PowerShell, les modules PowerShell-DSC et bien plus encore.

Lorsque la cible est des machines virtuelles Azure, les fichiers sont d’abord copiés dans un conteneur d’objets blob Azure généré automatiquement, puis téléchargés dans les machines virtuelles. Le conteneur est supprimé une fois que les fichiers sont correctement copiés sur les machines virtuelles.

La tâche utilise AzCopy, l’utilitaire de ligne de commande conçu pour copier rapidement des données depuis et vers des comptes de stockage Azure. La version 6 de la tâche Azure File Copy utilise AzCopy V10.

Azure File Copy version 6 nécessite l’autorisation du stockage Azure via l’ID Microsoft Entra. L’authentification à l’aide d’un principal de service et d’une identité managée sont disponibles. Pour les identités managées, seule l’identité managée à l’échelle du système est prise en charge. Le niveau d’autorisation requis est indiqué dans Option 1 : Utiliser l’ID Microsoft Entra.

Pour déployer dynamiquement des groupes de ressources Azure qui contiennent des machines virtuelles, utilisez la tâche déploiement de groupe de ressources Azure. Cette tâche a un exemple de modèle qui peut effectuer les opérations nécessaires pour configurer le protocole HTTPS WinRM sur les machines virtuelles, ouvrir le port 5986 dans le pare-feu et installer le certificat de test.

Remarque

Si vous effectuez un déploiement sur des sites web statiques Azure en tant que conteneur dans le stockage d’objets blob, utilisez version 2 ou ultérieure de la tâche afin de conserver le nom du conteneur $web.

Quelles sont les conditions préalables d’Azure PowerShell pour l’utilisation de cette tâche ?

La tâche nécessite qu’Azure PowerShell soit installé sur la machine exécutant l’agent Automation. La version recommandée est 1.0.2, mais la tâche fonctionne avec la version 0.9.8 et ultérieure. Vous pouvez utiliser l'Programme d’installation Azure PowerShell v1.0.2 pour obtenir ceci.

Quelles sont les conditions préalables de WinRM pour cette tâche ?

La tâche utilise le protocole HTTPS Windows Remote Management (WinRM) pour copier les fichiers du conteneur d’objets blob de stockage vers les machines virtuelles Azure. Cela nécessite que le service HTTPS WinRM soit configuré sur les machines virtuelles et qu’un certificat approprié soit installé.

Configurer WinRM après la création de la machine virtuelle

Si les machines virtuelles ont été créées sans ouvrir les ports HTTPS WinRM, procédez comme suit :

  1. Configurez une règle d’accès entrant pour autoriser HTTPS sur le port 5986 de chaque machine virtuelle.
  2. Désactivez restrictions à distance UAC.
  3. Spécifiez les informations d’identification de la tâche pour accéder aux machines virtuelles à l’aide d’une connexion au niveau administrateur au format simple nom d’utilisateur sans partie de domaine.
  4. Installez un certificat sur l’ordinateur qui exécute l’agent Automation.
  5. Si vous utilisez un certificat auto-signé, définissez le paramètre Test Certificate de la tâche.

Quel type de connexion de service dois-je choisir ?

  • Pour les comptes de stockage Azure Resource Manager et les machines virtuelles Azure Resource Manager, utilisez un type de connexion de service Azure Resource Manager. Consultez Automatisation du déploiement du groupe de ressources Azure à l’aide d’unde principal de service.

  • Lors de l’utilisation d’un type de connexion de service Azure Resource Manager, la tâche filtre automatiquement les comptes de stockage Azure Resource Manager plus récents et d’autres champs. Par exemple, le groupe de ressources ou le service cloud et les machines virtuelles.

Comment créer un compte scolaire ou professionnel à utiliser avec cette tâche ?

Un compte approprié peut être créé pour une utilisation dans une connexion de service :

  1. Utilisez le portail Azure pour créer un compte d’utilisateur dans Azure Active Directory.
  2. Ajoutez le compte d’utilisateur Azure Active Directory au groupe de coadministrateurs dans votre abonnement Azure.
  3. Connectez-vous au portail Azure avec ce compte d’utilisateur et modifiez le mot de passe.
  4. Utilisez les informations d’identification de ce compte dans la connexion de service. Les déploiements sont ensuite traités à l’aide de ce compte.

Si la tâche échoue, la copie reprendra-t-elle ?

Étant donné qu’AzCopy v10 ne prend pas en charge les fichiers journaux, la tâche ne peut pas reprendre la copie. Vous devez réexécuter la tâche pour copier tous les fichiers.

Les fichiers journaux et les fichiers plan sont-ils nettoyés après la copie ?

Les fichiers journaux et de plan ne sont pas supprimés par la tâche. Pour nettoyer explicitement les fichiers, ajoutez une étape CLI dans le flux de travail à l’aide de travaux azcopy clean.

Comment utiliser la tâche de copie de fichiers Azure pour copier un fichier sur une machine virtuelle Azure qui n’a pas d’adresse IP publique ?

Assurez-vous que vous utilisez la version 5 de la tâche de copie de fichiers Azure. Si la tâche échoue, vous pouvez ajouter une étape de génération pour exécuter la commande azcopy cp "source-file-path" "destination-file-path" pour remplacer les valeurs source et de destination.

Erreur interdite : 'AzCopy.exe quitté avec un code de sortie différent de zéro lors du chargement de fichiers dans le stockage d’objets blob lors de l’utilisation de la tâche de copie de fichiers Azure

Les agents hébergés sont affectés de manière aléatoire chaque fois qu’une build est déclenchée, les adresses IP de l’agent seront différentes à chaque exécution. Si ces adresses IP ne figurent pas dans votre liste d’adresses IP autorisées, la communication entre Azure DevOps et le compte de stockage échoue. Dans ces scénarios, suivez les étapes décrites :

  1. Ajoutez une étape de génération à l’aide d’Azure CLI pour identifier l’adresse IP de l’agent de build hébergé Microsoft lors de l’exécution. Il ajoute l’adresse IP à la règle réseau sur le compte de stockage Azure.
  2. Exécutez l’étape de génération de votre compte de stockage Azure.
  3. Ajoutez une autre étape de génération à l’aide d’Azure CLI pour supprimer l’adresse IP de l’agent de build de la règle de réseau du compte de stockage Azure.

Spécifications

Besoin Descriptif
Types de pipelines YAML, Build Classique, Version Classique
Exécutions sur Agent, DeploymentGroup
Demandes Les agents auto-hébergés doivent disposer de fonctionnalités qui correspondent aux exigences de suivantes pour exécuter des travaux qui utilisent cette tâche : azureps
Capacités Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail.
restrictions de commande N'importe lequel
Variables settables N'importe lequel
Version de l’agent 1.103.0 ou version ultérieure
Catégorie de tâche Déployer