AzureFileCopy@3 — zadanie kopiowania plików platformy Azure w wersji 3
Kopiowanie plików do usługi Azure Blob Storage lub maszyn wirtualnych.
To zadanie zostało uznane za przestarzałe, ponieważ ta wersja zadania AzureFileCopy używa wycofanej wersji narzędzia AzCopy. Użyj najnowszej wersji zadania AzureFileCopy. Zobacz Przewodnik migracji narzędzia AzCopy dla wersji 8 do 10.
Uwaga
To zadanie nie obsługuje uwierzytelniania przy użyciu usługi Azure Resource Manager z federacją tożsamości przepływu pracy.
Kopiowanie plików do usługi Azure Blob Storage lub maszyn wirtualnych.
Uwaga
To zadanie nie obsługuje uwierzytelniania przy użyciu usługi Azure Resource Manager z federacją tożsamości przepływu pracy.
Składnia
# 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.
Dane wejściowe
źródła SourcePath
-
string
. To jest wymagane.
Określ ścieżkę bezwzględną folderu źródłowego lub plik na komputerze lokalnym lub udział UNC. Można użyć wstępnie zdefiniowanych zmiennych systemowych, takich jak $(Build.Repository.LocalPath)
. Nazwy zawierające symbole wieloznaczne, takie jak *.zip
, nie są obsługiwane. Określona wartość lub wyrażenie powinny zwracać pojedynczy folder lub nazwę pliku.
azureSubscription
-
subskrypcji platformy Azure
Alias wejściowy: ConnectedServiceNameARM
.
string
. To jest wymagane.
Określ nazwę połączenia usługi Azure Resource Manager skonfigurowane dla subskrypcji, w której znajduje się docelowa usługa platformy Azure, maszyna wirtualna lub konto magazynu. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Resource Manager.
Destination
-
typ docelowy
string
. To jest wymagane. Dozwolone wartości: AzureBlob
(Azure Blob), AzureVMs
(maszyny wirtualne platformy Azure).
Określ typ miejsca docelowego.
storage
-
konta magazynu usługi RM
Alias wejściowy: StorageAccountRM
.
string
. To jest wymagane.
Określ istniejące wcześniej konto magazynu usługi ARM. Jest to konto magazynu używane jako pośrednik do kopiowania plików na maszyny wirtualne platformy Azure.
ContainerName
-
nazwa kontenera
string
. Wymagane, gdy Destination = AzureBlob
.
Nazwa kontenera, do którego są kopiowane pliki. Jeśli określony kontener nie istnieje na koncie magazynu, zostanie utworzony.
Aby utworzyć katalog wirtualny wewnątrz kontenera, użyj danych wejściowych prefiksu obiektu blob. Na przykład dla lokalizacji docelowej https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/
określ nazwę kontenera mycontainer
i prefiks obiektu blob: vd1/vd2
.
prefiks BlobPrefix
- obiektów blob
string
. Opcjonalny. Użyj polecenia , gdy Destination = AzureBlob
.
Określ prefiks, który może służyć do filtrowania plików.
Przykład: możesz dołączyć numer kompilacji, aby filtrować pliki ze wszystkich obiektów blob przy użyciu tego samego numeru kompilacji.
Przykład: jeśli określisz prefiks obiektu blob myvd1
, katalog wirtualny zostanie utworzony wewnątrz kontenera. Pliki są kopiowane ze źródła do https://myaccount.blob.core.windows.net/mycontainer/myvd1/
.
resourceGroup
-
grupy zasobów
Alias wejściowy: EnvironmentNameRM
.
string
. Wymagane, gdy Destination = AzureVMs
.
Określ nazwę docelowej grupy zasobów, do której będą kopiowane pliki.
ResourceFilteringMethod
-
wybierz maszyny według
string
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
. Dozwolone wartości: machineNames
(nazwy maszyn), tags
. Wartość domyślna: machineNames
.
Określ nazwę lub tag hosta maszyny wirtualnej, który identyfikuje podzbiór maszyn wirtualnych w grupie zasobów. tagi są obsługiwane tylko dla zasobów utworzonych za pośrednictwem usługi Azure Resource Manager.
MachineNames
-
kryteria filtrowania
string
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
.
Podaj listę nazw maszyn wirtualnych lub nazw tagów, które identyfikują maszyny wirtualne, których dotyczy zadanie. Prawidłowe kryteria filtrowania obejmują:
- Nazwa grupy zasobów platformy Azure .
- Zmienna wyjściowa z poprzedniego zadania.
- Rozdzielana przecinkami lista nazw tagów lub nazw maszyn wirtualnych.
- Formatuj nazwy maszyn wirtualnych przy użyciu rozdzielanej przecinkami listy nazw FQDN lub adresów IP.
- Formatuj nazwy tagów filtru jako
{TagName}:{Value}
. Przykład:Role:DB;OS:Win8.1
,ffweb
,ffdb
lub tagi, takie jakRole:DB
,Web
,OS:Win8.1
.
Uwaga: prawidłowe ograniczniki dla tagów to ,(przecinek), :(colon) i ;(semicolon). W przypadku podawania wielu tagów zadanie będzie uruchamiane tylko na maszynach wirtualnych, które zawierają określone tagi. Domyślnie zadanie jest uruchamiane na wszystkich maszynach wirtualnych.
logowania administratora vmsAdminUserName
-
string
. Wymagane, gdy Destination = AzureVMs
.
Podaj nazwę użytkownika konta z uprawnieniami administracyjnymi na wszystkich docelowych maszynach wirtualnych.
- Obsługiwane formaty to:
username
,domain\username
,machine-name\username
i.\username
. - Formaty nazwy UPN, w tym
username@domain.com
i wbudowane konta systemowe, takie jakNT Authority\System
, nie są obsługiwane.
haseł vmsAdminPassword
-
string
. Wymagane, gdy Destination = AzureVMs
.
Podaj hasło administratora maszyn wirtualnych.
Prawidłowe dane wejściowe obejmują zmienne zdefiniowane w potokach kompilacji lub wydania, takie jak $(passwordVariable)
. Aby zabezpieczyć hasło, oznacz je jako secret
.
folderu docelowego TargetPath
-
string
. Wymagane, gdy Destination = AzureVMs
.
Określ ścieżkę do folderu na maszynach wirtualnych platformy Azure, do których zostaną skopiowane pliki.
Obsługiwane są zmienne środowiskowe, takie jak $env:windir
i $env:systemroot
. Przykłady: $env:windir\FabrikamFiber\Web
i c:\FabrikamFiber
AdditionalArgumentsForBlobCopy
-
opcjonalnych argumentów (do przekazywania plików do obiektu blob)
string
.
Podaj dodatkowe argumenty do AzCopy.exe
, które można zastosować podczas przekazywania do obiektów blob, takich jak /NC:10
.
Jeśli nie określono żadnych opcjonalnych argumentów, następujące argumenty są domyślnie dodawane.
/Y
/SetContentType
/Z
/V
-
/S
— dodano, gdy nazwa kontenera nie jest$root
. -
/BlobType:page
-Added, gdy określone konto magazynu jest kontem Premium. -
/Pattern
— dodano, gdy ścieżka źródłowa jest plikiem. Dołączone do innych określonych argumentów opcjonalnych.
AdditionalArgumentsForVMCopy
-
opcjonalnych argumentów (do pobierania plików na maszynę wirtualną)
string
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
.
Podaj dodatkowe argumenty do AzCopy.exe
, które można zastosować podczas pobierania do maszyn wirtualnych, takich jak /NC:10
.
Jeśli nie określono żadnych opcjonalnych argumentów, domyślnie są dodawane następujące argumenty.
/Y
/S
/Z
/V
enableCopyPrerequisites
-
włączanie wymagań wstępnych kopiowania
boolean
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
. Wartość domyślna: false
.
Po włączeniu użyje certyfikatu z podpisem własnym do skonfigurowania odbiornika zdalnego zarządzania systemem Windows (WinRM) na porcie 5986 zamiast protokołu HTTPS. Wymagane do wykonywania operacji kopiowania na maszynach wirtualnych platformy Azure. Jeśli docelowe maszyny wirtualne używają modułu równoważenia obciążenia, skonfiguruj reguły NAT dla portu docelowego (5986). Dotyczy tylko maszyn wirtualnych usługi ARM. Na docelowych maszynach wirtualnych skojarzonych z sieciową grupą zabezpieczeń skonfiguruj regułę zabezpieczeń dla ruchu przychodzącego, aby zezwolić na dostęp na porcie 5986.
CopyFilesInParallel
-
kopiowanie w równoległych
boolean
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
. Wartość domyślna: true
.
Określ true
, aby kopiować pliki równolegle do docelowych maszyn wirtualnych. Użycie tej wartości może skrócić całkowity czas potrzebny na wykonanie akcji.
CleanTargetBeforeCopy
-
czysty cel
boolean
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
. Wartość domyślna: false
.
Ustawienie tej wartości na true
czyści folder docelowy przed wykonaniem akcji kopiowania.
skipCACheck
-
certyfikatu testowego
boolean
. Opcjonalny. Użyj polecenia , gdy Destination = AzureVMs
. Wartość domyślna: true
.
Wartość domyślna nie sprawdzi, czy certyfikat serwera został podpisany przez zaufany urząd certyfikacji przed nawiązaniem połączenia za pośrednictwem protokołu HTTPS.
outputStorageUri
-
identyfikator URI kontenera magazynu
string
.
Określ nazwę zmiennej używanej dla identyfikatora URI kontenera magazynu, do którego skopiowano pliki. Prawidłowe tylko wtedy, gdy wybrane miejsce docelowe jest obiektem blob platformy Azure.
tokenu SAS kontenera magazynu outputStorageContainerSasToken
-
string
.
Określ nazwę zmiennej używanej dla tokenu SAS kontenera magazynu, który uzyskuje dostęp do skopiowanych plików. Użyj tej zmiennej jako danych wejściowych do kolejnych zadań. Domyślnie token SAS wygasa po 4 godzinach.
sasTokenTimeOutInMinutes
-
okres wygaśnięcia tokenu SYGNATURy dostępu współdzielonego w minutach
string
.
Określ czas w minutach, po którym token SAS wygaśnie. Prawidłowe tylko wtedy, gdy wybrane miejsce docelowe to Azure Blob.
Opcje sterowania zadaniami
Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli i typowe właściwości zadań.
Zmienne wyjściowe
Żaden.
Uwagi
Co nowego w AzureFileCopy@3 wersji
AzureFileCopy@3 obsługuje moduł Az i przestał obsługiwać klasyczny punkt końcowy usługi platformy Azure.
Zadanie służy do kopiowania plików aplikacji i innych artefaktów wymaganych do zainstalowania aplikacji, takich jak skrypty programu PowerShell, PowerShell-DSC moduły i inne.
Gdy obiektem docelowym są maszyny wirtualne platformy Azure, pliki są najpierw kopiowane do automatycznie wygenerowanego kontenera obiektów blob platformy Azure, a następnie pobierane do maszyn wirtualnych. Kontener zostanie usunięty po pomyślnym skopiowaniu plików do maszyn wirtualnych.
Zadanie używa narzędzia AzCopy, narzędzia wiersza polecenia utworzonego w celu szybkiego kopiowania danych z kont usługi Azure Storage i do kont usługi Azure Storage. Zadanie w wersji 3 lub nowszej używa narzędzia AzCopy w wersji 7.
Aby dynamicznie wdrażać grupy zasobów platformy Azure zawierające maszyny wirtualne, użyj zadania wdrażania grupy zasobów platformy Azure. To zadanie ma przykładowy szablon, który może wykonywać wymagane operacje w celu skonfigurowania protokołu HTTPS usługi WinRM na maszynach wirtualnych, otwarcia portu 5986 w zaporze i zainstalowania certyfikatu testowego.
Uwaga
Jeśli wdrażasz w usłudze Azure Static Websites jako kontener w usłudze Blob Storage, użyj w wersji 2 lub nowszej, aby zachować nazwę kontenera $web.
Często zadawane pytania
Jakie są wymagania wstępne programu Azure PowerShell dotyczące korzystania z tego zadania?
Zadanie wymaga zainstalowania programu Azure PowerShell na maszynie z uruchomionym agentem automatyzacji. Zalecana wersja to 1.0.2, ale zadanie działa z wersją 0.9.8 lub nowszą. Aby uzyskać zalecaną wersję, użyj instalatora programu Azure PowerShell w wersji 1.0.2.
Jakie są wymagania wstępne usługi WinRM dla tego zadania?
Zadanie używa protokołu HTTPS usługi WinRM do kopiowania plików z kontenera obiektów blob magazynu do maszyn wirtualnych platformy Azure. Usługa WinRM HTTPS musi być skonfigurowana na maszynach wirtualnych i zainstalowany odpowiedni certyfikat.
Jeśli maszyny wirtualne są tworzone bez otwierania portów PROTOKOŁU HTTPS usługi WinRM, wykonaj następujące kroki:
- Skonfiguruj regułę dostępu przychodzącego, aby zezwolić na protokół HTTPS na porcie 5986 każdej maszyny wirtualnej.
- Wyłącz ograniczenia zdalne kontroli dostępu użytkownika.
- Określ poświadczenia dla zadania uzyskiwania dostępu do maszyn wirtualnych przy użyciu identyfikatora logowania na poziomie administratora sformatowanego jako nazwa użytkownika bez żadnego odwołania do domeny.
- Zainstaluj certyfikat na maszynie z uruchomionym agentem automatyzacji.
- Ustaw parametr certyfikatu testowego dla certyfikatu z podpisem własnym.
Jaki typ połączenia z usługą należy wybrać?
W poniższej tabeli wymieniono typy kont magazynu i skojarzone połączenia usług. Aby określić, czy konto magazynu jest oparte na klasycznych interfejsach API, czy interfejsach API usługi Resource Manager, zaloguj się do witryny Azure Portal i wyszukaj konta usługi Storage (klasyczne) lub konta usługi Storage .
Typ konta magazynu | Połączenia usługi platformy Azure w programie TFS/TS |
---|---|
Menedżer Zasobów | Połączenie z usługą Azure Resource Manager |
Klasyczny | Połączenie usługi platformy Azure z uwierzytelnianiem opartym na certyfikatach lub poświadczeniach przy użyciu konta szkolnego lub służbowego |
W przypadku zasobów klasycznych platformy Azure użyj typu połączenia usługi azure z uwierzytelnianiem opartym na certyfikatach lub poświadczeniach. Jeśli używasz uwierzytelniania opartego na poświadczeniach, upewnij się, że poświadczenia są przeznaczone dla konta szkolnego lub służbowego. Konta Microsoft, takie jak
joe@live.com
ijoe@hotmail.com
, nie są obsługiwane.W przypadku maszyn wirtualnych usługi Azure Resource Manager użyj typu połączenia usługi Azure Resource Manager. Aby uzyskać więcej informacji, zobacz Automatyzowanie wdrażania grupy zasobów platformy Azure przy użyciu jednostki usługi.
Jeśli używasz typu połączenia usługi Azure Resource Manager lub typu połączenia usługi Azure z uwierzytelnianiem opartym na certyfikatach, zadanie automatycznie filtruje odpowiednie klasyczne konta magazynu, nowsze konta magazynu usługi Azure Resource Manager i inne pola. Na przykład grupa zasobów lub usługa w chmurze oraz maszyny wirtualne.
Uwaga
Obecnie typ połączenia usługi Azure z uwierzytelnianiem opartym na poświadczeniach nie filtruje pól magazynu, grupy zasobów ani usługi w chmurze oraz maszyny wirtualnej.
Jak naprawić błąd "403: To żądanie nie jest autoryzowane do wykonania tej operacji przy użyciu tego uprawnienia"?
Gdy usługa Azure DevOps tworzy i autoryzuje połączenie usługi z platformą Azure, tworzy rejestrację aplikacji w usłudze Active Directory subskrypcji. Ta tożsamość jest automatycznie dodawana z rolą Contributor
do wszystkich zasobów w grupie zasobów wybranej do autoryzacji. Aby przekazać obiekty blob do konta magazynu, bycie Contributor
jest za mało. Musisz ręcznie przypisać rolę Storage Blob Data Contributor
do tożsamości rejestracji aplikacji.
Skopiuj tożsamość aplikacji z istniejącego dziedziczonego wpisu jako Contributor
, który zostanie wyświetlony w okienku Zarządzanie dostępem i tożsamościami, i wyszukaj ją jawnie w interfejsie użytkownika Add role assignment
. Tożsamość nie znajduje się na liście rozwijanej. Należy wyszukać jego identyfikator.
Co się stanie, jeśli moja grupa zasobów zawiera zarówno maszyny wirtualne klasyczne, jak i maszyny wirtualne usługi Resource Manager?
Jeśli określona grupa zasobów zawiera zarówno usługę Azure Resource Manager, jak i klasyczne maszyny wirtualne, zestaw maszyn wirtualnych, które są docelowe, zależy od typu połączenia.
- W przypadku połączeń opartych na certyfikatach i połączeń opartych na poświadczeniach operacja kopiowania jest wykonywana tylko na klasycznych maszynach wirtualnych.
- W przypadku połączeń opartych na nazwie głównej usługi operacja kopiowania jest wykonywana tylko na maszynach wirtualnych usługi Resource Manager.
Jak utworzyć konto szkolne lub służbowe do użycia z tym zadaniem?
Odpowiednie konto można łatwo utworzyć do użycia w połączeniu z usługą:
- Użyj witryny Azure Portal, aby utworzyć nowe konto użytkownika w usłudze Azure Active Directory.
- Dodaj konto użytkownika usługi Azure Active Directory do grupy współadministratorów w subskrypcji platformy Azure.
- Zaloguj się w witrynie Azure Portal przy użyciu tego konta użytkownika i zmień hasło.
- Użyj nowych poświadczeń dla tego konta w połączeniu z usługą. Wdrożenia zostaną przetworzone przy użyciu tego konta.
Przykłady
# 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
Wymagania
Wymaganie | Opis |
---|---|
Typy potoków | YAML, klasyczna kompilacja, wersja klasyczna |
Działa na | Agent, DeploymentGroup |
Wymagania | Agenci hostowani samodzielnie muszą mieć możliwości zgodne z następującymi wymaganiami do uruchamiania zadań korzystających z tego zadania: azureps |
możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
ograniczenia poleceń | Jakikolwiek |
zmienne ustawiane | Jakikolwiek |
Wersja agenta | 1.103.0 lub nowsza |
Kategoria zadań | Zastosuj |