Diese Woche wurde ich mit einem Szenario konfrontiert, in dem ein TFS Build/Release-Agent verwendet wurde, um Software aus dem TFS Release Management bereitzustellen. Dieser Agent lief in der gleichen Windows-Domäne wie die Server, auf denen die Software bereitgestellt werden musste. Der TFS-Server selbst wurde in einer
Wie also authentifiziert man den Build-Agent beim TFS-Server? In der Vergangenheit (TFS 2015 und früher) mussten Sie Schattenkonten konfigurieren, indem Sie Dienstkonten auf dem TFS-Server und jedem einzelnen Build-Agent mit identischen Benutzernamen und Kennwörtern einrichteten. Das funktioniert zwar, hat aber zwei große Probleme:
- Sie müssen diese Konten auf allen Servern separat verwalten, was die Durchsetzung von Kennwortrichtlinien usw. erschwert.
- Wenn Sie Ihren Build-Agenten benötigen, um Dinge (wie das Kopieren von Dateien, das Erstellen von Websites usw.) auf Servern in der Zieldomäne auszuführen, möchten Sie den Agenten wahrscheinlich als Domänenkonto ausführen, damit Sie sich problemlos auf Ihren Zielservern authentifizieren können.
Vor TFS 2017 war es leider nicht möglich, Ihren Build Agent unter einem Domänenkonto auszuführen und sich bei einem TFS-Server zu authentifizieren, der in einer anderen, nicht vertrauenswürdigen Domäne läuft. Dies ist ein ziemlich häufiges Szenario, und es gab keine wirklich gute Lösung. Bis jetzt! Mit TFS 2017 hat Microsoft die Möglichkeit geschaffen, Personal Access Tokens (PAT) für On-Premise-Bereitstellungen zu verwenden (VSTS verfügt bereits seit geraumer Zeit über dieses Konzept).
Verwendung eines PAT zur Authentifizierung eines Build-Agenten
Damit dies funktioniert, müssen Sie Ihren TFS-Server über HTTP laufen lassenS. Glücklicherweise können Sie dies mit dem TFS 2017 Konfigurationsassistenten leicht konfigurieren. Stellen Sie sicher, dass Sie ein SSL-Zertifikat verwenden, das sowohl auf den Build-Agenten als auch auf allen Clients als vertrauenswürdig eingestuft ist, sonst werden Sie mit unangenehmen Zertifikatsfehlern konfrontiert.
Versuchen Sie, die Anzahl der ausgewählten Bereiche für jedes PAT, das Sie erstellen, so gering wie möglich zu halten, um Sicherheitsrisiken zu minimieren. Für die Installation eines Build-Agenten ist der einzige erforderliche Bereich "Agent Pools (lesen, verwalten)":
Kopieren Sie das generierte PAT und bewahren Sie es an einem sicheren Ort auf (z.B. in einem Passwort-Safe). Wenn Sie es verlieren, gibt es keine Möglichkeit, es wiederzuerlangen. Sie müssen dann ein neues generieren. Übrigens: Dieses PAT wird nur benötigt, wenn Sie einen neuen Build-Agent bei TFS registrieren. Sobald der Build-Agent in Betrieb ist, benötigen Sie den PAT nicht mehr und können ihn sogar widerrufen. Laden Sie auf dem Build-Agent die Build-Agent-Bits herunter und extrahieren Sie sie. Starten Sie dann die Konfiguration, indem Sie ".config.cmd" ausführen. Geben Sie das Folgende ein:
- Server-URL: die URL zum Stammverzeichnis Ihres TFS-Servers, also ohne das "/DefaultCollection"-Bit. Denken Sie daran, dass dies eine HTTPS-URL sein muss.
- Authentifizierungstyp: PAT
- Benutzerkonto, das für den Dienst verwendet werden soll: Geben Sie ein Konto in der Domäne an, in der der Agent ausgeführt werden soll.
- Der Rest der Optionen sollte ziemlich selbsterklärend sein
Das Ergebnis ist ein laufender Build-Agent, der ein Domänenkonto als Dienstkonto verwendet. In meinem Fall läuft der Build-Agent in der Domäne TFS-LAB-BUILD und verbindet sich mit einem TFS-Server, der in der Domäne TFS-LAB läuft:
Der Agent wird auch im Abschnitt "Agentenpools" der TFS-Webverwaltung angezeigt:
Da haben Sie es! Ich hoffe, das hilft Ihnen! Viel Spaß beim Bauen!
Verfasst von

Kees Verhaar
Welcome to my blog! I am an ALM consultant for Xpirit Netherlands B.V. Sounds fancy, doesn’t it? Basically it means I help people to do their work as a software engineer better, faster and easier. In the past couple of years of working in the field, I have encountered many things of which I thought: “I should share this!â€. This blog is my way of doing that. You’ll find real life stories, tips & tricks, examples and probably even some code here. Hope you enjoy! If you have any suggestions, please feel free to drop me a line.
Unsere Ideen
Weitere Blogs
Contact



