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


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

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

Синтаксис

# Azure file copy v5
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@5
  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. 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

sasTokenTimeOutInMinutes - Срок действия маркера SAS в минутах
string. Необязательный элемент. Используйте при Destination = AzureBlob. Значение по умолчанию: 240.

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


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.

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

Комментарии

AzureFileCopy@5 поддерживает AzCopy.exe версии 10.12.2.

Примечание

Вы можете заблокировать использование ключей учетной записи хранения и маркеров 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 и в нее. В версии 5 задачи копирования файлов Azure используется AzCopy версии 10.

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

Чтобы динамически развертывать группы ресурсов Azure, содержащие виртуальные машины, используйте задачу Развертывание группы ресурсов Azure . Эта задача содержит пример шаблона, который может выполнять необходимые операции для настройки протокола HTTPS WinRM на виртуальных машинах, открытия порта 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. Отключите удаленные ограничения UAC.
  3. Укажите учетные данные для задачи для доступа к виртуальным машинам с помощью имени входа уровня администратора в простом имени пользователя формы без какой-либо части домена.
  4. Установите сертификат на компьютере, на котором выполняется агент автоматизации.
  5. Если вы используете самозаверяющий сертификат, задайте параметр Тестовый сертификат задачи.

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

  • Для учетных записей хранения Azure Resource Manager и виртуальных машин Azure Resource Manager используйте тип подключения службы Azure Resource Manager. См. статью Автоматизация развертывания группы ресурсов 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-адреса?

Убедитесь, что вы используете задачу копирования файлов Azure версии 5. Если задача завершается сбоем, можно добавить шаг сборки для выполнения команды 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.

Примеры

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- task: AzureFileCopy@5
  inputs:
    SourcePath: 'Readme.md'
    azureSubscription: 'MyAzureSubscription'
    Destination: 'AzureBlob'
    storage: 'MyStorage'
    ContainerName: 'MyContainerName'
  name: AzureFileCopy
  
- script: | 
    echo $(AzureFileCopy.StorageContainerUri)
    echo $(AzureFileCopy.StorageContainerSasToken)

Требования

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