Wie man selbstgehostete Agenten mit Ihrer Azure DevOps Pipeline ausführt

Wie man selbstgehostete Agenten mit Ihrer Azure DevOps Pipeline ausführt

  • ITOps & DevOps
9 Minuten Lesezeit Aktualisiert Dec 10, 2024

Auf einen Blick: Selbstgehostete Agenten in Azure DevOps bieten erhebliche Vorteile, darunter Kosteneinsparungen und Flexibilität bei der Konfiguration von Build- und Release-Umgebungen. Dieser Leitfaden beschreibt die Schritte zur Einrichtung selbstgehosteter Agenten unter Windows und Linux, einschließlich Voraussetzungen, Installation und Konfiguration über Personal Access Tokens.

  • Selbstgehostete Agenten bieten unbegrenzte Minuten für Builds zu geringeren Kosten an.
  • Zu den Konfigurationsschritten gehören das Einrichten von Voraussetzungen, das Erstellen eines Personal Access Tokens und die Installation des Agenten auf den gewünschten Betriebssystemen.

Microsoft Azure Devops

Microsoft Azure – kurz Azure – ist die Microsoft-Cloud-Service-Plattform, die IaaS, PaaS und SaaS-Dienste von einfacher virtualisierter Infrastruktur bis hin zu Data Warehousing, ML und KI-Plattformen abdeckt. Der Azure DevOps Service ist ein solches SaaS-Angebot, das eine voll ausgestattete DevOps-Plattform bietet, bestehend aus:

  • Azure Boards (Planung und Management des Projekts)
  • Azure Pipelines (CI/CD Pipeline)
  • Azure Repos (Cloud-hosted private Git Repositories)
  • Azure Test Plans (Manuelle und explorative Testwerkzeuge)
  • Azure Artefakte (Artefaktspeicher)

Diese Plattformen werden durch eine umfangreiche Sammlung von Erweiterungen ergänzt, um Drittanbieter-Tools und -Plattformen zu integrieren und die Funktionalität zu erweitern. Die CI/CD-Pipeline ist eine der Kernkomponenten, die einen Softwareentwicklungsprozess antreibt, der vom Azure Pipelines-Service bereitgestellt wird. Azure Pipelines bietet die Möglichkeit, von Microsoft gehostete oder selbst gehostete Agenten zu verwenden, um CI/CD-Jobs auszuführen. In diesem Artikel schauen wir uns an, wie man selbstgehostete Azure-Agenten für die Verwendung in einer Pipeline konfiguriert. (Neu bei Azure DevOps? Beginnen Sie mit unserem Anfängerleitfaden.)

Vorteile der Verwendung selbstgehosteter Agenten mit Azure DevOps

Auch wenn es etwas seltsam erscheinen mag, einen selbstgehosteten Agenten mit Azure DevOps zu verwenden, da es sich um einen cloudbasierten Dienst handelt, gibt es einige erhebliche Vorteile, sich für einen selbstgehosteten Agenten zu entscheiden. Ein Grund sind die Kosten. Microsoft bietet Folgendes an:

  • Ein kostenloser, von Microsoft gehosteter Job mit 1.800 Minuten
  • Ein selbstgehosteter Job mit unbegrenzten Minuten

Obwohl es für kleine Entwicklung ausreichend ist, benötigen die meisten Nutzer zwangsläufig mehr Flexibilität, um mehrere parallele Builds und Releases auszuführen. Zum Zeitpunkt des Artikels kostete ein von Microsoft gehosteter Agent 40 US-Dollar pro Agent , während ein selbstgehosteter Agent 15 US-Dollar kostete, beide mit unbegrenzten Minuten. Die selbstgehostete Option bietet Kosteneinsparungen, wenn man skalieren muss, selbst wenn man Verwaltungskosten hinzufügt. Der zweite Grund für die Wahl des Self-Hosting ist die Anpassungsfähigkeit. Sie haben die Freiheit, den Agenten auf jedem unterstützten Betriebssystem auszuführen, einschließlich Windows, Linux und macOS. Microsoft-gehostete Azure-Agenten erlauben die Auswahl eines bestimmten Image-Typs, sind aber nur auf das von Microsoft verfügbare System beschränkt. Sie haben die Flexibilität, Agenten zu konfigurieren und mehrere Agenten auf einem einzigen Host laufen zu lassen, um den Ressourcenverbrauch zu maximieren.

Einrichtung eines selbstgehosteten Agenten für Azure DevOps

Das Einrichten und Ausführen eines selbstgehosteten Azure-Agenten ist ein relativ einfacher Prozess, wobei die Hauptanforderung darin besteht, den richtigen Agenten für das angegebene Betriebssystem und die zugrunde liegende Architektur zu verwenden. In diesem Abschnitt sehen wir, wie man Agenten auf einer Windows- und einer Linux-VM ausführen kann.

Schritte zur Einrichtung eines selbstgehosteten Agenten in Azure DevOps

Überprüfen Sie Voraussetzungen, Hardware- und Kontoberechtigungen

Bevor Sie mit dem Aufbau beginnen, stellen Sie sicher, dass Ihre Maschine bereit ist. Sie benötigen folgende Voraussetzungen:

  • Das richtige Betriebssystem und die richtige Version:
    • Client-Betriebssystem
      • Windows 7 SP1 ESU
      • Windows 8.1
      • Windows 10
      • Windows 11
    • Server-Betriebssystem
      • Windows Server 2012 oder höher
  • PowerShell 3.0 oder höher. Wenn du aus einem Subversion-Repository baust, musst du den Subversion-Client auf deinem Rechner installieren.
  • Wir empfehlen auch, Visual Studio Build-Tools (ab 2015) zu installieren.
  • Mach dir keine Sorgen um .NET, denn die Agentensoftware installiert im Rahmen des Einrichtungsprozesses ihre eigene Version.
  • Die verwendete Hardware hängt von der Größe und den Bedürfnissen deines Teams ab. Der meiste Azure DevOps-Code basiert auf 24-Kern-Server-Class-Rechnern, die jeweils vier selbstgehostete Agenten ausführen.

Erstellung eines Personal Access Token (PAT)

Der erste Schritt vor der Einrichtung eines Agenten besteht darin, ein persönliches Zugriffstoken zu erstellen, das verwendet wird, um den Agenten mit der Azure-Pipeline zu verbinden. Schritt 1. Melden Sie sich bei der Azure DevOps-Organisation an, öffnen Sie Benutzereinstellungen und wählen Sie "Persönliche Zugriffstoken" aus.

azure-devops-organisation

Öffnen Sie Ihr Terminalfenster und wechseln Sie das Verzeichnis in den Ordner mit der heruntergeladenen Datei. Füllen Sie die Datei auf, um den Inhalt anzuzeigen. Zuerst müssen Sie die Agentenkonfigurationsdatei mit dem interagierenden Konfigurationsgenerator-Skript generieren. Schritt 2. Klicken Sie im Bildschirm Personal Access Tokens auf "Neues Token", um ein Token zu erstellen.

personal-access-tokens-screen

Schritt 3. Gib einen Namen, ein Ablaufdatum und die erforderlichen Berechtigungen an und klicke auf Erstellen, um den PAT zu erstellen.

Neuer PAT für selbstgehosteten Agenten in Azure DevOps

Hinweis: Stellen Sie sicher, dass alle korrekten Berechtigungen gewährt werden. Andernfalls können Sie die Verbindung nicht starten. Falls erforderlich, können Sie den Agenten so konfigurieren, dass er vollen Zugriff auf Azure DevOps hat.

Full-access-to-Azure-DevOps

Schritt 4. Sobald das Token generiert ist, speichern Sie es sicher, da es später nicht mehr zugänglich ist.

Erfolgsbildschirm

Installation und Konfiguration der selbstgehosteten Agenten

Da wir das Token erstellt haben, können wir nun mit der Einrichtung des Agenten übergehen. Jede Agentenkonfiguration kann über den Abschnitt Pipelines Agent Pools in den Organisationseinstellungen im Azure DevOps Dashboard abgerufen werden.

Erhalt von Agentenkonfigurationsanweisungen

Schritt 1. Navigieren Sie zu den Organisationseinstellungen und wählen Sie Agentenpools im Abschnitt Pipeline aus.

Pipelines

Schritt 2. Wählen Sie den Default Agent Pool aus. (Falls nötig, wählen Sie den Agenten zu anderen verfügbaren Pools oder erstellen Sie einen neuen Pool und fügen Sie den Agenten hinzu.)

Agentenpools

Schritt 3. Klicken Sie auf die Option Neuer Agent, um die Anweisungen zur Agenteninstallation zu erhalten.

New-Agent-Option

Schritt 4. Wählen Sie das gewünschte Betriebssystem und die Systemarchitektur aus und folgen Sie den bereitgestellten Anweisungen.

Systemvoraussetzungen

Windows-Installation des selbstgehosteten Agenten für Azure

Schauen wir uns an, wie man den Azure-Agenten in Windows 10 auf der X64-Architektur installiert. Bitte siehe Microsofts offiziellen Windows-Agenten-Leitfaden für eine vollständige Liste der Voraussetzungen und Spezifikationen. Schritt 1. Laden Sie den Agenten herunter. (Er wird als Zip-Datei heruntergeladen.)

    Invoke-WebRequest -Uri https://vstsagentpackage.azureedge.net/agent/2.195.1/vsts-agent-win-x64-2.195.1.zip -OutFile vsts-agent-win-x64-2.195.1.zip
Laden Sie den selbstgehosteten Agenten für Azure Pipeline herunter

Schritt 2. Entpacken Sie den heruntergeladenen Agenten zum gewünschten Ziel. Es wird empfohlen, den Agent in einen Ordner namens agents im Wurzelbereich des C-Laufwerks zu extrahieren (C:agents).

    # Create directory and navigate to the directory
New-Item -Path "C:" -Name "agents" -ItemType "directory"
Set-Location -Path "C:agents"

# Extract the downloaded zip file
Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("C:vsts-agent-win-x64-2.195.1.zip", "$PWD")

# Verify the extraction
Get-ChildItem
Verzeichnis

Schritt 3. Starten Sie die Agentenkonfiguration, indem Sie folgenden Befehl ausführen. (Es wird empfohlen, die Elevated Powershell-Eingabeaufforderung zu verwenden.)

    .config.cmd
Befehl zur Konfiguration selbstgehosteter Agenten für Azure

Sie müssen Konfigurationsdetails eingeben, wie zum Beispiel:

  • Server URL (Azure organizational URL)
  • Authentifizierungstyp (Hier haben wir das zuvor erstellte Authentifizierungstoken verwendet)
  • Agentendetails, einschließlich Agenten-Pool und Agentenname

Gib schließlich an, ob der Agent als Windows-Dienst konfiguriert werden soll. Du wirst den konfigurierten Azure Pipelines Agent sehen können, wenn du zum Services-Abschnitt unter Windows (services.msc) gehst.

Dienstabschnitt

Schritt 4. Navigiere zurück zu den Agentenpools in den Organisationseinstellungen, und du kannst den neu konfigurierten Agenten als Standardpool im Agenten-Tab sehen.

Standardpool

Linux-Installation des selbstgehosteten Agenten für Azure

Die Installation und Konfiguration des Pipeline-Agenten unter Linux ist ähnlich wie unter Windows. In diesem Abschnitt sehen wir also, wie man den Agenten in einer Ubuntu-Umgebung installiert. Vollständige Konfigurationsdetails finden Sie in der Microsoft-Dokumentation. Schritt 1. Laden Sie den Agenten herunter

    wget https://vstsagentpackage.azureedge.net/agent/2.195.1/vsts-agent-linux-x64-2.195.1.tar.gz
download-in-ubuntu-environment

Schritt 2. Erstelle einen Ordner und entspanne die heruntergeladene tar.gz-Datei.

    # Create directory and navigate to the directory
mkdir agent
cd agent

# Extract the downloaded zip file
tar zxf ~/Downloads/vsts-agent-linux-x64-2.195.1.tar.gz

# Verify the extraction
ls
Erstellung eines Verzeichnisses

Schritt 3. Starte die Agentenkonfiguration, indem du folgenden Befehl ausführst.

    ./config.sh
Linux-Konfiguration für selbstgehosteten Agenten in Azure

Ähnlich wie bei der Windows-Konfiguration werden die Benutzer gebeten, die Serverdetails, den Authentifizierungstyp und das zuvor erstellte Authentifizierungstoken einzugeben. Dann werden die Agentendetails konfiguriert, und schließlich kann der Benutzer den Agenten starten, indem er das run.sh-Skript ausführt. Schritt 4 (Optional). Sie können den Agenten so konfigurieren, dass er als Systemdienst mit dem svc.sh-Skript im Agentenverzeichnis läuft. Geben Sie den Benutzer an und verwenden Sie den Installationsbefehl, um den Service zu konfigurieren.

    sudo ./svc.sh install ubuntu
sudo ./svc.sh start
SVC

Schritt 5. Gehen Sie zurück zu den Agent-Pools in den Organisationseinstellungen und dann zum Standard-Pool im Agenten-Tab, um zu überprüfen, ob der neue Ubuntu-Agent als selbstgehosteter Agent hinzugefügt wurde.

default-pool-of-the-agents

Betreiben deines selbstgehosteten Agenten in Docker

Das Ausführen des Agenten als Container ist eine weitere Möglichkeit, die wir nutzen können, um den Agenten auszuführen. Sowohl Windows als auch Linux werden als Container-Hosts unterstützt. Im folgenden Abschnitt schauen wir uns an, wie man ein Container-Image mit dem Azure-Pipeline-Agenten erstellt und das Image als Container startet. Wir werden den Docker-Desktop in einer Windows-Umgebung nutzen, um einen auf Linux (Ubuntu) basierenden Agent-Container zu erstellen. Schritt 1. Erstellen Sie einen Ordner namens dockeragent und erstellen Sie dann innerhalb des Ordners eine Dockerfile mit ubuntu:18.04 als Basisimage und den erforderlichen Konfigurationen. (Die Konfiguration ist über die Microsoft-Dokumentation verfügbar.)

    FROM ubuntu:18.04
 
# To make it easier for build and release pipelines to run apt-get,
# configure apt to not require confirmation (assume the -y argument by default)
ENV DEBIAN_FRONTEND=noninteractive
    RUN echo "APT::Get::Assume-Yes "true";" > /etc/apt/apt.conf.d/90assumeyes
 
RUN apt-get update && apt-get install -y --no-install-recommends 
ca-certificates 
curl 
jq 
git 
iputils-ping 
libcurl4 
libicu60 
libunwind8 
netcat 
libssl1.0 
&& rm -rf /var/lib/apt/lists/*
 
RUN curl -LsS https://aka.ms/InstallAzureCLIDeb | bash 
&& rm -rf /var/lib/apt/lists/*
 
ARG TARGETARCH=amd64¬¬
ARG AGENT_VERSION=2.194.0
 
WORKDIR /azp
RUN if [ "$TARGETARCH" = "amd64" ]; then 
AZP_AGENTPACKAGE_URL=https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz; 
else 
AZP_AGENTPACKAGE_URL=https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-${TARGETARCH}-${AGENT_VERSION}.tar.gz; 
fi; 
curl -Ls¬S "$AZP_AGENTPACKAGE_URL" | tar -xz
 
COPY ./start.sh .
RUN chmod +x start.sh
 
ENTRYPOINT [ "./start.sh" ]

Schritt 2. Erstellen Sie das Startskript (start.sh) und legen Sie es in denselben Ordner. Stellen Sie sicher, dass die Zeilenenden als Unix-ähnliche (LF) Zeilenenden konfiguriert sind.

    fi
 
AZP_TOKEN_FILE=/azp/.token
echo -n $AZP_TOKEN > "$AZP_TOKEN_FILE"
fi

unset AZP_TOKEN
 
if [ -n "$AZP_WORK" ]; then
mkdir -p "$AZP_WORK"
    fi
 
export AGENT_ALLOW_RUNASROOT="1"
 
cleanup() {
if [ -e config.sh ]; then
print_header "Cleanup. Removing Azure Pipelines agent..."
 
# If the agent has some running jobs, the configuration removal process will fail.
# So, give it some time to finish the job.
while true; do
./config.sh remove --unattended --auth PAT --token $(cat "$AZP_TOKEN_FILE") && break
 
echo "Retrying in 30 seconds..."
sleep 30
done
fi
}
 
print_header() {¬
lightcyan='�33[1;36m'
nocolor='�33[0m'
echo -e "${lightcyan}$1${nocolor}"
}
 
# Let the agent ignore the token env variables
export VSO_AGENT_IGNORE=AZP_TOKEN,AZP_TOKEN_FILE
 
source ./env.sh
 
print_header "1. Configuring Azure Pipelines agent..."
 
./config.sh --unattended 
--agent "${AZP_AGENT_NAME:-$(hostname)}" 
--url "$AZP_URL" 
--auth PAT 
--token $(cat "$AZP_TOKEN_FILE") 
--pool "${AZP_POOL:-Default}" 
--work "${AZP_WORK:-_work}" 
--replace 
--acceptTeeEula & wait $!
 
print_header "2. Running Azure Pipelines agent..."
 
trap 'cleanup; exit 0' EXIT
trap 'cleanup; exit 130' INT
trap 'cleanup; exit 143' TERM
 
# To be aware of TERM and INT signals call run.sh
    # Running it with the --once flag at the end will shut down the agent after the build is executed
./run.sh "$@" & wait $!

Schritt 3. Erstellen Sie das Image, indem Sie den folgenden Befehl im dockeragent-Ordner ausführen.

    docker build -t dockeragent:latest .
docker-agent-latest

Schritt 4. Erstellen Sie einen Container mit dem docker run-Befehl und dem neu erstellten docker-Image. Wir können beim Erstellen des Containers Umweltvariablen weitergeben. In diesem Fall geben wir die Server-URL (AZP_URL), das PAT-Token (AZP_TOKEN) und den Agentennamen (AZP_AGENT_NAME) als Variablen weiter.

    docker run -e AZP_URL=https://dev.azure.com/ -e AZP_TOKEN= -e AZP_AGENT_NAME=docker-agent-01 dockeragent:latest
azure-pipelines-docker

Schritt 5. Wir können überprüfen, ob der Container als Agent hinzugefügt wurde, indem wir uns den Default Agent Pool im Azure DevOps Dashboard ansehen.

default-pool-agent

Selbstgehostete Agenten für Azure DevOps

Selbstgehostete Agenten in Azure DevOps Pipelines bieten Kosteneinsparungen und mehr Flexibilität, um Build- und Release-Agenten in jeder unterstützten Umgebung zu konfigurieren und auszuführen. Diese Pipeline-Agenten können verwendet werden, um die Funktionalität der CI/CD-Pipeline von Bare-Metal-Servern auf VMs und sogar als Container zu erweitern.

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.