Partage via


AzureFileCopy@4 - Tâche de copie de fichiers Azure v4

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

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.

Entrées

SourcePath - Source
string. Obligatoire.

Emplacement des fichiers sources. Les valeurs prises en charge incluent les pipelines YAML et classic Release prennent en charge les 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 du 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, la machine virtuelle ou le compte de stockage 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 copier des fichiers sur 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 qui peut être utilisé pour filtrer les fichiers.

Exemple : Vous pouvez ajouter un numéro de build pour filtrer 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 à partir de la source vers https://myaccount.blob.core.windows.net/mycontainer/myvd1/.


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 machines), tags. Valeur par défaut : machineNames.

Spécifiez un nom d’hôte de machine virtuelle ou une balise qui identifie un sous-ensemble de machines virtuelles dans un groupe de ressources. Les balises 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 de balise 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 de balise ou 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.

Fournissez 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\usernamemachine-name\username, et .\username.
  • Les formats UPN incluant 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 pour 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 du dossier dans les machines virtuelles Azure dans lequel 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 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 (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

sasTokenTimeOutInMinutes - Délai d’expiration du jeton SAS en minutes
string. facultatif. Utilisez quand Destination = AzureBlob. Valeur par défaut : 240.

Spécifiez l’heure, en minutes, après laquelle le jeton SAP du conteneur expirera. Par défaut, ce jeton expire au bout de 4 heures.


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.

  • Si les machines virtuelles cibles sont accessibles via un équilibreur de charge, configurez une règle NAT entrante 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.

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

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


CleanTargetBeforeCopy - Nettoyer la cible
boolean. facultatif. Utilisez quand Destination = AzureVMs. Valeur par défaut : false.

Spécifiez true de 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 validation du 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 lorsque la destination sélectionnée est un objet Blob Azure.

StorageContainerSasToken
SasToken pour le conteneur dans lequel les fichiers ont été copiés. Valide uniquement lorsque la destination sélectionnée est un objet Blob Azure.

Remarques

AzureFileCopy@4 prend en charge AzCopy.exe version 10.8.0.

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é correctement 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 à partir de et vers des comptes de stockage Azure. La version 4 de la tâche De copie de fichiers Azure utilise AzCopy V10.

Azure File Copy version 3 et inférieure récupérerait la clé stockage Azure pour fournir l’accès. La copie de fichiers Azure version 4 et ultérieure nécessite l’autorisation de Stockage Azure via Microsoft Entra ID ou un jeton SAP. 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 possède 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.

Notes

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

La tâche prend en charge l’authentification basée sur Azure Active Directory. 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.

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 Certificat de test 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 de groupes 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 4 de la tâche 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 de tels 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 au moment de l’exécution. Il ajoute l’adresse IP à la règle réseau sur le compte stockage Azure.
  2. Exécutez l’étape de génération pour votre compte 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.

Exemples

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

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 commandes Quelconque
Variables settables Quelconque
Version de l’agent 1.103.0 ou supérieur
Catégorie de la tâche Déployer