Provision agents for deployment groups (Aprowizowanie agentów dla grup wdrożenia)

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Grupy wdrożeń ułatwiają definiowanie logicznych grup maszyn docelowych na potrzeby wdrożenia i instalowanie wymaganego agenta na każdej maszynie. W tym artykule wyjaśniono, jak utworzyć grupę wdrożenia oraz jak zainstalować i aprowizować agenta na każdej maszynie wirtualnej lub fizycznej w grupie wdrażania.

Agent można zainstalować w dowolny z następujących sposobów:

  • Uruchom skrypt generowany automatycznie podczas tworzenia grupy wdrażania.
  • Zainstaluj rozszerzenie maszyny wirtualnej platformy Azure agenta usługi Azure Pipelines na każdej maszynie wirtualnej.
  • Użyj zadania wdrażania szablonu usługi ARM w potoku wydania.

Aby uzyskać informacje o agentach i potokach, zobacz:

Uruchamianie skryptu instalacji na serwerach docelowych

  1. Na karcie Grupy wdrożeń w usłudze Azure Pipelines wybierz pozycję +Nowy, aby utworzyć nową grupę.

  2. Wprowadź nazwę grupy i opcjonalnie opis, a następnie wybierz pozycję Utwórz.

  3. W sekcji Rejestrowanie maszyn przy użyciu wiersza polecenia na następnej stronie wybierz system operacyjny maszyny docelowej.

  4. Wybierz pozycję Użyj osobistego tokenu dostępu w skrypcie na potrzeby uwierzytelniania. Dowiedz się więcej.

  5. Wybierz pozycję Kopiuj skrypt do schowka.

  6. Zaloguj się do każdej maszyny docelowej z kolei przy użyciu konta z odpowiednimi uprawnieniami i:

    • Otwórz wiersz polecenia programu PowerShell Administracja istrator, wklej skopiowany skrypt, a następnie wykonaj go, aby zarejestrować maszynę w tej grupie.

    • Jeśli podczas uruchamiania skryptu podczas uruchamiania skryptu nie można utworzyć bezpiecznego kanału, wykonaj to polecenie w wierszu polecenia programu PowerShell Administracja istrator:

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    • Po wyświetleniu monitu o skonfigurowanie tagów agenta naciśnij Y i wprowadź wszystkie tagi, których użyjesz do identyfikowania podzbiorów maszyn w grupie na potrzeby częściowych wdrożeń.

      Tagi, które przypisujesz, umożliwiają ograniczenie wdrożenia do określonych serwerów, gdy grupa wdrażania jest używana w zadaniu Uruchom w grupie maszyn.

    • Po wyświetleniu monitu o konto użytkownika naciśnij klawisz Return , aby zaakceptować ustawienia domyślne.

    • Poczekaj na zakończenie skryptu z komunikatem Service vstsagent.{organization-name}.{computer-name} started successfully.

  7. Na stronie Grupy wdrażania usługi Azure Pipelines otwórz kartę Maszyny i sprawdź, czy agenci są uruchomioni. Jeśli skonfigurowane tagi nie są widoczne, odśwież stronę.

Instalowanie rozszerzenia maszyny wirtualnej platformy Azure agenta usługi Azure Pipelines

  1. Na karcie Grupy wdrożeń w usłudze Azure Pipelines wybierz pozycję +Nowy, aby utworzyć nową grupę.

  2. Wprowadź nazwę grupy i opcjonalnie opis, a następnie wybierz pozycję Utwórz.

  3. W witrynie Azure Portal dla każdej maszyny wirtualnej, która zostanie uwzględniona w grupie wdrażania, otwórz blok Rozszerzenie , wybierz pozycję + Dodaj , aby otworzyć listę Nowy zasób , a następnie wybierz pozycję Agent usługi Azure Pipelines.

    Instalowanie rozszerzenia agenta usługi Azure Pipelines

  4. W bloku Instalowanie rozszerzenia określ nazwę subskrypcji usługi Azure Pipelines do użycia. Jeśli na przykład adres URL to https://dev.azure.com/contoso, po prostu określ nazwę contoso.

  5. Określ nazwę projektu i nazwę grupy wdrożenia.

  6. Opcjonalnie określ nazwę agenta. Jeśli nie zostanie określony, używa nazwy maszyny wirtualnej dołączonej za pomocą -DGpolecenia .

  7. Wprowadź osobisty token dostępu (PAT), który ma być używany do uwierzytelniania w usłudze Azure Pipelines.

  8. Opcjonalnie określ rozdzielaną przecinkami listę tagów, które zostaną skonfigurowane na agencie. Tagi nie są uwzględniane w wielkości liter, a każda z nich nie może zawierać więcej niż 256 znaków.

  9. Wybierz przycisk OK , aby rozpocząć instalację agenta na tej maszynie wirtualnej.

  10. Dodaj rozszerzenie do innych maszyn wirtualnych, które chcesz uwzględnić w tej grupie wdrażania.

Korzystanie z zadania wdrażania szablonu usługi ARM

Ważne

Te instrukcje dotyczą wersji 2 zadania. Przełącz wersję zadania z 3 na 2.

Za pomocą zadania wdrażania szablonu usługi ARM można wdrożyć szablon usługi Azure Resource Manager (ARM), który instaluje rozszerzenie maszyny wirtualnej platformy Azure agenta usługi Azure Pipelines podczas tworzenia maszyny wirtualnej, lub zaktualizować grupę zasobów w celu zastosowania rozszerzenia po utworzeniu maszyny wirtualnej. Alternatywnie możesz użyć zaawansowanych opcji wdrażania zadania wdrażania szablonu usługi ARM, aby wdrożyć agenta w grupach wdrożeń.

Instalowanie rozszerzenia "Azure Pipelines Agent" maszyny wirtualnej platformy Azure przy użyciu szablonu usługi ARM

Szablon usługi ARM to plik JSON, który deklaratywnie definiuje zestaw zasobów platformy Azure. Szablon można automatycznie odczytywać i aprowizować zasoby przez platformę Azure. Pojedynczy szablon umożliwia wdrożenie wielu usług wraz z ich zależnościami.

W przypadku maszyny wirtualnej z systemem Windows utwórz szablon usługi ARM i dodaj element zasobów w ramach Microsoft.Compute/virtualMachine zasobu, jak pokazano poniżej:

"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 usłudze Azure DevOps Server 2022 dozwolone wartości AgentMajorVersion to auto|N. W systemie Azure DevOps Server 2022.1 lub nowszym dozwolone wartości AgentMajorVersion to auto|2|3.

"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')]"
     }
   }
  }
]

Gdzie:

  • Wartość VSTSAccountName jest wymagana. Subskrypcja usługi Azure Pipelines do użycia. Przykład: jeśli adres URL to https://dev.azure.com/contoso, po prostu określ contoso
  • Projekt TeamProject jest wymagany. Projekt, w ramach którego zdefiniowano grupę wdrożenia
  • Grupa wdrożenia jest wymagana. Grupa wdrożeń, dla której zostanie zarejestrowany agent wdrożenia
  • AgentName jest opcjonalny. Jeśli nie zostanie określona, zostanie użyta nazwa maszyny wirtualnej z dołączonym elementem -DG
  • Tagi są opcjonalne. Rozdzielona przecinkami lista tagów, które zostaną ustawione na agencie. Tagi nie są uwzględniane wielkości liter, a każda z nich nie może zawierać więcej niż 256 znaków
  • Wymagany jest token PATToken . Osobisty token dostępu używany do uwierzytelniania w usłudze Azure Pipelines w celu pobrania i skonfigurowania agenta

Uwaga

Jeśli wdrażasz na maszynie wirtualnej z systemem Linux, upewnij się, że type parametr w kodzie to TeamServicesAgentLinux.

Rozwiązywanie problemów z rozszerzeniem

Oto niektóre znane problemy z rozszerzeniem:

  • Plik stanu jest zbyt duży: ten problem występuje na maszynach wirtualnych z systemem Windows; nie zaobserwowano go na maszynach wirtualnych z systemem Linux. 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 próg, platforma Azure nie może go całkowicie odczytać i zgłasza błąd stanu. Na każdym ponownym uruchomieniu maszyny niektóre operacje są wykonywane przez rozszerzenie (mimo że może zostać pomyślnie zainstalowane wcześniej), które dołączają plik stanu. Jeśli maszyna jest ponownie uruchamiana wiele razy, rozmiar pliku stanu przekracza próg, co powoduje ten błąd. Komunikat o błędzie brzmi: Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes. Należy pamiętać, że instalacja rozszerzenia mogła zakończyć się pomyślnie, ale ten błąd ukrywa rzeczywisty stan rozszerzenia.

    Rozwiązaliśmy ten problem dotyczący ponownego uruchamiania maszyny (wersja 1.27.0.2 rozszerzenia systemu Windows i 1.21.0.1 rozszerzenia systemu Linux do wewnątrz), więc po ponownym uruchomieniu nic nie zostanie dodane do pliku stanu. Jeśli ten problem występuje z rozszerzeniem przed dokonaniem poprawki (oznacza to, że wystąpił ten problem z wcześniejszymi wersjami rozszerzenia), a rozszerzenie zostało automatycznie zapisane w wersjach z poprawką, problem nadal będzie się powtarzać. Dzieje się tak, ponieważ w przypadku aktualizacji rozszerzenia nowsza wersja rozszerzenia nadal działa z wcześniejszym plikiem stanu. Obecnie nadal może wystąpić ten problem, jeśli używasz starszej wersji rozszerzenia z flagą w celu wyłączenia aktualizacji automatycznych wersji pomocniczych lub jeśli duży plik stanu został przeniesiony z wcześniejszej wersji rozszerzenia do nowszych wersji, które zawierają poprawkę lub z jakiegokolwiek innego powodu. Jeśli tak jest, możesz przejść przez ten problem, odinstalowując i ponownie instalując rozszerzenie. Odinstalowanie rozszerzenia spowoduje wyczyszczenie całego katalogu rozszerzeń, więc zostanie utworzony nowy plik stanu na potrzeby nowej instalacji. Musisz zainstalować najnowszą wersję rozszerzenia. To rozwiązanie jest trwałą poprawką, a po wykonaniu tej czynności nie należy ponownie napotkać problemu.

  • Problem z danymi niestandardowymi: ten problem nie dotyczy rozszerzenia, ale niektórzy klienci zgłaszali zamieszanie dotyczące niestandardowej lokalizacji danych na maszynie wirtualnej podczas przełączania wersji systemu operacyjnego. Zalecamy następujące obejście. Język Python 2 został przestarzały, dlatego wprowadziliśmy rozszerzenie do pracy z językiem Python 3. Jeśli nadal używasz wcześniejszych wersji systemu operacyjnego, które domyślnie nie mają zainstalowanego środowiska Python 3, aby uruchomić rozszerzenie, należy zainstalować środowisko Python 3 na maszynie wirtualnej lub przełączyć się na wersje systemu operacyjnego z zainstalowanym domyślnie językiem Python 3. Na maszynach wirtualnych z systemem Linux dane niestandardowe są kopiowane do pliku /var/lib/waagent/ovf-env.xml dla wcześniejszych wersji agenta systemu Linux platformy Microsoft Azure oraz do /var/lib/waagent/CustomData nowszych wersji programu Microsoft Azure Linux Agent. Wygląda na to, że klienci, którzy mają zakodowane tylko jedną z tych dwóch ścieżek, napotykają problemy podczas przełączania wersji systemu operacyjnego, ponieważ plik nie istnieje w nowej wersji systemu operacyjnego, ale inny plik jest obecny. Aby uniknąć przerwania aprowizacji maszyny wirtualnej, należy wziąć pod uwagę oba pliki w szablonie, aby w przypadku awarii, drugi powinien zakończyć się powodzeniem.

Aby uzyskać więcej informacji na temat szablonów usługi ARM, zobacz Definiowanie zasobów w szablonach usługi Azure Resource Manager.

Aby użyć szablonu:

  1. Na karcie Grupy wdrożeń w usłudze Azure Pipelines wybierz pozycję +Nowy, aby utworzyć nową grupę.

  2. Wprowadź nazwę grupy i opcjonalnie opis, a następnie wybierz pozycję Utwórz.

  3. Na karcie Wydania usługi Azure Pipelines utwórz potok wydania z etapem zawierającym zadanie wdrażania szablonu usługi ARM.

  4. Podaj parametry wymagane dla zadania, takiego jak subskrypcja platformy Azure, nazwa grupy zasobów, lokalizacja i informacje o szablonie, a następnie zapisz potok wydania.

  5. Utwórz wydanie z potoku wydania, aby zainstalować agentów.

Instalowanie agentów przy użyciu zaawansowanych opcji wdrażania

  1. Na karcie Grupy wdrożeń w usłudze Azure Pipelines wybierz pozycję +Nowy, aby utworzyć nową grupę.

  2. Wprowadź nazwę grupy i opcjonalnie opis, a następnie wybierz pozycję Utwórz.

  3. Na karcie Wydania usługi Azure Pipelines utwórz potok wydania z etapem zawierającym zadanie wdrażania szablonu usługi ARM.

  4. Wybierz zadanie i rozwiń sekcję Zaawansowane opcje wdrażania dla maszyn wirtualnych. Skonfiguruj parametry w tej sekcji w następujący sposób:

    • Włącz wymagania wstępne: wybierz pozycję Konfiguruj przy użyciu agenta grupy wdrożeń.

    • Punkt końcowy usługi Azure Pipelines/TFS: wybierz istniejące połączenie usługi Team Foundation Server/TFS wskazujące na cel. Rejestracja agenta dla grup wdrożeń wymaga dostępu do projektu programu Visual Studio. Jeśli nie masz istniejącego połączenia z usługą, wybierz pozycję Dodaj i utwórz je teraz. Skonfiguruj go tak, aby używał osobistego tokenu dostępu (PAT) z zakresem ograniczonym do grupy wdrażania.

    • Projekt: określ projekt zawierający grupę wdrożenia.

    • Grupa wdrożenia: określ nazwę grupy wdrożenia, dla której będą zarejestrowani agenci.

    • Kopiowanie tagów maszyn wirtualnych platformy Azure do agentów: po ustawieniu (zaznaczonym) wszystkie tagi skonfigurowane na maszynie wirtualnej platformy Azure zostaną skopiowane do odpowiedniego agenta grupy wdrożeń. Domyślnie wszystkie tagi platformy Azure są kopiowane przy użyciu formatu Key: Value. Na przykład Role: Web.

  5. Podaj inne parametry wymagane dla zadania, takiego jak subskrypcja platformy Azure, nazwa grupy zasobów i lokalizacja, a następnie zapisz potok wydania.

  6. Utwórz wydanie z potoku wydania, aby zainstalować agentów.

Pomoc i obsługa techniczna