AzureFileCopy@4 — задача копирования файлов Azure версии 4
Копирование файлов в хранилище BLOB-объектов Azure или виртуальные машины.
Примечание.
Эта задача не поддерживает проверку подлинности Azure Resource Manager сфедерации удостоверений рабочего процесса.
Синтаксис
# 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.
переменные выпуска поддерживаются только в классических выпусках. Символ подстановочной карточки (*) поддерживается в любом месте пути к файлу или имени файла.
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
.
Имя контейнера, в который копируются файлы. Если указанный контейнер не существует в учетной записи хранения, он будет создан.
Чтобы создать виртуальный каталог внутри контейнера, используйте входные данные префикса BLOB-объекта. Например, для целевого расположения https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/
укажите имя контейнера mycontainer
и префикс большого двоичного объекта: vd1/vd2
.
префикс большого двоичного объектаBlobPrefix
-
string
. Необязательно. Используется при Destination = AzureBlob
.
Укажите префикс, который можно использовать для фильтрации файлов.
Пример. Можно добавить номер сборки для фильтрации файлов из всех больших двоичных объектов с одинаковым номером сборки.
Пример. Если указать префикс большого двоичного объекта myvd1
, в контейнере создается виртуальный каталог. Файлы копируются из источника в https://myaccount.blob.core.windows.net/mycontainer/myvd1/
.
resourceGroup
-
группы ресурсов
Псевдоним ввода: EnvironmentNameRM
.
string
. Требуется, если Destination = AzureVMs
.
Укажите имя целевой группы ресурсов, в которую будут скопированы файлы.
ResourceFilteringMethod
-
выбор компьютеров по
string
. Необязательно. Используется при Destination = AzureVMs
. Допустимые значения: machineNames
(имена компьютеров), tags
. Значение по умолчанию: machineNames
.
Укажите имя узла виртуальной машины или тег, определяющий подмножество виртуальных машин в группе ресурсов. теги поддерживаются только для ресурсов, созданных с помощью Azure Resource Manager.
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
для использования при отправке в БОЛЬШОЙ двоичный объект и загрузке на виртуальные машины. Дополнительные сведения см. в передаче данных с помощью служебной программы 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.
- Если доступ к целевым виртуальным машинам выполняется через подсистему балансировки нагрузки, настройте правило NAT для входящего трафика, чтобы разрешить доступ через порт 5986.
- Если целевые виртуальные машины связаны с группой безопасности сети (NSG), настройте правило безопасности для входящего трафика, чтобы разрешить доступ через порт 5986.
CopyFilesInParallel
-
копирования в параллельном
boolean
. Необязательно. Используется при Destination = AzureVMs
. Значение по умолчанию: true
.
Укажите true
для копирования файлов параллельно с целевыми виртуальными машинами.
CleanTargetBeforeCopy
-
чистый целевой
boolean
. Необязательно. Используется при Destination = AzureVMs
. Значение по умолчанию: false
.
Укажите true
, чтобы очистить целевую папку перед копированием файлов.
skipCACheck
-
тестового сертификата
boolean
. Необязательно. Используется при Destination = AzureVMs
. Значение по умолчанию: true
.
WinRM требует сертификат для передачи HTTPS при копировании файлов из промежуточного blob-объекта хранилища в виртуальные машины Azure.
Если вы используете самозаверяющий сертификат, укажите true
, чтобы предотвратить проверку сертификата с помощью доверенного ЦС.
Параметры управления задачами
Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.
Выходные переменные
Эта задача определяет следующие выходные переменные, которые можно использовать в подчиненных шагах, заданиях и этапах.
StorageContainerUri
URI контейнера, в который были скопированы файлы. Допустимо только в том случае, если выбранный целевой объект — большой двоичный объект Azure.
StorageContainerSasToken
SasToken для контейнера, в который были скопированы файлы. Допустимо только в том случае, если выбранный целевой объект — большой двоичный объект 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 ID.
Для динамического развертывания групп ресурсов Azure, содержащих виртуальные машины, используйте задачу развертывания группы ресурсов Azure. Эта задача содержит пример шаблона, который может выполнять необходимые операции для настройки протокола HTTPS WinRM на виртуальных машинах, открытия порта 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, выполните следующее:
- Настройте правило входящего доступа, чтобы разрешить HTTPS через порт 5986 каждой виртуальной машины.
- Отключите удаленные ограничения UAC.
- Укажите учетные данные для задачи для доступа к виртуальным машинам с помощью имени входа на уровне администратора в простой форме имени пользователя без какой-либо части домена.
- Установите сертификат на компьютере, на котором выполняется агент автоматизации.
- Если вы используете самозаверяющий сертификат, задайте параметр тестового сертификата задачи.
Какой тип подключения службы следует выбрать?
Для учетных записей хранения Azure Resource Manager и виртуальных машин Azure Resource Manager используйте тип подключения службы Azure Resource Manager службы. См. автоматизация развертывания группы ресурсов Azure с помощью субъекта-службы.
При использовании типа подключения службы Azure Resource Manager задача автоматически фильтрует соответствующие новые учетные записи хранения Azure Resource Manager и другие поля. Например, группа ресурсов или облачная служба, а также виртуальные машины.
Как создать учебную или рабочую учетную запись для использования с этой задачей?
Подходящую учетную запись можно создать для использования в подключении к службе:
- Используйте портал Azure для создания учетной записи пользователя в Azure Active Directory.
- Добавьте учетную запись пользователя Azure Active Directory в группу соадминистраторов в подписке Azure.
- Войдите на портал Azure с помощью этой учетной записи пользователя и измените пароль.
- Используйте учетные данные этой учетной записи в подключении к службе. Затем развертывания обрабатываются с помощью этой учетной записи.
Если задача завершается ошибкой, будет ли возобновление копирования?
Так как AzCopy версии 10 не поддерживает файлы журналов, копирование в рамках задачи возобновить невозможно. Чтобы скопировать все файлы, необходимо снова запустить задачу.
Удаляются ли файлы журнала и файлы плана после копирования?
Файлы журнала и плана не удаляются задачей. Чтобы явно очистить файлы, добавьте шаг ИНТЕРФЕЙСА командной строки в рабочий процесс с помощью 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 и учетной записью хранения завершается ошибкой. В таких сценариях выполните описанные ниже действия.
- Добавьте шаг сборки с помощью Azure CLI для идентификации IP-адреса агента размещенной сборки Майкрософт во время выполнения. Он добавит IP-адрес в правило сети в учетной записи хранения Azure.
- Выполните шаг сборки для учетной записи хранения Azure.
- Добавьте еще один шаг сборки с помощью 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 |
возможностей | Эта задача не удовлетворяет требованиям к последующим задачам в задании. |
ограничения команд | Любое |
переменные settable | Любое |
Версия агента | 1.103.0 или более поздней версии |
Категория задач | Внедрять |