Partager via


AzureFileCopy@3 - Tâche de copie de fichiers Azure v3

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

Syntaxe

# Azure file copy v3
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@3
  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. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
  # Output
    #outputStorageUri: # string. Storage Container URI. 
    #outputStorageContainerSasToken: # string. Storage Container SAS Token. 
    #sasTokenTimeOutInMinutes: # string. SAS Token Expiration Period In Minutes.

Entrées

SourcePath - Source
string. Obligatoire.

Spécifiez le chemin absolu du dossier ou du fichier source sur l’ordinateur local, ou d’un partage UNC. Vous pouvez utiliser des variables système prédéfinies telles que $(Build.Repository.LocalPath). Les noms contenant des caractères génériques tels que *.zip ceux-ci ne sont pas pris en charge. La valeur ou l’expression que vous spécifiez doit retourner un dossier unique ou un nom de 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 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 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 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.
  • Mettez en forme les noms des étiquettes pour un filtre en tant que {TagName}:{Value}. Exemple : Role:DB;OS:Win8.1, ffweb, ffdbou balises telles que Role:DB, Web, . OS:Win8.1

Remarque : Les délimiteurs valides pour les balises incluent ,(virgule), :(colon) et ;(sémicolon). Lorsque vous fournissez plusieurs balises, la tâche s’exécute uniquement sur les machines virtuelles qui contiennent les balises spécifiées. Par défaut, la tâche s’exécute sur toutes les machines virtuelles.


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 administrateur des machines virtuelles.

Les entrées valides incluent des variables définies dans les pipelines de build ou de mise en production tels que $(passwordVariable). Pour sécuriser un mot de passe, marquez-le comme secret.


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 qui peuvent être appliqués lors du chargement vers des objets blob tels que /NC:10.

Si aucun argument facultatif n’est spécifié, les arguments suivants sont ajoutés par défaut.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S - Ajouté lorsque le nom du conteneur n’est pas $root.
  • /BlobType:page -Ajouté lorsque le compte de stockage spécifié est un compte Premium.
  • /Pattern - Ajouté lorsque le chemin d’accès source est un fichier. Inclus avec tous les autres arguments facultatifs spécifiés.

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 peuvent être appliqués lors du téléchargement sur des machines virtuelles telles que /NC:10.

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

  • /Y
  • /S
  • /Z
  • /V

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

Quand cette option est activée, utilise un certificat auto-signé pour configurer un écouteur Windows Remote Management (WinRM) sur le port 5986 au lieu du protocole HTTPS. Requis pour effectuer l’opération de copie sur les machines virtuelles Azure. Si les machines virtuelles cibles utilisent un équilibreur de charge, configurez des règles NAT de trafic entrant pour le port cible (5986). S’applique uniquement aux machines virtuelles ARM. Sur les machines virtuelles cibles 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. L’utilisation de cette valeur peut réduire le temps total nécessaire à l’exécution de l’action.


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

La définition de true cette valeur sur nettoie le dossier de destination avant d’effectuer l’action de copie.


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

La valeur par défaut ne valide pas si le certificat de serveur a été signé par une autorité de certification approuvée avant la connexion via HTTPS.


outputStorageUri - URI du conteneur de stockage
string.

Spécifiez le nom de la variable utilisée pour l’URI du conteneur de stockage dans lequel les fichiers ont été copiés. Valide uniquement lorsque la destination sélectionnée est un objet blob Azure.


outputStorageContainerSasToken - Jeton SAP du conteneur de stockage
string.

Spécifiez le nom de la variable utilisée pour le jeton SAP du conteneur de stockage qui accède aux fichiers qui ont été copiés. Utilisez cette variable comme entrée pour les tâches suivantes. Par défaut, le jeton SAS expire au bout de 4 heures.


sasTokenTimeOutInMinutes - Délai d’expiration du jeton SAS en minutes
string.

Spécifiez la durée, en minutes, après laquelle le jeton SAS expirera. Valide uniquement quand la destination sélectionnée est Blob Azure.


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

Aucun.

Notes

Nouveautés de version AzureFileCopy@3

  • AzureFileCopy@3 prend en charge Az Module et a cessé de prendre en charge le point de terminaison de service Azure Classic.

  • La tâche est utilisée pour copier des fichiers d’application et d’autres artefacts nécessaires à l’installation de l’application, tels que les scripts PowerShell, les modules PowerShell-DSC, etc.

  • 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 ont été copiés sur les machines virtuelles.

  • La tâche utilise AzCopy, l’utilitaire en ligne de commande conçu pour copier rapidement des données depuis et dans des comptes de stockage Azure. La tâche version 3 ou ultérieure utilise AzCopy V7.

  • 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 afin de conserver le nom du conteneur $web .

Questions fréquentes (FAQ)

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. Utilisez Azure PowerShell Installer v1.0.2 pour obtenir la version recommandée.

Quels sont les prérequis WinRM pour cette tâche ?

La tâche utilise le protocole HTTPS WinRM pour copier les fichiers du conteneur d’objets blob de stockage vers les machines virtuelles Azure. Le service HTTPS WinRM doit être configuré sur les machines virtuelles et un certificat approprié doit être installé.

Si les machines virtuelles sont 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 la tâche permettant d’accéder aux machines virtuelles à l’aide d’une connexion de niveau administrateur au format nom d’utilisateur sans référence de domaine.
  4. Installez un certificat sur la machine qui exécute l’agent Automation.
  5. Définissez le paramètre Test Certificate de la tâche pour un certificat auto-signé.

Quel type de connexion de service choisir ?

Le tableau suivant répertorie les types de comptes de stockage et les connexions de service associées. Pour déterminer si un compte de stockage est basé sur les API classiques ou les API Resource Manager, connectez-vous au Portail Azure et recherchez Comptes de stockage (classiques) ou Comptes de stockage.

Type de compte de stockage Connexions de service Azure dans TFS/TS
Gestionnaire de ressources Connexion de service Azure Resource Manager
Classique Connexion au service Azure avec une authentification basée sur un certificat ou des informations d’identification à l’aide d’un compte scolaire ou professionnel
  • Pour les ressources Azure Classic, utilisez un type de connexion de service Azure avec une authentification basée sur un certificat ou des informations d’identification. Si vous utilisez l’authentification basée sur les informations d’identification, vérifiez que les informations d’identification sont destinées à un compte scolaire ou professionnel. Les comptes Microsoft tels que joe@live.com et joe@hotmail.com ne sont pas pris en charge.

  • Pour les machines virtuelles Azure Resource Manager, utilisez un type de connexion de service Azure Resource Manager. Pour plus d’informations, consultez Automatisation du déploiement d’un groupe de ressources Azure à l’aide d’un principal de service.

  • Si vous utilisez un type de connexion de service Azure Resource Manager ou un type de connexion de service Azure avec l’authentification basée sur les certificats, la tâche filtre automatiquement les comptes de stockage classiques appropriés, 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.

Notes

Actuellement, un type de connexion de service Azure avec l’authentification basée sur les informations d’identification ne filtre pas les champs de stockage, de groupe de ressources ou de service cloud et de machine virtuelle.

Comment faire pour corriger l’échec « 403 : Cette requête n’est pas autorisée à effectuer cette opération à l’aide de cette autorisation » ?

Quand Azure DevOps crée et autorise la connexion de service à Azure, il crée une inscription d’application dans l’annuaire Active Directory de votre abonnement. Cette identité est automatiquement ajoutée avec un rôle Contributor à toutes les ressources du groupe de ressources que vous avez choisi d’autoriser. Pour charger des objets blob dans un compte de stockage, être un Contributorne suffit pas. Vous devez affecter manuellement le rôle Storage Blob Data Contributor à l’identité d’inscription d’application.

Copiez l’identité de l’application à partir de l’entrée héritée existante telle Contributor que celle que vous verrez dans le volet IAM et recherchez-la explicitement dans l’interface Add role assignment utilisateur. L’identité n’est pas répertoriée dans la liste déroulante, vous devez rechercher son identificateur.

Que se passe-t-il si mon groupe de ressources contient des machines virtuelles classiques et Resource Manager ?

Si le groupe de ressources spécifié contient à la fois des machines virtuelles Azure Resource Manager et classiques, l’ensemble de machines virtuelles ciblées dépend du type de connexion.

  • Pour les connexions basées sur des certificats et les connexions basées sur les informations d’identification, l’opération de copie est effectuée uniquement sur les machines virtuelles classiques.
  • Pour les connexions basées sur le nom du principal du service, l’opération de copie est effectuée uniquement sur Resource Manager machines virtuelles.

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

Le compte approprié peut être facilement créé pour 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 nouvelles informations d’identification pour ce compte dans la connexion de service. Les déploiements sont traités avec ce compte.

Exemples

# Example: Upload files from Pipeline staging directory to blob storage.
- task: AzureFileCopy@3
  displayName: 'Example Step Name'
  inputs:
    sourcePath: '$(Build.ArtifactStagingDirectory)/BlobsToUpload'
    additionalArgumentsForBlobCopy: |
      '/Y' # Supresses all AZCopy Confirmations. Used here to allow overwrites
      '/Pattern:*' # Pattern of files to copy.
      '/S' # Recursive Copy
    azureSubscription: 'Subscription Name'
    destination: AzureBlob
    storage: storageaccountname
    containerName: storagecontainername
    blobPrefix: targetdirectoryincontainer

Spécifications

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