Erstellen benutzerdefinierter Artefakte für DevTest Labs
In diesem Artikel wird beschrieben, wie Sie benutzerdefinierte Artefaktdateien für Azure DevTest Labs-VMs erstellen. DevTest Labs-Artefakte geben Aktionen an, die zum Bereitstellen einer VM ausgeführt werden müssen. Ein Artefakt besteht aus einer Artefaktdefinitionsdatei und weiteren Skriptdateien, die in einem Ordner in einem Git-Repository gespeichert sind.
- Informationen zum Hinzufügen Ihrer Artefaktrepositorys zu Labs finden Sie unter Hinzufügen eines Artefaktrepositorys zu Ihrem Lab.
- Informationen zum Hinzufügen der erstellten Artefakte zu VMs finden Sie unter Hinzufügen von Artefakten zu DevTest Labs-VMs.
- Informationen zum Angeben von obligatorischen Artefakten, die allen Lab-VMs hinzugefügt werden sollen, finden Sie unter Festlegen verbindlicher Artefakte für Ihr Lab in Azure DevTest Labs.
Artefaktdefinitionsdateien
Artefaktdefinitionsdateien bestehen aus JSON-Ausdrücken, die angeben, was Sie auf einer VM installieren möchten. Die Dateien definieren den Namen eines Artefakts, einen auszuführenden Befehl sowie verfügbare Parameter für den Befehl. Sie können auf andere Skriptdateien innerhalb der Artefaktdefinitionsdatei anhand ihres Namens verweisen.
Das folgende Beispiel zeigt die Abschnitte, die die grundlegende Struktur einer Definitionsdatei artifactfile.json bilden:
{
"$schema": "https://raw.githubusercontent.com/Azure/azure-devtestlab/master/schemas/2016-11-28/dtlArtifacts.json",
"title": "",
"description": "",
"iconUri": "",
"targetOsType": "",
"parameters": {
"<parameterName>": {
"type": "",
"displayName": "",
"description": ""
}
},
"runCommand": {
"commandToExecute": ""
}
}
Elementname | Beschreibung |
---|---|
$schema |
Speicherort der JSON-Schemadatei Mithilfe der JSON-Schemadatei können Sie die Gültigkeit der Definitionsdatei testen. |
title |
Der Name des Artefakts, der im Lab angezeigt werden soll. Erforderlich. |
description |
Eine Beschreibung des Artefakts, die im Lab angezeigt werden soll. Erforderlich. |
iconUri |
Der URI des Artefaktsymbols, das im Lab angezeigt werden soll. |
targetOsType |
Das Betriebssystem der VM, auf der das Artefakt installiert werden soll. Unterstützte Werte: Windows , Linux .
Erforderlich. |
parameters |
Werte zum Anpassen des Artefakts bei der Installation auf der VM. |
runCommand |
Der auf der VM auszuführende Befehl zur Installation des Artefakts. Erforderlich. |
Artefaktparameter
Im Parameterabschnitt der Definitionsdatei geben Sie an, welche Werte ein Benutzer beim Installieren eines Artefakts eingeben kann. Auf diese Werte können Sie im Artefaktinstallationsbefehl verweisen.
Sie definieren Parameter mit der folgenden Struktur:
"parameters": {
"<parameterName>": {
"type": "<type-of-parameter-value>",
"displayName": "<display-name-of-parameter>",
"description": "<description-of-parameter>"
}
}
Elementname | Beschreibung |
---|---|
type |
Der Typ des Parameterwerts. Erforderlich. |
displayName |
Name des Parameters, der dem Lab-Benutzer angezeigt werden soll. Erforderlich. |
description |
Beschreibung des Parameters, die dem Lab-Benutzer angezeigt werden soll. Erforderlich. |
Die zulässigen Parameterwerttypen sind:
Typ | Beschreibung |
---|---|
string |
Eine beliebige gültige JSON-Zeichenfolge |
int |
Eine beliebige gültige JSON-Ganzzahl |
bool |
Eine beliebiger gültiger boolescher JSON-Wert |
array |
Ein beliebiges gültiges JSON-Array |
Geheimnisse als sichere Zeichenfolgen
Um Geheimnisse als sichere Zeichenfolgenparameter mit maskierten Zeichen in der Benutzeroberfläche zu deklarieren, verwenden Sie die folgende Syntax im Abschnitt parameters
der Datei artifactfile.json:
"securestringParam": {
"type": "securestring",
"displayName": "Secure String Parameter",
"description": "Any text string is allowed, including spaces, and will be presented in UI as masked characters.",
"allowEmpty": false
},
Der Artefakt-Installationsbefehl zur Ausführung des PowerShell-Skripts verwendet die sichere Zeichenfolge, die mit dem Befehl ConvertTo-SecureString
erstellt wurde.
"runCommand": {
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy bypass \"& ./artifact.ps1 -StringParam ''', parameters('stringParam'), ''' -SecureStringParam (ConvertTo-SecureString ''', parameters('securestringParam'), ''' -AsPlainText -Force) -IntParam ', parameters('intParam'), ' -BoolParam:$', parameters('boolParam'), ' -FileContentsParam ''', parameters('fileContentsParam'), ''' -ExtraLogLines ', parameters('extraLogLines'), ' -ForceFail:$', parameters('forceFail'), '\"')]"
}
Protokollieren Sie keine Geheimnisse in der Konsole, da das Skript die Ausgabe für das Benutzerdebuggen erfasst.
Ausdrücke und Funktionen für Artefakte
Sie können zum Erstellen des Artefaktinstallationsbefehls Ausdrücke und Funktionen verwenden. Ausdrücke werten aus, wenn das Artefakt installiert wird. Ausdrücke können überall in einem JSON-Zeichenfolgenwert erscheinen und führen immer zu einem anderen JSON-Wert. Schließen Sie Ausdrücke in eckige Klammern ein: [ ]. Wenn Sie eine Literalzeichenfolge verwenden müssen, die mit einer Klammer beginnt, verwenden Sie zwei Klammern: [[.
In der Regel verwenden Sie Ausdrücke mit Funktionen, um einen Wert zu erstellen. Funktionsaufrufe werden als functionName(arg1, arg2, arg3)
formatiert.
Zu den gängigen Funktionen gehören:
Funktion | Beschreibung |
---|---|
parameters(parameterName) |
Gibt einen Parameterwert zurück, der beim Ausführen des Artefaktbefehls angegeben werden soll. |
concat(arg1, arg2, arg3, ...) |
Kombiniert mehrere Zeichenfolgenwerte. Diese Funktion kann verschiedene Argumente verwenden. |
Das folgende Beispiel verwendet Ausdrücke und Funktionen, um einen Wert zu erstellen:
runCommand": {
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy bypass \"& ./startChocolatey.ps1'
, ' -RawPackagesList ', parameters('packages')
, ' -Username ', parameters('installUsername')
, ' -Password ', parameters('installPassword'))]"
}
Erstellen eines benutzerdefinierten Artefakts
So erstellen Sie ein benutzerdefiniertes Artefakt
Installieren Sie zum Arbeiten mit Artefaktdefinitionsdateien einen JSON-Editor. Visual Studio Code ist für Windows, macOS und Linux verfügbar.
Starten Sie mit der Beispieldefinitionsdatei artifactfile.json.
Das öffentliche DevTest Labs-Artefaktrepository enthält eine umfangreiche Bibliothek mit Artefakten, die Sie verwenden können. Laden Sie eine Artefaktdefinitionsdatei herunter, und passen Sie sie an, um eigene Artefakte zu erstellen.
Dieser Artikel verwendet die Definitionsdatei artifactfile.json und das PowerShell-Skript artifact.ps1 unter https://github.com/Azure/azure-devtestlab/tree/master/Artifacts/windows-test-paramtypes.
Zeigen Sie mithilfe von IntelliSense gültige Elemente und Wertoptionen an, die zum Erstellen einer Artefaktdefinitionsdatei verwendet werden können. Beispielsweise zeigt IntelliSense beim Bearbeiten des
targetOsType
-ElementsWindows
- undLinux
-Optionen an.Speichern Sie Ihre Artefakte in öffentlichen oder privaten Git-Artefaktrepositorys.
- Speichern Sie jede artifactfile.json-Artefaktdefinitionsdatei in einem separaten Verzeichnis, dessen Name mit dem Artefaktnamen identisch ist.
- Speichern Sie die Skripts, auf die der Installationsbefehl verweist, im selben Verzeichnis wie die Artefaktdefinitionsdatei.
Der folgende Screenshot zeigt ein Beispiel für einen Artefaktordner:
Um Ihre benutzerdefinierten Artefakte im öffentlichen DevTest Labs-Artefaktrepository zu speichern, öffnen Sie einen Pull Request für das Repository.
Informationen zum Hinzufügen Ihres privaten Artefaktrepositorys zu einem Lab finden Sie unter Hinzufügen eines Artefaktrepositorys zu Ihrem Lab in DevTest Labs.