Stefan Zawacki

Die Microsoft Azure DevTest Labs ermöglichen die gleichzeitige Installation von Softwarepaketen beim Erzeugen einer virtuellen Maschine. Im vierten und letzten Teil dieser Tutorial-Reihe zeige ich Ihnen, wie Sie ein eigenes Artifact Repository anlegen, um eigene Softwarepakete zur Installation bereitzustellen.

Azure DevTest Labs ist ein neuer Resourcen-Type in Microsoft Azure, der sich seit kurzem in der Preview-Phase befindet. Daher stellen alle in dieser Tutorial-Reihe zusammengetragenen Informationen den aktuellen Ist-Zusand dar. Bis zum endgültigen Release können noch Änderungen von seiten Microsofts einfließen.

 

In dieser vierteiligen Reihe werden die folgenden Themen behandelt:

 

Um die einzelnen Schritte der Tutorials mitmachen zu können genügt ein kostenloser Azure Account, den Sie sich unter: https://portal.azure.com anlegen können.

 

Die DevTest Labs bieten bereits eine kleine Auswahl an Softwarepaketen, die beim Erzeugen neuer virtueller Computer installiert werden können. Diese Auswahl kann durch das Einbinden eines eigenen Artifact Repositories noch erweitert werden, in dem Sie eigene Softwarepakete zur Installation bereitstellen können. Dieses Tutorial baut auf den drei zuvor veröffentlichten Teilen auf. Sollten Sie diese noch nicht gelesen haben, so empfehle ich Ihnen dies vorher zu tun.

Ein Artifact Repository kann entweder auf GitHub, oder in Visual Studio Team Services (VSTS) gehostet werden. Beachten Sie hierbei, dass ein kostenloses Repository in GitHub öffentlich ist. Alle dort zur Verfügung gestellten Resourcen sind für jedermann zugänglich. Wollen Sie selbstentwickelte, oder lizenzpflichtige Software in einem Artifact Repository bereitstellen, so sollten Sie Visual Studio Team Services als Plattform wählen, da Sie hier die Möglichkeit haben private Repositories anzulegen. Für Einzelpersonen, oder kleine Teams kann ein kostenloser Account unter dem obigen Link erstellt werden.

In diesem Tutorial werde ich das Anlegen und Einbinden eines Artifact Repositories am Beispiel des ORAYLIS BI.Designers, unserem selbstentwickelten Excel-Plugin zum modellieren von Datenbanken, erklären. Da der BI.Designer keine Open Source Software ist, verwende ich Visual Studio Team Services zum hosten des Repositories.

GitHub Repositories werden auf die gleiche Weise eingebunden. Ebenso ist das Anlegen eines neuen Pakets auf beiden Plattformen identisch. Beispiele für installierbare Pakete können Sie in dem von Microsoft zur Verfügung gesellten Azure Repository auf GitHub einsehen.

 

Ein neues Repository in VSTS erstellen

Im ersten Schritt legen wir das Repository im VSTS an, in dem wir später unsere Pakete anlegen werden. Dazu wählen wir die „Code“-Ansicht in unserem Projekt und öffnen das Menü für die Repositories.

 

DevTest Labs new repository

 

In meinem Projekt sind schon diverser Git-Repositories enthalten. Klicken Sie auf „New repository…“, um ein neues Repository anzulegen.

 

DevTest Labs name repository

 

Wählen Sie Git als Repository-Typ aus und geben Sie ihrem neuen Repository einen Namen. Ich verwende hier den Namen „ArtifactsRepository“. Anschließend klicken Sie auf „Create“, um ihr neues Repository anzulegen. Im Anschluss erstellen Sie die Verzeichnisstruktur Ihres Repositories. Um ein neues Verzeichnis anzulegen, klicken Sie auf den Namen Ihres Artifact Repositories, um das Kontextmenü zu öffnen. Über dieses Menü können Sie neue Dateien anlegen, oder hochladen, umbenennen und löschen. Ebenso können Sie ein neues Verzeichnis anlegen.

 

DevTest Labs repository context menu

 

Ich legen zunächst einen Unterordner mit dem Namen „Artifacts“ an und darunter erzeuge ich den Ordner für mein erstes Paket und nenne es BI.Designer. Die Verzeichnisstruktur sieht nun wie folgt aus:

 

DevTest Labs repository structure

Bei der Namensvergabe dürfen keine Leerzeichen verwendet werden. Der Paketmanager der DevTest Labs kann Pfadangaben mit Leerzeichen nicht verarbeiten.

Nachdem Sie das Repository angelegt haben kopieren Sie direkt den Link, diesen benötigen wir später, beim Einrichten des Repositories im DevTest Lab.

 

DevTest Labs artifact repository link

 

 

In der „Explorer“-Ansicht klicken Sie im rechten Bereich auf „Clone“ und benutzen die „Copy to Clipboard“-Schaltfläche um den Link in die Zwischenablage zu kopieren. Speichern Sie den Link für die spätere Verwendung.

Bevor wir nun das erstellte Repository in den DevTest Labs einrichten können, benötigen wir noch eine Zugriffsberechtigung, da unser Respository ja nicht öffentlich zugänglich seien soll.

 

Ein Personal Access Token erzeugen

Zur Authentifizierung wir bei den Visual Studio Team Services kein Benutzername und Passwort verwendet, sondern man setzt ein Personal Access Toekn (PAT) ein. Es ist durchaus möglich auch für externe Anwednungen ein Benutzernamen und ein Passwort einzurichten, aber Microsoft empfiehlt die Nutzung des PAT. Diesen Schüssel kann man in den Benutzer Einstellungen des VSTS erzeugen.

Dazu auf den eigenen Namen am oberen rechten Rand klicken und den Menüpunkt „My security“ auswählen.

 

DevTest Labs open security settings

 

Unter dem „Security“-Tab wählen Sie den Punkt „Personal Access Token“. Sollten Sie bereits ein PAT erzeugt haben so taucht es hier in der Auflistung auf. Klicken Sie auf „Add“ um ein neues Token für das Artifact Repository zu erzeugen.

 

DevTest Labs Personal access tokens

 

 

Es erscheint das Konfigurationsfenster für das Personal Access Token. Unter dem Punkt „Expires In“ könne Sie die Gültigkeitsdauer ihres Tokens festlegen. Maximal kann hier 1 Jahr ausgewählt werden. Zusätzlich können Sie einen Namen vergeben und den Account auswählen, für den das Token gelten Soll, falls Sie mehrere Accounts haben.

 

DevTest Lab create PAT

Zuletzt legen wir die Zugriffsrechte fest, die das Token gewährt. Für unser Repository reichen uns Lese-Rechte, daher wählen wir hier zunächst „Selected scopes“ und anschließend „Code (read)“. Durch einen Klick auf „Create Token“, wird unser neues PAT erzeugt und in einem Dialogfenster angezeigt.

Beachten Sie hier den Warnhinweis und kopieren Sie das PAT aus der Anzeige heraus, bevor Sie die Ansicht verlassen. Nachdem Sie diese Seite verlassen haben, wird Ihnen das PAT nicht noch einmal angezeigt und Sie haben auch keine Möglichkeit mehr es irgendwo einzusehen. Sie bekommen den Schüssel nur dieses eine Mal angezeigt.

 

DevTest Labs PAT

 

Verwahren Sie den Schlüssel sicher auf und überlegen Sie sich genau, wem Sie den Schlüssel zugänglich machen, er gewährt Zugriff auf alle Repositories ihres Accounts. Sollten Sie irgendwann einmal einen Schüssel deaktivieren wollen, so können Sie dies in der Übersicht über die Schaltfläche „Revoke“ tun.

 

Das Artifact Repository in den DevTest Labs einrichten

Nachdem nun alle nötigen Resourcen erstellt wurden, kann das Artifact Repository in den Azure DevTest Labs angelegt werden. Klicken Sie in Ihrem DevTest Lab auf den Punkt „Artifact repositories“.

 

DevTest Labs create repo

 

Klicken Sie auf „Add“, um ein neues Artifact Repository anzulegen.

 

DevTest Lab add repsoitory

 

Vergeben Sie einen Namen und fügen Sie den kopierten Link unter „Git clone URI“ ein. Als „Folder Path“ geben Sie den Namen des Unterordners an, indem ihre Pakete liegen. In meinem Beispiel ist dies der „Artifacts“-Ordner. Als „Branch“ tragen Sie „master“ ein, da wir keinen zusätzlichen Branch erzeugt haben, ist dies der Standard-Branch. Zuletzt kopieren Sie ihr erstelltes PAT in das Eingabefeld „Personal Access Token“. Das Token wird maskiert dargestellt, sodass es auch an dieser Stelle nicht ausgelesen werden kann.

Zum Abschluss klicken Sie auf „Save“ und das neue Artifact Repository ist fertig konfiguriert.

 

Ein neues Paket anlegen

Nachdem nun unser Repository erstellt und eingerichtet ist, können wir nun ein Paket anlegen um dieses für die Installation bereitzustellen.

Jedes Artefakt das zur Verfügung gestellt werden soll, muss mindestens aus zwei Komponenten bestehen.

Einer Artifaktdefinitionsdatei im JSON-Format und einem Skript, das ausgeführt werden soll. Vorzugsweise werden hier PowerShell-Skripte eingesetzt, es ist aber auch möglich andere Skripte zu verwenden.

Die Artifaktdefinitionsdatei enthält alle Informationen zur späteren Darstellung des Pakets in Azure, ebenso wie den Aufruf der Skriptdatei, die die Installation ausführt. Der Definitionsdatei gebe ich den Namen „Artifactfile.json“. In meinem Beispiel sieht die Artifaktdefinitionsdatei wie folgt aus:

 

 

Der Titel und die Description werden später im DevTest Lab sichtbar sein, die Tags sind nicht zwingend erforderlich, ebenso muss man nicht zwingend ein „iconUri“ angeben. Diese Angaben dienen nur der besseren Auffindbarkeit. Der Parameter „targetOsType“ muss der Zielplattform der virtuellen Maschine entsprechen. Der Parameter „runCommand“ enthält den Aufruf des PowerShell-Skripts. Das Skript „InstallBiDesigner.ps1“ wird später noch im Repository angelegt.

In der Artifaktdefinitionsdatei können weitaus mehr Einstellungen vorgenommen werden, beispielsweise können Parameter angelegt werden, die vom Benutzer in der Auswahlmaske in Azure befüllt werden müssen. Diese Parameter können dann als Argumente an das PowerShell-Skript durchgereicht werden.
Eine ausführliche Einführung in die Artifaktdefinitionsdatei finden Sie unter diesem Link.

Das Installationsskript muss nicht rein auf die Installation einer Software beschränkt sein, es können auch Systemkonfigurationen überprüft und vorgenommen werden.
Mein Installationsskript führt neben der reinen Installation noch die Überprüfung und Installation einer Abhängigkeit aus und sieht wie folgt aus:

 

 

Das Skript startet die Installation des BI.Designers, sobald das Paket „Microsoft Visual Studio 2010 Tools for Office Runtime (x64)“ entweder auf dem Zielrechner gefunden wurde, oder heruntergeladen und nachinstalliert wurde. Dieses Skript und die Artifaktdefinitionsdatei müssen Sie in ihre Repository hochladen, oder direkt anlegen. Dazu verwenden Sie das bereits zuvor vorgestellte Kontextmenü in der Explorer-Ansicht im VSTS.

 

DevTest Labs repository context menu

 

Wählen Sie „Add file(s)…“. In dem erscheinenden Dialogfenster haben Sie die Auswahl, ob sie die Dateien leer anlegen wollen um anschließend den Quelltext einzufügen, oder ob Sie die fertigen Dateien direkt hochladen möchten. Keine der beiden Methoden hat Vor- oder Nachteile.

 

DevTest lab VSTS upload

 

Zuletzt muss noch die Installationsdatei selbst, über die Upload-Funktion, im Repository abgelegt werden. Das fertige Repository sieht dann wie in der folgenden Abbildung aus.

 

DevTest Labs Repository

 

Damit ist das Paket angelegt und kann verwendet werden. Wenn Sie nun eine neue virtuelle Maschine erzeugen, öffnen sie die Auswahl der „Artifacts“ und Sie sehen direkt das zuvor angelegt Paket und Sie können es ihrer Installation hinzufügen.

 

DevTest Labs select pakage

 

Sie haben in diesem Tutorial gesehen, wie man ein eigenes Artifact Repository anlegt und dieses in den Azure DevTest Labs einbindet. Des Weiteren haben Sie gelernt, wie man Pakete in dem eignen Artifact Repository bereitstellt. Damit endet diese Tutorial-Reihe, in der ich Ihnen einen ersten Überblick über die Azure DevTest Labs gegeben habe. Über Änderungen und Neuerungen, die in den kommenden Wochen und Monaten der Preview-Phase noch in die DevTst Labs einfließen werden, informiere ich Sie weiterhin hier auf unserem Blog.