Provision agents for deployment groups (Aprowizowanie agentów dla grup wdrożenia)
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Grupa wdrożeń to logiczna grupa maszyn docelowych wdrożenia dla klasycznych potoków wydania w usłudze Azure Pipelines. Każdy serwer docelowy w grupie wdrażania wymaga zainstalowanego agenta wdrażania. W tym artykule wyjaśniono, jak zainstalować i aprowizować agenta wdrażania na każdej maszynie fizycznej lub wirtualnej w grupie wdrażania.
Agenta można zainstalować na maszynie docelowej w dowolny z następujących sposobów:
- Uruchom skrypt, który jest generowany podczas tworzenia grupy wdrażania.
- Zainstaluj rozszerzenie maszyny wirtualnej platformy Azure agenta usługi Azure Pipelines na maszynie wirtualnej.
- Użyj zadania AzureResourceGroupDeploymentV2 w potoku wydania, aby dynamicznie utworzyć grupę wdrożenia i aprowizować agentów.
W poniższych sekcjach przedstawiono kroki implementowania każdej metody.
Wymagania wstępne
- Organizacja i projekt usługi Azure DevOps. Aby utworzyć organizację lub projekt, zobacz Tworzenie nowej organizacji lub Tworzenie projektu w usłudze Azure DevOps.
- Dostęp do co najmniej jednej maszyny docelowej wdrożenia systemu Windows lub Linux z odpowiednimi uprawnieniami.
- W przypadku metod instalacji agenta usługi Azure Pipelines konto platformy Azure i subskrypcja z uprawnieniami do tworzenia maszyn wirtualnych platformy Azure i zarządzania nimi. Jeśli nie masz konta platformy Azure, utwórz bezpłatne konto.
Uruchamianie skryptu instalacji na serwerach docelowych
Podczas tworzenia grupy wdrażania jest generowany skrypt, który można uruchomić na każdej maszynie docelowej w celu zarejestrowania serwera i zainstalowania agenta. Aby zainstalować agenta przy użyciu wygenerowanego skryptu rejestracji:
W projekcie usługi Azure DevOps wybierz pozycję Potoki>Grupy wdrażania.
Na ekranie Grupy wdrożenia wybierz pozycję Nowy lub wybierz pozycję Dodaj grupę wdrożenia, jeśli ta grupa wdrożenia jest pierwszą grupą w projekcie.
Wprowadź nazwę grupy wdrożenia i opcjonalny opis, a następnie wybierz pozycję Utwórz.
Na następnym ekranie wybierz pozycję Windows lub Linux dla pozycji Typ obiektu docelowego do zarejestrowania. Zostanie wygenerowany skrypt rejestracji.
Wybierz pozycję Do uwierzytelnienia użyj osobistego tokenu dostępu w skrypcie. Aby uzyskać więcej informacji, zobacz Używanie osobistych tokenów dostępu.
Wybierz pozycję Kopiuj skrypt do schowka.
Na każdej maszynie docelowej zaloguj się przy użyciu konta z uprawnieniami administracyjnymi.
Uruchom skopiowany skrypt, aby zarejestrować maszynę i zainstalować agenta. W przypadku maszyn z systemem Windows użyj wiersza polecenia programu PowerShell z podwyższonym poziomem uprawnień.
Po uruchomieniu skryptu:
Aby przypisać tagi, które umożliwiają ograniczenie wdrożeń do niektórych serwerów w zadaniu grupy wdrożenia, wprowadź wartość Y po wyświetleniu monitu o wprowadzenie tagów, a następnie wprowadź tag lub tagi dla tej maszyny wirtualnej.
Tagi są ograniczone do 256 znaków, są bez uwzględniania wielkości liter i nie ma limitu liczby tagów, których można użyć.
Po wyświetleniu monitu o konto użytkownika zaakceptuj wartości domyślne.
Uwaga
Jeśli podczas uruchamiania skryptu nie można utworzyć bezpiecznego kanału, uruchom następujące polecenie w wierszu polecenia administratora programu PowerShell:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Po skonfigurowaniu każdego serwera docelowego skrypt powinien zwrócić komunikat Service vstsagent.{organization-name}.{computer-name} started successfully
.
Na karcie Cele na stronie Grupy wdrażania usługi Azure Pipelines możesz sprawdzić, czy agent jest uruchomiony. W razie potrzeby odśwież stronę.
Instalowanie rozszerzenia maszyny wirtualnej platformy Azure agenta usługi Azure Pipelines
Jeśli używasz maszyn wirtualnych platformy Azure jako maszyn wdrażania, możesz zainstalować rozszerzenie agenta usługi Azure Pipelines na każdej maszynie wirtualnej. Rozszerzenie automatycznie rejestruje agenta z określoną grupą wdrażania w projekcie usługi Azure DevOps.
Aby zainstalować agenta przy użyciu rozszerzenia, najpierw utwórz grupę wdrażania:
- W projekcie usługi Azure DevOps wybierz pozycję Potoki>Grupy wdrażania.
- Na ekranie Grupy wdrożenia wybierz pozycję Nowy lub wybierz pozycję Dodaj grupę wdrożenia, jeśli ta grupa wdrożenia jest pierwszą grupą w projekcie.
- Wprowadź nazwę grupy wdrożenia i opcjonalny opis, a następnie wybierz pozycję Utwórz.
W witrynie Azure Portal zainstaluj rozszerzenie agenta usługi Azure Pipelines na każdej docelowej maszynie wirtualnej:
Na stronie maszyny wirtualnej wybierz pozycję >Ustawienia Rozszerzenia i aplikacje w obszarze nawigacji po lewej stronie.
Na karcie Rozszerzenie wybierz pozycję Dodaj.
Na stronie Instalowanie rozszerzenia wyszukaj i wybierz pozycję Agent usługi Azure Pipelines, a następnie wybierz pozycję Dalej.
Na ekranie Konfigurowanie rozszerzenia agenta usługi Azure Pipelines określ następujące informacje:
- Adres URL organizacji usługi Azure DevOps: wprowadź adres URL organizacji usługi Azure DevOps, na przykład
https://dev.azure.com/contoso
. - Projekt zespołowy: wprowadź nazwę projektu, na przykład myProject.
- Grupa wdrożenia: wprowadź nazwę utworzonej grupy wdrożenia.
- Nazwa agenta: opcjonalnie wprowadź nazwę agenta. Jeśli nic nie wprowadzisz, agent nosi nazwę maszyny wirtualnej dołączaną za pomocą
-DG
polecenia . - Osobisty token dostępu: wprowadź osobisty token dostępu (PAT), który ma być używany do uwierzytelniania w usłudze Azure Pipelines.
- Tagi: opcjonalnie określ rozdzielaną przecinkami listę tagów do skonfigurowania na agencie. Tagi są ograniczone do 256 znaków, są bez uwzględniania wielkości liter i nie ma limitu liczby tagów, których można użyć.
- Adres URL organizacji usługi Azure DevOps: wprowadź adres URL organizacji usługi Azure DevOps, na przykład
Wybierz pozycję Przejrzyj i utwórz, a po zakończeniu walidacji wybierz pozycję Utwórz.
Korzystanie z zadania AzureResourceGroupDeploymentV2
Do wdrożenia szablonu usługi Azure Resource Manager (ARM) można użyć zadania AzureResourceGroupDeploymentV2. Szablon może zainstalować rozszerzenie agenta usługi Azure Pipelines podczas tworzenia maszyny wirtualnej platformy Azure lub zaktualizować grupę zasobów, aby zastosować rozszerzenie po utworzeniu maszyny wirtualnej.
Alternatywnie możesz użyć zaawansowanych opcji wdrażania zadania AzureResourceGroupDeployment w celu wdrożenia agenta.
Tworzenie grupy wdrożenia
Najpierw utwórz grupę wdrożenia:
- W projekcie usługi Azure DevOps wybierz pozycję Potoki>Grupy wdrażania.
- Na ekranie Grupy wdrożenia wybierz pozycję Nowy lub wybierz pozycję Dodaj grupę wdrożenia, jeśli ta grupa wdrożenia jest pierwszą grupą w projekcie.
- Wprowadź nazwę grupy wdrożenia i opcjonalny opis, a następnie wybierz pozycję Utwórz.
Instalowanie agenta przy użyciu szablonu usługi ARM
Szablon usługi ARM to plik JSON, który deklaratywnie definiuje zestaw zasobów platformy Azure. Platforma Azure automatycznie odczytuje szablon i aprowizuje zasoby. W jednym szablonie można wdrożyć wiele usług i ich zależności.
Aby zarejestrować i zainstalować agenta wdrażania przy użyciu szablonu usługi ARM, dodaj element resources w ramach Microsoft.Compute/virtualMachine
zasobu, jak pokazano w poniższym kodzie.
"resources": [
{
"name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2015-06-15",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines/',
concat(parameters('vmNamePrefix'),copyindex()))]"
],
"properties": {
"publisher": "Microsoft.VisualStudio.Services",
"type": "TeamServicesAgent",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"VSTSAccountName": "[parameters('VSTSAccountName')]",
"TeamProject": "[parameters('TeamProject')]",
"DeploymentGroup": "[parameters('DeploymentGroup')]",
"AgentName": "[parameters('AgentName')]",
"AgentMajorVersion": "auto|2|3",
"Tags": "[parameters('Tags')]"
},
"protectedSettings": {
"PATToken": "[parameters('PATToken')]"
}
}
}
]
Uwaga
W przypadku maszyny wirtualnej type
z systemem Linux parametr w properties
kodzie powinien mieć wartość TeamServicesAgentLinux
.
Uwaga
W systemie Azure DevOps Server 2022.1 lub nowszym dozwolone wartości AgentMajorVersion
to auto|2|3
. W usłudze Azure DevOps Server 2022.0 i starszych wersjach dozwolone wartości AgentMajorVersion
to auto|N
.
"resources": [
{
"name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2015-06-15",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines/',
concat(parameters('vmNamePrefix'),copyindex()))]"
],
"properties": {
"publisher": "Microsoft.VisualStudio.Services",
"type": "TeamServicesAgent",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"VSTSAccountName": "[parameters('VSTSAccountName')]",
"TeamProject": "[parameters('TeamProject')]",
"DeploymentGroup": "[parameters('DeploymentGroup')]",
"AgentName": "[parameters('AgentName')]",
"AgentMajorVersion": "auto|N",
"Tags": "[parameters('Tags')]"
},
"protectedSettings": {
"PATToken": "[parameters('PATToken')]"
}
}
}
]
Powyższy kod:
VSTSAccountName
jest wymaganą organizacją usługi Azure Pipelines do użycia. Jeśli na przykład adres URL usługi Azure DevOps tohttps://dev.azure.com/contoso
, po prostu określcontoso
TeamProject
jest wymaganym projektem, który ma zdefiniowaną w niej grupę wdrożenia.DeploymentGroup
jest wymaganą grupą wdrożenia do zarejestrowania agenta.AgentName
jest opcjonalną nazwą agenta. Jeśli nie zostanie określony, agent otrzymuje nazwę maszyny wirtualnej z dołączonym elementem-DG
.Tags
to opcjonalna, rozdzielona przecinkami lista tagów, które mają być ustawione na agencie. Tagi są ograniczone do 256 znaków, są bez uwzględniania wielkości liter i nie ma limitu liczby tagów, których można użyć.PATToken
jest wymagany do uwierzytelniania w usłudze Azure Pipelines na potrzeby pobierania i konfigurowania agenta.
Aby uzyskać więcej informacji na temat szablonów usługi ARM, zobacz Definiowanie zasobów w szablonach usługi Azure Resource Manager.
Używanie szablonu w potoku wydania
Tworzenie potoku wydania:
- Wybierz pozycję Wydania potoków>z menu po lewej stronie, a następnie wybierz pozycję Nowy>potok wydania.
- Na karcie Wydania usługi Azure Pipelines utwórz potok wydania z etapem zawierającym zadanie wdrażania szablonu usługi ARM.
- Ten szablon używa wersji 2 zadania, więc na ekranie ustawień wdrażania grupy zasobów platformy Azure zmień wersję zadania z 3.* na 2.*.
- Podaj parametry wymagane do wykonania zadania, takie jak subskrypcja platformy Azure, nazwa grupy zasobów, lokalizacja, informacje o szablonie i akcja.
- Zapisz potok wydania i utwórz wydanie z potoku, aby zainstalować agentów.
Instalowanie agentów przy użyciu zaawansowanych opcji wdrażania
Alternatywnie można zainstalować agenta przy użyciu zaawansowanych opcji wdrażania. Wykonaj powyższe kroki, ale na ekranie Ustawień wdrażania grupy zasobów platformy Azure rozwiń sekcję Zaawansowane opcje wdrażania dla maszyn wirtualnych.
W obszarze Włącz wymagania wstępne wybierz pozycję Konfiguruj za pomocą agenta grupy wdrożeń.
Podaj następujące wymagane parametry i ustawienia:
Połączenie usługi Azure Pipelines: wybierz istniejące połączenie z usługą, które wskazuje cel.
Jeśli nie masz istniejącego połączenia z usługą, wybierz pozycję Nowy i utwórz je. Aby uzyskać więcej informacji, zobacz Tworzenie połączenia z usługą. Skonfiguruj połączenie usługi, aby używać pat z zakresem ograniczonym do grupy wdrożeń.
Projekt zespołowy: wybierz projekt zawierający grupę wdrożenia.
Grupa wdrożenia: wybierz grupę wdrożenia, w celu zarejestrowania agentów.
Wybierz pozycję Kopiuj tagi maszyny wirtualnej platformy Azure do agentów , aby skopiować wszystkie tagi skonfigurowane na maszynie wirtualnej platformy Azure do odpowiedniego agenta grupy wdrożeń.
Domyślnie wszystkie tagi platformy Azure są kopiowane przy użyciu
Key: Value
formatu, na przykładRole: Web
.
Zapisz potok i utwórz wydanie, aby zainstalować agentów.
Rozwiązywanie problemów z rozszerzeniem
Istnieją znane problemy z rozszerzeniem agenta usługi Azure Pipelines.
Plik stanu jest za duży
Ten problem może wystąpić na maszynach wirtualnych z systemem Windows. Plik stanu zawiera obiekt JSON, który opisuje bieżący stan rozszerzenia. Obiekt jest symbolem zastępczym umożliwiającym wyświetlenie listy wykonanych do tej pory operacji.
Platforma Azure odczytuje ten plik stanu i przekazuje obiekt stanu jako odpowiedź na żądania interfejsu API. Plik ma maksymalny dozwolony rozmiar. Jeśli rozmiar przekracza wartość maksymalną, platforma Azure nie może go całkowicie odczytać i zgłasza błąd stanu.
Mimo że rozszerzenie może być instalowane początkowo, za każdym razem, gdy maszyna ponownie uruchomi rozszerzenie, wykonuje pewne operacje dołączane do pliku stanu. Jeśli maszyna jest uruchamiana wiele razy, rozmiar pliku stanu może przekroczyć próg, powodując błąd Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes
. Mimo że instalacja rozszerzenia może zakończyć się pomyślnie, ten błąd ukrywa rzeczywisty stan rozszerzenia.
Ten problem z ponownym uruchamianiem maszyny został rozwiązany w wersji 1.27.0.2
rozszerzenia systemu Windows i 1.21.0.1
rozszerzenia systemu Linux. Ponowne uruchomienie powoduje teraz dodanie niczego do pliku stanu. Jeśli jednak wystąpił ten problem z starszą wersją rozszerzenia, a rozszerzenie zostało automatycznie zaktualizowane do stałej wersji, problem może się powtarzać. Nowsze wersje rozszerzenia nadal mogą działać z wcześniejszym plikiem stanu.
Ten problem może wystąpić, jeśli używasz starszej wersji rozszerzenia z flagą , aby wyłączyć automatyczne aktualizowanie wersji pomocniczej lub jeśli duży plik stanu został przeniesiony z wcześniejszej wersji do stałej wersji. Jeśli tak, możesz rozwiązać ten problem, odinstalowując i ponownie zainstalować rozszerzenie. Odinstalowanie rozszerzenia powoduje wyczyszczenie całego katalogu rozszerzeń i utworzenie nowego pliku stanu dla nowej instalacji najnowszej wersji.
Problem z danymi niestandardowymi
Język Python 2 jest przestarzały, a rozszerzenie agenta usługi Azure Pipelines współpracuje z językiem Python 3. Jeśli nadal używasz wersji systemu operacyjnego, które nie mają zainstalowanego domyślnie środowiska Python 3, aby uruchomić rozszerzenie, należy zainstalować środowisko Python 3 na maszynie wirtualnej lub przełączyć się do wersji systemu operacyjnego, która ma zainstalowany język Python 3 domyślnie. W przeciwnym razie podczas przełączania wersji systemu operacyjnego może wystąpić zamieszanie dotyczące niestandardowej lokalizacji danych na maszynie wirtualnej.
Na maszynach wirtualnych z systemem Linux niestandardowe kopie danych do /var/lib/waagent/ovf-env.xml dla wcześniejszych wersji agenta oraz do /var/lib/waagent/CustomData dla nowszych wersji. Jeśli kodujesz tylko jedną z tych dwóch ścieżek, możesz napotkać problemy podczas przełączania wersji systemu operacyjnego, ponieważ jedna ze ścieżek nie istnieje w nowej wersji systemu operacyjnego, chociaż druga ścieżka jest obecna. Aby uniknąć przerwania aprowizacji maszyny wirtualnej, rozważ użycie obu ścieżek w szablonie, aby w razie awarii, drugi powinien zakończyć się powodzeniem.
Pomoc i obsługa techniczna
- Zapoznaj się z poradami dotyczącymi rozwiązywania problemów.
- Uzyskaj porady na temat Stack Overflow.
- Opublikuj swoje pytania, wyszukaj odpowiedzi lub zasugeruj funkcję w społeczności deweloperów usługi Azure DevOps.
- Uzyskaj pomoc techniczną dotyczącą usługi Azure DevOps.