Wer für große Umgebungen im Release Management bereits Variablen verwalten musste, weiß wie umfangreich diese werden können. Auch kann es vorkommen, dass Variablen über verschiedene Release Definitionen wiederverwendet werden. Dafür gibt es jetzt mit TFS 2018 Abhilfe in Form von Variable Groups. Eine Variable Group enthält dabei verschiedene Variablen. Diese können entweder im Klartext oder verschlüsselt abgelegt werden, wie man es aus einer Release Definition gewohnt ist. Somit erhält man eine Sammlung von Variablen, die später in einer Release Definition verwendet werden können.
Der Vorteil ist, dass man bei Änderung der Werte nur die Variable Group an einer zentralen Stellen anpassen muss (siehe Abbildung 1). Auch das Thema Sicherheit spielt hier eine wichtige Rolle. Denn wer eine Release Definition anlegt, hat noch lange nicht Zugriff auf die Passwörter und andere verschlüsselte Daten. In dem Fall können ausgewählte Personen mit Administrators-Berechtigung die Variable Group anpassen, Passwörter hinterlegen und Personen mit Users-Berechtigung können die Variable Group in ihren Release Definitionen verwenden. Somit kann ein neuer Releaseprozess einfach aufgesetzt werden, ohne dass der Ersteller direkt Zugriff auf alle Schlüssel und Passwörter haben muss.
Abbildung 1: Variable Group Web Dev
Verknüpfen einer Release Definition mit einer Variable Group
Um einer Release Definition eine oder mehrere Variable Groups hinzuzufügen, können ab TFS 2018 im Reiter Variables, zusätzlich zu den eigenen Variablen, jetzt auch Variable Groups verknüpft werden (siehe Abbildung 2). Durch die Verknüpfung werden automatisch alle Änderungen in der Variable Group auch mit in die Variablen der Release Definition übertragen und alle Variablen der Variable Group können innerhalb der Release Definition verwendet werden. Die Variablen sind dann für alle Environments in der Release Definition verfügbar.
Durch die Möglichkeit beliebig viele Variable Groups zu verknüpfen, kann man hier auch die Trennung der Variablen sehr feingranular definieren. Am Ende muss jedoch jeder für sich selbst entscheiden, welche Granularität für die Variable Groups angewendet wird, um möglichst eine große Wiederverwendbarkeit zu erreichen.
Wichtig ist, eine Konvention für die Namensgebung der Variablen festzulegen. Die Variablen gleich zu benennen in unterschiedlichen Variable Groups ergibt Sinn, wenn man sich für eine dieser Gruppen in der Release Definition entscheiden muss. Wenn Variable mit dem gleichen Namen in unterschiedlichen Variable Groups eingebunden werden, so entscheidet, die Reihenfolge, in welcher die Variable Groups verknüpft wurden.
Variable Groups mit einzelnen Environments zu verknüpfen, ist aktuell nicht möglich. Variable, die nur in einer bestimmten Umgebung Verwendung finden, können über ein Prefix oder Suffix erkenntlich gemacht werden. So kann man beispielsweise den Application Insights Key für alle Development-Umgebungen als AppInsightsKeyDev ablegen, um direkt zu erkennen, für welche Umgebung dieser gedacht ist.
Abbildung 2: Verknüpfen einer Variable Group mit einer Release Definition
Verknüpfen eines Azure Key Vault mit einer Variable Group
Ein kleiner Vorgeschmack was die Zukunft bringt, bietet das VSTS-Feature Link secrets from Azure key vault (siehe Abbildung 3). Mit dieser Option können in einer Variable Group Variable aus einem Azure Key Vault verknüpft werden. Dadurch liegen Passwörter nicht mehr im TFS oder in VSTS sondern werden in einem Azure Key Vault verwaltet. Die Vorteile hiervon sind die Sicherheit der abgelegten Passwörter und die Möglichkeit, die Verwendung der Passwörter zu überwachen.
Abbildung 3: Verknüpfen eines Azure Key Vault mit einer Variable Group