Поделиться через


AzureFileCopy@3 — задача копирования файлов Azure версии 3

Копирование файлов на Хранилище BLOB-объектов Azure или виртуальные машины.

Синтаксис

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

Входные данные

SourcePath - Источник
string. Обязательный.

Укажите абсолютный путь к исходной папке, файлу на локальном компьютере или общей папке UNC. Можно использовать предварительно определенные системные переменные, такие как $(Build.Repository.LocalPath). Имена, содержащие подстановочные знаки, такие как , *.zip не поддерживаются. Указанное значение или выражение должно возвращать одну папку или имя файла.


azureSubscription - Подписка Azure
Входной псевдоним: ConnectedServiceNameARM. string. Обязательный.

Укажите имя подключения службы Resource Manager Azure, настроенного для подписки, в которой находится целевая служба Azure, виртуальная машина или учетная запись хранения. Дополнительные сведения см. в статье Общие сведения об Azure Resource Manager.


Destination - Тип назначения
string. Обязательный. Допустимые значения: AzureBlob (BLOB-объект Azure), AzureVMs (виртуальные машины Azure).

Укажите тип назначения.


storage - Учетная запись хранения RM
Входной псевдоним: StorageAccountRM. string. Обязательный.

Укажите существующую учетную запись хранения ARM. Это учетная запись хранения, используемая в качестве посредника для копирования файлов на виртуальные машины Azure.


ContainerName - Имя контейнера
string. Требуется, если Destination = AzureBlob.

Имя контейнера, в который копируются файлы. Если указанный контейнер не существует в учетной записи хранения, он будет создан.

Чтобы создать виртуальный каталог внутри контейнера, используйте входные данные префикса большого двоичного объекта. Например, для целевого расположения https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/укажите имя mycontainer контейнера и префикс большого двоичного объекта: vd1/vd2.


BlobPrefix - Префикс большого двоичного объекта
string. Необязательный элемент. Используйте при Destination = AzureBlob.

Укажите префикс, который можно использовать для фильтрации файлов.

Пример. Можно добавить номер сборки, чтобы отфильтровать файлы из всех BLOB-объектов с одинаковым номером сборки.

Пример. Если указать префикс myvd1большого двоичного объекта, в контейнере создается виртуальный каталог. Файлы копируются из источника в https://myaccount.blob.core.windows.net/mycontainer/myvd1/.


resourceGroup - Группа ресурсов
Входной псевдоним: EnvironmentNameRM. string. Требуется, если Destination = AzureVMs.

Укажите имя целевой группы ресурсов, в которую будут копироваться файлы.


ResourceFilteringMethod - Выбор компьютеров по
string. Необязательный элемент. Используйте при Destination = AzureVMs. Допустимые значения: machineNames (имена компьютеров), tags. Значение по умолчанию: machineNames.

Укажите имя или тег узла виртуальной машины, который идентифицирует подмножество виртуальных машин в группе ресурсов. Теги поддерживаются только для ресурсов, созданных с помощью Resource Manager Azure.


MachineNames - Критерии фильтра
string. Необязательный элемент. Используйте при Destination = AzureVMs.

Укажите список имен виртуальных машин или тегов, определяющих виртуальные машины, на которые будет направлена задача. Допустимые критерии фильтра включают:

  • Имя группы ресурсов Azure.
  • Выходная переменная из предыдущей задачи.
  • Разделенный запятыми список имен тегов или виртуальных машин.
  • Форматируйте имена виртуальных машин, используя разделенный запятыми список полных доменных имен или IP-адресов.
  • Форматируйте имена тегов для фильтра как {TagName}:{Value}. Пример: Role:DB;OS:Win8.1, ffweb, ffdbили теги, такие как Role:DB, Web, OS:Win8.1.

Примечание. Допустимые разделители для тегов: , (запятая), :(colon) и ;(semicolon). При предоставлении нескольких тегов задача будет выполняться только на виртуальных машинах, содержащих указанные теги. По умолчанию задача выполняется на всех виртуальных машинах.


vmsAdminUserName - Вход Администратор
string. Требуется, если Destination = AzureVMs.

Укажите имя пользователя учетной записи с административными разрешениями на всех целевых виртуальных машинах.

  • Поддерживаемые форматы: username, domain\username, machine-name\usernameи .\username.
  • Форматы имени участника-пользователя, включая username@domain.com и встроенные системные учетные записи, такие как NT Authority\System , не поддерживаются.

vmsAdminPassword - Пароль
string. Требуется, если Destination = AzureVMs.

Укажите пароль администратора виртуальных машин.

Допустимые входные данные включают переменные, определенные в конвейерах сборки или выпуска, таких как $(passwordVariable). Чтобы защитить пароль, пометьте его как secret.


TargetPath - Конечная папка
string. Требуется, если Destination = AzureVMs.

Укажите путь к папке на виртуальных машинах Azure, в которую будут копироваться файлы.

Поддерживаются переменные среды, такие как $env:windir и $env:systemroot . Примеры: $env:windir\FabrikamFiber\Web и c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Необязательные аргументы (для отправки файлов в большой двоичный объект)
string.

Укажите дополнительные аргументы для AzCopy.exe , которые можно применить при отправке в большие двоичные объекты, например /NC:10.

Если необязательные аргументы не указаны, по умолчанию добавляются следующие аргументы.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S — добавляется, если имя контейнера не $rootравно .
  • /BlobType:page — добавляется, если указанная учетная запись хранения является учетной записью уровня "Премиум".
  • /Pattern — добавляется, если исходный путь является файлом. Входит в состав любых других указанных необязательных аргументов.

AdditionalArgumentsForVMCopy - Необязательные аргументы (для скачивания файлов на виртуальную машину)
string. Необязательный элемент. Используйте при Destination = AzureVMs.

Укажите дополнительные аргументы для AzCopy.exe , которые можно применить при скачивании на виртуальные машины, например /NC:10.

Если необязательные аргументы не указаны, по умолчанию добавляются следующие аргументы.

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

enableCopyPrerequisites - Включение необходимых компонентов для копирования
boolean. Необязательный элемент. Используйте при Destination = AzureVMs. Значение по умолчанию: false.

Если этот параметр включен, использует самозаверяющий сертификат для настройки прослушивателя удаленного управления Windows (WinRM) через порт 5986 вместо протокола HTTPS. Требуется для выполнения операции копирования на виртуальных машинах Azure. Если целевые виртуальные машины используют подсистему балансировки нагрузки, настройте правила NAT для входящего трафика для целевого порта (5986). Применяется только для виртуальных машин ARM. На целевых виртуальных машинах, связанных с группой безопасности сети (NSG), настройте правило безопасности для входящего трафика, чтобы разрешить доступ через порт 5986.


CopyFilesInParallel - Параллельное копирование
boolean. Необязательный элемент. Используйте при Destination = AzureVMs. Значение по умолчанию: true.

Укажите true , чтобы копировать файлы параллельно на целевые виртуальные машины. Использование этого значения может сократить общее время, затраченное на выполнение действия.


CleanTargetBeforeCopy - Очистка целевого объекта
boolean. Необязательный элемент. Используйте при Destination = AzureVMs. Значение по умолчанию: false.

При задании этого значения true удаляется конечная папка перед выполнением действия копирования.


skipCACheck - Тестовый сертификат
boolean. Необязательный элемент. Используйте при Destination = AzureVMs. Значение по умолчанию: true.

Значение по умолчанию не проверяет, был ли сертификат сервера подписан доверенным центром сертификации перед подключением по протоколу HTTPS.


outputStorageUri - URI контейнера хранилища
string.

Укажите имя переменной, используемой для универсального кода ресурса (URI) контейнера хранилища, в который были скопированы файлы. Допустимо только в том случае, если выбранным назначением является BLOB-объект Azure.


outputStorageContainerSasToken - Маркер SAS контейнера хранилища
string.

Укажите имя переменной, используемой для маркера SAS контейнера хранилища, который обращается к скопированным файлам. Используйте эту переменную в качестве входных данных для последующих задач. По умолчанию срок действия маркера SAS истекает через 4 часа.


sasTokenTimeOutInMinutes - Срок действия маркера SAS в минутах
string.

Укажите время в минутах, по истечении которого истекает срок действия маркера SAS. Допустимо только в том случае, если выбрано назначение BLOB-объект Azure.


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.

Выходные переменные

Нет.

Remarks

Новые возможности AzureFileCopy@3 версий

  • AzureFileCopy@3 поддерживает модуль Az и перестал поддерживать классическую конечную точку службы Azure.

  • Задача используется для копирования файлов приложения и других артефактов, необходимых для установки приложения, таких как скрипты PowerShell, модули PowerShell-DSC и многое другое.

  • Если целевым объектом являются виртуальные машины Azure, файлы сначала копируются в автоматически созданный контейнер BLOB-объектов Azure, а затем загружаются в виртуальные машины. Контейнер удаляется после успешного копирования файлов на виртуальные машины.

  • В задаче используется AzCopy — служебная программа командной строки, созданная для быстрого копирования данных из учетных записей хранения Azure и в нее. В задаче версии 3 или ниже используется AzCopy V7.

  • Для динамического развертывания групп ресурсов Azure, содержащих виртуальные машины, используйте задачу развертывания группы ресурсов Azure . Эта задача содержит пример шаблона, который может выполнять необходимые операции для настройки протокола WINRM HTTPS на виртуальных машинах, открытия порта 5986 в брандмауэре и установки тестового сертификата.

Примечание

Если вы развертываете статические веб-сайты Azure в качестве контейнера в хранилище BLOB-объектов, используйте версию 2 или более позднюю, чтобы сохранить имя $web контейнера.

Вопросы и ответы

Каковы Azure PowerShell предварительные требования для использования этой задачи?

Для выполнения задачи необходимо, чтобы на компьютере, на котором запущен агент автоматизации, был установлен Azure PowerShell. Рекомендуемая версия — 1.0.2, но задача работает с версией 0.9.8 и выше. Чтобы получить рекомендуемую версию, используйте установщик Azure PowerShell версии 1.0.2.

Каковы предварительные требования WinRM для этой задачи?

Задача использует протокол HTTPS WinRM для копирования файлов из контейнера BLOB-объектов хранилища на виртуальные машины Azure. На виртуальных машинах должна быть настроена служба WINRM HTTPS и установлен подходящий сертификат.

Если виртуальные машины создаются без открытия портов WINRM HTTPS, выполните следующие действия.

  1. Настройте правило входящего доступа, чтобы разрешить HTTPS через порт 5986 каждой виртуальной машины.
  2. Отключите ограничения удаленного контроля учетных записей.
  3. Укажите учетные данные для задачи для доступа к виртуальным машинам с помощью имени входа уровня администратора, отформатированного как имя пользователя без ссылки на домен.
  4. Установите сертификат на компьютере, на котором выполняется агент автоматизации.
  5. Задайте параметр Test Certificate задачи для самозаверяющего сертификата.

Какой тип подключения службы следует выбрать?

В следующей таблице перечислены типы учетных записей хранения и связанные с ними подключения к службам. Чтобы определить, основана ли учетная запись хранения на классических API или API Resource Manager, войдите в портал Azure и выполните поиск по запросу Учетные записи хранения (классические) или Учетные записи хранения.

Тип учетной записи хранения Подключения к службам Azure в TFS/TS
Resource Manager Подключение к службе Azure Resource Manager
Классический Подключение службы Azure с проверкой подлинности на основе сертификата или учетных данных с использованием учебной или рабочей учетной записи
  • Для классических ресурсов Azure используйте тип подключения службы Azure с проверкой подлинности на основе сертификата или учетных данных. Если вы используете проверку подлинности на основе учетных данных, убедитесь, что учетные данные предназначены для учебной или рабочей учетной записи. Учетные записи Майкрософт, такие как joe@live.com и joe@hotmail.com , не поддерживаются.

  • Для виртуальных машин Azure Resource Manager используйте тип подключения службы Resource Manager Azure. Дополнительные сведения см. в статье Автоматизация развертывания группы ресурсов Azure с помощью субъекта-службы.

  • При использовании типа подключения службы azure Resource Manager или типа подключения службы Azure с проверкой подлинности на основе сертификата задача автоматически фильтрует соответствующие классические учетные записи хранения, новые учетные записи хранения Azure Resource Manager и другие поля. Например, группа ресурсов или облачная служба и виртуальные машины.

Примечание

В настоящее время тип подключения службы Azure с проверкой подлинности на основе учетных данных не фильтрует поля хранилища, группы ресурсов или облачной службы и виртуальной машины.

Разделы справки исправить ошибку "403: этот запрос не авторизован для выполнения этой операции с использованием этого разрешения"?

Когда Azure DevOps создает и авторизует подключение службы к Azure, она создает регистрацию приложения в Active Directory вашей подписки. Это удостоверение автоматически добавляется с ролью Contributor ко всем ресурсам в группе ресурсов, выбранной для авторизации. Для отправки BLOB-объектов в учетную запись хранения недостаточно быть Contributor . Необходимо вручную назначить Storage Blob Data Contributor роль удостоверению регистрации приложения.

Скопируйте удостоверение приложения из существующей унаследованной записи, которая Contributor отображается в области IAM, и найдите его явным образом в пользовательском интерфейсе Add role assignment . Удостоверение не указано в раскрывающемся списке, необходимо найти его идентификатор.

Что произойдет, если группа ресурсов содержит классические и Resource Manager виртуальные машины?

Если указанная группа ресурсов содержит виртуальные машины Azure Resource Manager и классические виртуальные машины, набор целевых виртуальных машин зависит от типа подключения.

  • Для подключений на основе сертификатов и подключений на основе учетных данных операция копирования выполняется только на классических виртуальных машинах.
  • Для подключений на основе имени субъекта-службы операция копирования выполняется только на Resource Manager виртуальных машинах.

Разделы справки создать учебную или рабочую учетную запись для использования с этой задачей?

Подходящую учетную запись можно легко создать для использования в подключении к службе:

  1. Используйте портал Azure, чтобы создать учетную запись пользователя в Azure Active Directory.
  2. Добавьте учетную запись пользователя Azure Active Directory в группу соадминистраторов в подписке Azure.
  3. Войдите в портал Azure с помощью этой учетной записи пользователя и измените пароль.
  4. Используйте новые учетные данные для этой учетной записи в подключении к службе. Развертывания будут обрабатываться с помощью этой учетной записи.

Примеры

# 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

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
Требования Локальные агенты должны иметь возможности , соответствующие следующим требованиям для выполнения заданий, использующих эту задачу: azureps
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 1.103.0 или более поздней версии
Категория задач Развертывание