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


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

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

Эта версия задачи поддерживает федерацию удостоверений рабочей нагрузки и использует Azure RBAC для доступа к службе хранилища Azure. В результате использования Azure RBAC маркеры SAS больше не используются. Дополнительные сведения см. в разделе Примечания.

Синтаксис

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

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

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

Расположение исходных файлов. Поддерживаются следующие значения: yaml Pipelines и Classic Release support предопределенные системные переменные , такие как Build.Repository.LocalPath.

Переменные выпуска поддерживаются только в классических выпусках. Символ wild карта (*) поддерживается в любом месте пути к файлу или имени файла.

Выражение должно возвращать одну папку или файл.


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-объектов Azure. Это применимо, SourcePath если содержит подстановочный знак, который может соответствовать нескольким элементам.

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

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

В случае, SourcePath если является одним элементом без подстановочных знаков, этот префикс большого двоичного объекта будет функционировать как имя целевого BLOB-объекта.


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

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

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

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

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

Укажите пароль для Admin Login параметра .

Чтобы найти переменную, найдите Admin Login параметр . Щелкните значок замка для переменной, определенной на вкладке Variables , чтобы защитить значение, и вставьте сюда имя переменной.


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

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

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


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

Укажите дополнительные аргументы для AzCopy.exe для использования при отправке в BLOB-объект и скачивании на виртуальные машины. Дополнительные сведения см. в статье Передача данных с помощью служебной программы AzCopy Command-Line .

Для учетных записей хранения класса Premium, поддерживающих только страничные BLOB-объекты Azure, используйте --blob-type=PageBlob в качестве дополнительного аргумента.

Аргументы по умолчанию включают --log-level=INFO (по умолчанию) и --recursive (если имя контейнера не $rootявляется ).


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

Укажите дополнительные аргументы , AzCopy.exe которые будут применяться при скачивании на виртуальные машины, --check-length=trueнапример .

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

  • --log-level=INFO
  • --log-level=DEBUG (Если конвейер выполняется в режиме отладки)
  • --recursive

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

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

  • Если доступ к целевым виртуальным машинам осуществляется через подсистему балансировки нагрузки, настройте правило NAT для входящего трафика, чтобы разрешить доступ через порт 5986.
  • Если целевые виртуальные машины связаны с группой безопасности сети (NSG), настройте правило безопасности для входящего трафика, чтобы разрешить доступ через порт 5986.

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

Укажите true , чтобы копировать файлы параллельно на целевые виртуальные машины.


CleanTargetBeforeCopy - Очистка целевого объекта
boolean. Значение по умолчанию: false.

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


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

При копировании файлов из промежуточного blob-объекта хранилища на виртуальные машины Azure winRM требуется сертификат для передачи httpS.

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


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

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

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

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

StorageContainerUri
URI контейнера, в который были скопированы файлы. Допустимо только в том случае, если выбрано назначение BLOB-объект Azure.

Комментарии

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

Вы можете заблокировать использование ключей учетной записи хранения и маркеров SAS в учетных записях хранения. В таких ситуациях невозможно использовать задачу AzureFileCopy@5 , которая использует маркеры SAS.

Задача AzureFileCopy@6 использует Azure RBAC для доступа к хранилищу BLOB-объектов. Для этого требуется удостоверение подключения службы, используемое для использования соответствующей роли RBAC, например Участник данных BLOB-объектов хранилища. См. статью Назначение роли Azure для доступа к данным BLOB-объектов.

Задача AzureFileCopy@6 также поддерживает подключения служб, использующие федерацию удостоверений рабочей нагрузки.

Примечание

Эта задача написана в PowerShell и работает только при запуске в агентах Windows. Если для конвейеров требуются агенты Linux и необходимо копировать файлы в учетную запись хранения Azure, в качестве альтернативы рекомендуется выполнять az storage blob команды в задаче Azure CLI .

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

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

Задача использует AzCopy — служебную программу командной строки, созданную для быстрого копирования данных из учетных записей хранения Azure и в нее. В версии 6 задачи копирования файлов Azure используется AzCopy версии 10.

Для копирования файлов Azure версии 6 требуется авторизация службы хранилища Azure с помощью Microsoft Entra ID. Доступна проверка подлинности с помощью субъекта-службы и управляемого удостоверения. Для управляемых удостоверений поддерживается только управляемое удостоверение на уровне системы. Требуемый уровень авторизации показан в варианте 1. Использование Microsoft Entra ID.

Для динамического развертывания групп ресурсов 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 удаленного управления Windows (WinRM) для копирования файлов из контейнера BLOB-объектов хранилища на виртуальные машины Azure. Для этого на виртуальных машинах должна быть настроена служба HTTPS WinRM и установлен подходящий сертификат.

Настройка WinRM после создания виртуальной машины

Если виртуальные машины были созданы без открытия https-портов WinRM, выполните следующие действия:

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

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

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

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

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

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

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

Если задача завершится сбоем, будет ли копирование возобновлено?

Так как AzCopy версии 10 не поддерживает файлы журналов, копирование в рамках задачи возобновить невозможно. Необходимо снова запустить задачу, чтобы скопировать все файлы.

Очищаются ли файлы журнала и файлы планов после копирования?

Файлы журнала и плана не удаляются задачей. Чтобы явно очистить файлы, добавьте шаг CLI в рабочий процесс с помощью команды azcopy jobs clean.

Разделы справки использовать задачу копирования файлов Azure для копирования файла на виртуальную машину Azure без общедоступного IP-адреса?

Убедитесь, что вы используете версию 5 задачи копирования файлов Azure. Если задача завершается сбоем, можно добавить шаг сборки для выполнения команды azcopy cp "source-file-path" "destination-file-path" для замены исходных и целевых значений.

Запрещенная ошибка: "AzCopy.exe завершен с ненулевым кодом выхода при отправке файлов в хранилище BLOB-объектов" при использовании задачи "Копирование файлов Azure"

Размещенные агенты назначаются случайным образом при каждом запуске сборки. IP-адреса агента будут отличаться при каждом запуске. Если эти IP-адреса отсутствуют в списке разрешенных IP-адресов, обмен данными между Azure DevOps и учетной записью хранения завершается сбоем. В таких сценариях выполните описанные ниже действия.

  1. Добавьте шаг сборки с помощью Azure CLI, чтобы определить IP-адрес агента сборки, размещенного в Майкрософт, во время выполнения. Он добавит IP-адрес в правило сети в учетной записи хранения Azure.
  2. Выполните шаг сборки для учетной записи хранения Azure.
  3. Добавьте еще один шаг сборки с помощью Azure CLI, чтобы удалить IP-адрес агента сборки из сетевого правила учетной записи хранения Azure.

Требования

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