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

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

Синтаксис

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

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

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

Расположение исходных файлов. К поддерживаемым значениям относятся конвейеры YAML и поддержка классических выпусков предопределенных системных переменных, таких как Build.Repository.LocalPath.

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


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

Укажите имя подключения службы azure Resource Manager, настроенного для подписки, в которой расположена целевая служба 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

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-объект и скачивании на виртуальные машины. Дополнительные сведения см. в статье Передача данных с помощью Command-Line служебной программы AzCopy .

Для учетных записей хранения класса 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.

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

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

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


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

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


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

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

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


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

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

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

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

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

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

Комментарии

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

Примечание

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

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

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

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

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

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

Примечание

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

Задача поддерживает проверку подлинности на основе Azure Active Directory. Доступна проверка подлинности с помощью субъекта-службы и управляемого удостоверения. Для управляемых удостоверений поддерживается только управляемое удостоверение на уровне системы.

Каковы 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-адреса?

Убедитесь, что вы используете версию 4 задачи копирования файлов 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.

Примеры

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

Требования

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