Bereitstellen von Agents für Bereitstellungsgruppen
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Eine Bereitstellungsgruppe ist eine logische Gruppe von Bereitstellungszielcomputern für klassische Release-Pipelines in Azure-Pipelines. Für jeden Zielserver in einer Bereitstellungsgruppe ist ein Bereitstellungs-Agent installiert. In diesem Artikel wird erläutert, wie Sie den Bereitstellungs-Agent auf jedem physischen oder virtuellen Computer (VM) in einer Bereitstellungsgruppe installieren und bereitstellen.
Sie können den Agent auf einem Zielcomputer auf eine der folgenden Arten installieren:
- Führen Sie das Skript aus, das generiert wird, wenn Sie die Bereitstellungsgruppe erstellen.
- Installieren Sie die Azure Pipelines Agent Azure VM-Erweiterung auf dem virtuellen Computer.
- Verwenden Sie die AzureResourceGroupDeploymentV2-Aufgabe in Ihrer Releasepipeline, um eine Bereitstellungsgruppe zu erstellen und Agents dynamisch bereitzustellen.
Die folgenden Abschnitte enthalten Schritte zum Implementieren der einzelnen Methoden.
Voraussetzungen
- Eine Azure DevOps-Organisation und ein entsprechendes Projekt. Informationen zum Erstellen einer Organisation oder eines Projekts finden Sie unter Erstellen einer neuen Organisation oder Erstellen eines Projekts in Azure DevOps.
- Zugriff auf mindestens einen Windows- oder Linux-Bereitstellungszielcomputer mit den entsprechenden Berechtigungen.
- Für die Installationsmethoden des Azure Pipelines-Agents, ein Azure-Konto und ein Abonnement mit Berechtigungen zum Erstellen und Verwalten von Azure-VMs. Wenn Sie kein Azure-Konto haben, registrieren Sie sich für ein kostenloses Konto.
Ausführen des Installationsskripts auf den Zielservern
Wenn Sie eine Bereitstellungsgruppe erstellen, wird ein Skript generiert, das Auf jedem Zielcomputer ausgeführt werden kann, um den Server zu registrieren und den Agent zu installieren. So installieren Sie den Agent mithilfe des generierten Registrierungsskripts:
Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines>Deployment Groups aus.
Wählen Sie auf dem Bildschirm "Bereitstellungsgruppen " die Option "Neu" aus, oder wählen Sie " Bereitstellungsgruppe hinzufügen", wenn diese Bereitstellungsgruppe das erste im Projekt ist.
Geben Sie einen Bereitstellungsgruppennamen und eine optionale Beschreibung ein, und wählen Sie dann "Erstellen" aus.
Wählen Sie auf dem nächsten Bildschirm Windows oder Linux für den Zieltyp aus, der registriert werden soll. Daraufhin wird ein Registrierungsskript generiert.
Klicken Sie auf Verwenden Sie für die Authentifizierung ein persönliches Zugriffstoken im Skript. Weitere Informationen finden Sie unter Verwenden von persönlichen Zugriffstoken.
Wählen Sie Skript in die Zwischenablage kopieren aus.
Melden Sie sich auf jedem Zielcomputer mit einem Konto mit Administratorberechtigungen an.
Führen Sie das kopierte Skript aus, um den Computer zu registrieren und den Agent zu installieren. Verwenden Sie für Windows-Computer eine PowerShell-Eingabeaufforderung mit erhöhten Rechten.
Wenn das Skript ausgeführt wird:
Wenn Sie Tags zuweisen möchten, mit denen Sie Bereitstellungen auf bestimmte Server in einem Bereitstellungsgruppenauftrag beschränken können, geben Sie Y ein, wenn Sie aufgefordert werden, Tags einzugeben, und geben Sie dann ein Tag oder tags für diesen virtuellen Computer ein.
Tags sind jeweils auf 256 Zeichen beschränkt, unterscheiden die Groß-/Kleinschreibung, und es gibt keine Beschränkung für die Anzahl der Tags, die Sie verwenden können.
Wenn Sie zur Eingabe eines Benutzerkontos aufgefordert werden, akzeptieren Sie die Standardwerte.
Hinweis
Wenn beim Ausführen des Skripts, das kein sicherer Kanal erstellt werden konnte, ein Fehler angezeigt wird, führen Sie den folgenden Befehl an der PowerShell-Eingabeaufforderung des Administrators aus:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Nachdem Sie jeden Zielserver eingerichtet haben, sollte das Skript die Nachricht Service vstsagent.{organization-name}.{computer-name} started successfully
zurückgeben.
Auf der Registerkarte "Ziele " der Seite "Azure Pipelines Deployment groups " können Sie überprüfen, ob der Agent ausgeführt wird. Aktualisieren Sie die Seite bei Bedarf.
Installieren der Azure-VM-Erweiterung für den Azure Pipelines-Agent
Wenn Sie Azure-VMs als Bereitstellungscomputer verwenden, können Sie die Azure Pipelines Agent-Erweiterung auf jedem virtuellen Computer installieren. Die Erweiterung registriert den Agent automatisch bei der angegebenen Bereitstellungsgruppe in Ihrem Azure DevOps-Projekt.
Um den Agent mithilfe der Erweiterung zu installieren, erstellen Sie zuerst die Bereitstellungsgruppe:
- Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines>Deployment Groups aus.
- Wählen Sie auf dem Bildschirm "Bereitstellungsgruppen " die Option "Neu" aus, oder wählen Sie " Bereitstellungsgruppe hinzufügen", wenn diese Bereitstellungsgruppe das erste im Projekt ist.
- Geben Sie einen Bereitstellungsgruppennamen und eine optionale Beschreibung ein, und wählen Sie dann "Erstellen" aus.
Installieren Sie im Azure-Portal die Azure Pipelines Agent-Erweiterung auf jeder Ziel-VM:
Wählen Sie auf der Seite "VM" im linken Navigationsbereich "Einstellungenerweiterungen>+ Anwendungen" aus.
Wählen Sie auf der Registerkarte "Erweiterung" die Option "Hinzufügen" aus.
Suchen Sie auf der Seite "Erweiterung installieren" nach azure Pipelines Agent, und wählen Sie dann "Weiter" aus.
Geben Sie auf dem Bildschirm "Agenterweiterung für Azure Pipelines konfigurieren" die folgenden Informationen an:
- Url der Azure DevOps-Organisation: Geben Sie die URL Ihrer Azure DevOps-Organisation ein, z
https://dev.azure.com/contoso
. B. . - Teamprojekt: Geben Sie Ihren Projektnamen ein, z . B. myProject.
- Bereitstellungsgruppe: Geben Sie den Namen der von Ihnen erstellten Bereitstellungsgruppe ein.
- Agentname: Geben Sie optional einen Namen für den Agent ein. Wenn Sie nichts eingeben, wird der Agent mit dem Namen des virtuellen Computers benannt, der angefügt ist
-DG
. - Persönliches Zugriffstoken: Geben Sie das persönliche Zugriffstoken (PERSONAL Access Token, PAT) ein, das für die Authentifizierung für Azure-Pipelines verwendet werden soll.
- Tags: Geben Sie optional eine durch Trennzeichen getrennte Liste von Tags an, die für den Agent konfiguriert werden sollen. Tags sind jeweils auf 256 Zeichen beschränkt, unterscheiden die Groß-/Kleinschreibung, und es gibt keine Beschränkung für die Anzahl der Tags, die Sie verwenden können.
- Url der Azure DevOps-Organisation: Geben Sie die URL Ihrer Azure DevOps-Organisation ein, z
Klicken Sie auf Überprüfen + erstellen und nach der Überprüfung auf Erstellen.
Verwenden der AzureResourceGroupDeploymentV2-Aufgabe
Sie können die AzureResourceGroupDeploymentV2-Aufgabe verwenden, um eine Azure Resource Manager (ARM)-Vorlage bereitzustellen. Die Vorlage kann die Azure Pipelines Agent-Erweiterung beim Erstellen einer Azure-VM installieren oder die Ressourcengruppe aktualisieren, um die Erweiterung anzuwenden, nachdem eine VM erstellt wurde.
Alternativ können Sie die erweiterten Bereitstellungsoptionen der AzureResourceGroupDeployment-Aufgabe verwenden, um den Agent bereitzustellen.
Erstellen einer Bereitstellungsgruppe
Erstellen Sie zuerst die Bereitstellungsgruppe:
- Wählen Sie in Ihrem Azure DevOps-Projekt Pipelines>Deployment Groups aus.
- Wählen Sie auf dem Bildschirm "Bereitstellungsgruppen " die Option "Neu" aus, oder wählen Sie " Bereitstellungsgruppe hinzufügen", wenn diese Bereitstellungsgruppe das erste im Projekt ist.
- Geben Sie einen Bereitstellungsgruppennamen und eine optionale Beschreibung ein, und wählen Sie dann "Erstellen" aus.
Verwenden einer ARM-Vorlage zum Installieren des Agents
Eine ARM-Vorlage ist eine JSON-Datei, die Azure-Ressourcen deklarativ definiert. Azure liest die Vorlage automatisch und stellt die Ressourcen zur Bereitstellung vor. Sie können mehrere Dienste und deren Abhängigkeiten in einer einzelnen Vorlage bereitstellen.
Um den Bereitstellungs-Agent mithilfe einer ARM-Vorlage zu registrieren und zu installieren, fügen Sie ein Ressourcenelement unter der Microsoft.Compute/virtualMachine
Ressource hinzu, wie im folgenden Code gezeigt.
"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')]"
}
}
}
]
Hinweis
Bei einer Linux-VM sollte der type
Parameter unter properties
dem Code sein TeamServicesAgentLinux
.
Hinweis
In Azure DevOps Server 2022.1 und höher sind für AgentMajorVersion
die Werte auto|2|3
zulässig. In Azure DevOps Server 2022.0 und früheren Versionen sind auto|N
die zulässigen Werte AgentMajorVersion
.
"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')]"
}
}
}
]
Im obigen Code:
VSTSAccountName
ist die erforderliche Azure Pipelines-Organisation für die Verwendung. Wenn Ihre Azure DevOps-URL beispielsweise lautethttps://dev.azure.com/contoso
, geben Sie einfach folgendes an:contoso
TeamProject
ist das erforderliche Projekt mit der darin definierten Bereitstellungsgruppe.DeploymentGroup
ist die erforderliche Bereitstellungsgruppe, bei der der Agent registriert werden soll.AgentName
ist ein optionaler Agentname. Wenn nicht angegeben, erhält der Agent den VM-Namen, der-DG
angefügt wird.Tags
ist eine optionale, durch Trennzeichen getrennte Liste von Tags, die für den Agent festgelegt werden sollen. Tags sind jeweils auf 256 Zeichen beschränkt, unterscheiden die Groß-/Kleinschreibung, und es gibt keine Beschränkung für die Anzahl der Tags, die Sie verwenden können.PATToken
ist der erforderliche PAT für die Authentifizierung bei Azure Pipelines zum Herunterladen und Konfigurieren des Agents.
Weitere Informationen zu ARM-Vorlagen finden Sie unter Define resources with Bicep, ARM templates, and Terraform AzAPI provider (Definieren von Ressourcen mit Bicep, ARM-Vorlagen und dem Terraform AzAPI-Anbieter).
Verwenden der Vorlage in einer Releasepipeline
Erstellen einer Releasepipeline:
- Wählen Sie "Pipelines-Versionen>" im linken Menü und dann "Neue>Neue Releasepipeline" aus.
- Erstellen Sie auf der Registerkarte "Versionen" von Azure Pipelines eine Releasepipeline mit einer Phase, die die BEREITSTELLUNGsaufgabe der ARM-Vorlage enthält.
- Diese Vorlage verwendet Version 2 des Vorgangs, also ändern Sie auf dem Bildschirm mit den Azure-Ressourcengruppenbereitstellungseinstellungen die Vorgangsversion von 3.* in 2.*.
- Geben Sie die parameter an, die für den Vorgang erforderlich sind, z. B. das Azure-Abonnement, den Ressourcengruppennamen, den Standort, die Vorlageninformationen und die auszuführenden Aktionen.
- Speichern Sie die Releasepipeline, und erstellen Sie eine Version aus der Pipeline, um die Agents zu installieren.
Installieren von Agents mithilfe der erweiterten Bereitstellungsoptionen
Alternativ können Sie den Agent mithilfe erweiterter Bereitstellungsoptionen installieren. Führen Sie die vorstehenden Schritte aus, erweitern Sie jedoch auf dem Bildschirm "Bereitstellungseinstellungen für Azure-Ressourcengruppen" den Abschnitt "Erweiterte Bereitstellungsoptionen für virtuelle Computer ".
Wählen Sie unter "Voraussetzungen aktivieren" die Option "Mit Bereitstellungsgruppen-Agent konfigurieren" aus.
Geben Sie die folgenden erforderlichen Parameter und Einstellungen an:
Azure Pipelines-Dienstverbindung: Wählen Sie eine vorhandene Dienstverbindung aus, die auf Ihr Ziel verweist.
Wenn Sie nicht über eine vorhandene Dienstverbindung verfügen, wählen Sie "Neu" aus, und erstellen Sie eine. Weitere Informationen finden Sie unter Erstellen einer Dienstverbindung. Konfigurieren Sie die Dienstverbindung für die Verwendung eines PAT mit einem Bereich, der auf die Bereitstellungsgruppe beschränkt ist.
Teamprojekt: Wählen Sie das Projekt aus, das die Bereitstellungsgruppe enthält.
Bereitstellungsgruppe: Wählen Sie die Bereitstellungsgruppe aus, bei der die Agents registriert werden sollen.
Wählen Sie " Azure VM-Tags kopieren" in Agents aus, um alle Tags zu kopieren, die bereits auf dem virtuellen Azure-Computer auf den entsprechenden Bereitstellungsgruppen-Agent konfiguriert sind.
Standardmäßig werden alle Azure-Tags mit dem
Key: Value
Format kopiert, z. BRole: Web
. .
Speichern Sie die Pipeline, und erstellen Sie eine Version, um die Agents zu installieren.
Problembehandlung für die Erweiterung
Es gibt einige bekannte Probleme mit der Azure Pipelines Agent-Erweiterung.
Statusdatei ist zu groß
Dieses Problem kann auf Windows-VMs auftreten. Die Statusdatei enthält ein JSON-Objekt, das den aktuellen Status der Erweiterung beschreibt. Das Objekt ist ein Platzhalter zum Auflisten der bisher ausgeführten Vorgänge.
Azure liest diese Statusdatei und übergibt das Statusobjekt als Antwort auf API-Anforderungen. Die Datei hat eine maximal zulässige Größe. Wenn die Größe das Maximum überschreitet, kann Azure sie nicht vollständig lesen und gibt einen Fehler für den Status.
Obwohl die Erweiterung anfangs installiert werden kann, führt der Computer bei jedem Neustart der Erweiterung einige Vorgänge aus, die an die Statusdatei angefügt werden. Wenn der Computer mehrmals neu gestartet wird, kann die Statusdateigröße den Schwellenwert überschreiten, wodurch der Fehler verursacht Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes
wird. Obwohl die Erweiterungsinstallation erfolgreich ist, blendet dieser Fehler den tatsächlichen Zustand der Erweiterung aus.
Dieses Computerneustartproblem wurde behoben, beginnend mit der Version 1.27.0.2
für die Windows-Erweiterung und 1.21.0.1
für die Linux-Erweiterung. Ein Neustart fügt der Statusdatei jetzt nichts hinzu. Wenn Sie dieses Problem jedoch mit einer früheren Version der Erweiterung hatten und Ihre Erweiterung automatisch auf die feste Version aktualisiert wurde, kann das Problem weiterhin bestehen. Neuere Versionen der Erweiterung können weiterhin mit einer früheren Statusdatei verwendet werden.
Dieses Problem könnte auftreten, wenn Sie eine frühere Version der Erweiterung mit der Kennzeichnung verwenden, um AutoUpdates für Nebenversionen zu deaktivieren, oder wenn eine große Statusdatei von einer früheren Version in eine feste Version übertragen wurde. Wenn ja, können Sie das Problem beheben, indem Sie die Erweiterung deinstallieren und erneut installieren. Durch die Deinstallation der Erweiterung wird das gesamte Erweiterungsverzeichnis bereinigt und eine neue Statusdatei für eine neu installierte Version erstellt.
Problem mit benutzerdefinierten Daten
Python 2 ist veraltet, und die Azure Pipelines Agent-Erweiterung funktioniert mit Python 3. Wenn Sie weiterhin Betriebssystemversionen verwenden, die Python 3 nicht standardmäßig installiert haben, sollten Sie python 3 auf der VM installieren oder standardmäßig zu einer Betriebssystemversion wechseln, die Python 3 installiert hat. Andernfalls kann es Verwirrung hinsichtlich des benutzerdefinierten Datenspeicherorts auf dem virtuellen Computer geben, wenn Sie die Betriebssystemversionen wechseln.
Auf Linux-VMs werden benutzerdefinierte Datenkopien in /var/lib/waagent/ovf-env.xml für frühere Agentversionen sowie in /var/lib/waagent/CustomData für neuere Versionen kopiert. Wenn Sie nur einen dieser beiden Pfade hartcodieren, treten beim Wechseln von Betriebssystemversionen möglicherweise Probleme auf, da einer der Pfade in der neuen Betriebssystemversion nicht vorhanden ist, obwohl der andere Pfad vorhanden ist. Um zu vermeiden, dass die VM-Bereitstellung abgebrochen wird, sollten Sie beide Pfade in der Vorlage verwenden, damit bei einem Fehler die andere erfolgreich sein sollte.
Hilfe und Support
- Erkunden Sie Tipps zur Fehlerbehebung.
- Holen Sie sich Rat auf Stack Overflow.
- Stellen Sie Ihre Fragen, suchen Sie nach Antworten, oder schlagen Sie eine Funktion in der Azure DevOps Developer Community vor.
- Erhalten Sie Unterstützung für Azure DevOps.