Partager via


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

Copiez des fichiers sur Stockage Blob Azure ou des machines virtuelles.

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

Syntax

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

Entrées

SourcePath - Source
string. Obligatoire.

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

Les variables de mise en production sont prises en charge uniquement dans les mises en production Classic. Le symbole de carte générique (*) est pris en charge n’importe où dans le chemin d’accès ou le nom de fichier.

L’expression doit retourner un seul dossier ou un 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, la machine virtuelle ou le compte de stockage Azure cible. Pour plus d’informations, consultez Vue d’ensemble d’Azure Resource Manager.


Destination - Type de destination
string. Obligatoire. Valeurs autorisées : AzureBlob (Objet 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 la copie de fichiers vers des machines virtuelles Azure.


ContainerName - Nom du conteneur
string. Nécessaire 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 https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/cible , spécifiez le nom mycontainer du conteneur et le préfixe d’objet blob : vd1/vd2.


BlobPrefix - Préfixe de blob
string. facultatif. 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 contient SourcePath 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 myvd1d’objet blob , 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ù est SourcePath un élément unique sans caractère générique, ce préfixe d’objet blob fonctionne comme nom de l’objet blob de destination.


resourceGroup - Groupe de ressources
Alias d’entrée : EnvironmentNameRM. string. Nécessaire lorsque Destination = AzureVMs.

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


ResourceFilteringMethod - Sélectionner les machines par
string. facultatif. Utilisez quand Destination = AzureVMs. Valeurs autorisées : machineNames (Noms des 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. Les étiquettes sont prises en charge pour les ressources créées via azure Resource Manager uniquement.


MachineNames - Critères de filtre
string. facultatif. Utilisez quand Destination = AzureVMs.

Fournissez une liste de noms de machines virtuelles ou de noms d’étiquettes qui identifient les machines virtuelles que la tâche ciblera. Les critères de filtre valides incluent :

  • 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 de balise d’un filtre comme {TagName}:{Value} exemple : Role:DB;OS:Win8.1

vmsAdminUserName - Connexion administrateur
string. Nécessaire lorsque Destination = AzureVMs.

Indiquez le nom d’utilisateur d’un compte avec des 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, NT Authority\System ne sont pas pris en charge.

vmsAdminPassword - Mot de passe
string. Nécessaire lorsque Destination = AzureVMs.

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

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


TargetPath - Dossier de destination
string. Nécessaire 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 de type $env:windir et $env:systemroot sont prises en charge. Exemples : $env:windir\FabrikamFiber\Web et c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Arguments facultatifs (pour le chargement des fichiers dans un blob)
string.

Fournissez des arguments supplémentaires à 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 .

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

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


AdditionalArgumentsForVMCopy - Arguments facultatifs (pour le téléchargement des fichiers sur une machine virtuelle)
string. facultatif. Utilisez quand Destination = AzureVMs.

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

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. facultatif. Utilisez quand Destination = AzureVMs. Valeur par défaut : false.

Lorsqu’elle 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é de trafic entrant pour autoriser l’accès sur le port 5986.

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

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


CleanTargetBeforeCopy - Nettoyer la cible
boolean. Valeur par défaut : false.

Spécifiez true pour propre le dossier de destination avant de copier les fichiers.


skipCACheck - Certificat de test
boolean. facultatif. 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 vers 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 dans les étapes, les travaux et les étapes en aval.

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

Remarques

AzureFileCopy@6 prend en charge la fédération des identités de charge de travail et utilise Azure RBAC pour accéder au Stockage Azure. En raison 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 SAP 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 Contributeur aux données Blob du stockage. Consultez Attribuer un rôle Azure pour l’accès aux données d’objet 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.

Notes

Cette tâche est écrite dans PowerShell et fonctionne uniquement lorsqu’elle est exécutée sur des agents Windows. Si vos pipelines nécessitent des agents Linux et doivent copier des fichiers dans un compte de stockage Azure, exécutez plutôt les commandes az storage blob dans la tâche Azure CLI.

La tâche est utilisée pour copier des fichiers d’application et d’autres artefacts nécessaires pour installer l’application, par exemple, des scripts PowerShell, des modules PowerShell-DSC, etc.

Quand la cible est une machine virtuelle Azure, les fichiers sont d’abord copiés dans un conteneur de blobs Azure généré automatiquement, puis téléchargés dans les machines virtuelles. Le conteneur est supprimé une fois que les fichiers ont été copiés sur les machines virtuelles.

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

La version 6 de la copie de fichiers Azure nécessite l’autorisation de Stockage Azure via Microsoft Entra ID. L’authentification avec un principal de service et une identité managée est disponible. 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 Microsoft Entra ID.

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 requises pour configurer le protocole HTTPS WinRM sur les machines virtuelles, ouvrir le port 5986 dans le pare-feu et installer le certificat de test.

Notes

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

Quels sont les prérequis Azure PowerShell pour utiliser cette tâche ?

La tâche nécessite que Azure PowerShell soit installé sur l’ordinateur 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 le programme d’installation Azure PowerShell v1.0.2 pour l’obtenir.

Quels sont les prérequis 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 d’une 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 les restrictions UAC à distance.
  3. Spécifiez les informations d’identification pour que la tâche puisse accéder aux machines virtuelles en utilisant une connexion administrateur sous la forme d’un nom d’utilisateur sans partie de domaine.
  4. Installez un certificat sur la machine 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 choisir ?

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

  • Quand vous utilisez le type de connexion de service Azure Resource Manager, la tâche filtre automatiquement les derniers comptes de stockage Azure Resource Manager appropriés 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 pour l’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 de votre abonnement Azure.
  3. Connectez-vous au Portail Azure avec ce compte d’utilisateur et changez 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 reprend-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 de 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 propre explicitement les fichiers, ajoutez une étape CLI dans le flux de travail à l’aide d’azcopy jobs propre.

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

Vérifiez 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" afin de remplacer les valeurs source et de destination.

Erreur interdite : « AzCopy.exe a quitté avec un code de sortie différent de zéro pendant le chargement de fichiers dans le stockage blob » pendant l’utilisation de la tâche Copie de fichiers Azure

Les agents hébergés sont attribués de manière aléatoire chaque fois qu’une build est déclenchée, les adresses IP de l’agent sont 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 Microsoft Hosted Build au moment 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 pour 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 réseau du compte de stockage Azure.

Configuration requise

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes Les agents auto-hébergés doivent avoir des fonctionnalités qui correspondent aux exigences suivantes pour exécuter des travaux qui utilisent cette tâche : azureps
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commande Quelconque
Variables paramétrables Quelconque
Version de l’agent 1.103.0 ou version ultérieure
Catégorie de la tâche Déployer