Aangepaste artefacten maken voor DevTest Labs
In dit artikel wordt beschreven hoe u aangepaste artefactbestanden maakt voor Azure DevTest Labs virtuele machines (VM's). DevTest Labs-artefacten geven acties op die moeten worden uitgevoerd om een VM in te richten. Een artefact bestaat uit een artefactdefinitiebestand en andere scriptbestanden die u opslaat in een map in een Git-opslagplaats.
- Zie Een opslagplaats voor artefacten toevoegen aan uw lab voor meer informatie over het toevoegen van artefactopslagplaatsen aan labs.
- Zie Artefacten toevoegen aan DevTest Labs-VM's voor meer informatie over het toevoegen van de artefacten die u maakt aan VM's.
- Zie Verplichte artefacten opgeven voor DevTest Labs-VM's voor informatie over het opgeven van verplichte artefacten die moeten worden toegevoegd aan alle lab-VM's.
Artefactdefinitiebestanden
Artefactdefinitiebestanden zijn JSON-expressies die aangeven wat u op een virtuele machine wilt installeren. De bestanden definiëren de naam van een artefact, een uit te voeren opdracht en beschikbare parameters voor de opdracht. U kunt verwijzen naar andere scriptbestanden op naam in het artefactdefinitiebestand.
In het volgende voorbeeld ziet u de secties waaruit de basisstructuur van een artifactfile.json-artefactdefinitiebestand bestaat:
{
"$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": ""
}
}
Elementnaam | Beschrijving |
---|---|
$schema |
Locatie van het JSON-schemabestand. Het JSON-schemabestand kan u helpen de geldigheid van het definitiebestand te testen. |
title |
Naam van het artefact dat moet worden weergegeven in het lab. Vereist. |
description |
Beschrijving van het artefact dat in het lab moet worden weergegeven. Vereist. |
iconUri |
URI van het artefactpictogram dat moet worden weergegeven in het lab. |
targetOsType |
Besturingssysteem van de VM waarop het artefact moet worden geïnstalleerd. Ondersteunde waarden: Windows , Linux .
Vereist. |
parameters |
Waarden om het artefact aan te passen bij installatie op de VM. |
runCommand |
De installatieopdracht voor het artefact die moet worden uitgevoerd op de VM. Vereist. |
Artefactparameters
Geef in de sectie parameters van het definitiebestand de waarden op die een gebruiker kan invoeren bij het installeren van een artefact. U kunt naar deze waarden verwijzen in de installatieopdracht voor artefacten.
Gebruik de volgende structuur om parameters te definiëren:
"parameters": {
"<parameterName>": {
"type": "<type-of-parameter-value>",
"displayName": "<display-name-of-parameter>",
"description": "<description-of-parameter>"
}
}
Elementnaam | Beschrijving |
---|---|
type |
Type parameterwaarde. Vereist. |
displayName |
Naam van de parameter die moet worden weergegeven voor de labgebruiker. Vereist. |
description |
Beschrijving van de parameter die moet worden weergegeven voor de labgebruiker. Vereist. |
De toegestane parameterwaardetypen zijn:
Type | Description |
---|---|
string |
Elke geldige JSON-tekenreeks |
int |
Een geldig JSON-geheel getal |
bool |
Elke geldige JSON-booleaanse waarde |
array |
Elke geldige JSON-matrix |
Geheimen als beveiligde tekenreeksen
Als u geheimen wilt declareren als beveiligde tekenreeksparameters met gemaskeerde tekens in de gebruikersinterface, gebruikt u de volgende syntaxis in de parameters
sectie van het bestand 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
},
De installatieopdracht voor het artefact om het PowerShell-script uit te voeren, gebruikt de beveiligde tekenreeks die is gemaakt met behulp van de ConvertTo-SecureString
opdracht .
"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'), '\"')]"
}
Meld geheimen niet aan de console, omdat het script uitvoer voor foutopsporing van gebruikers vastlegt.
Artefactexpressies en functies
U kunt expressies en functies gebruiken om de installatieopdracht voor artefacten samen te stellen. Expressies evalueren wanneer het artefact wordt geïnstalleerd. Expressies kunnen overal in een JSON-tekenreekswaarde worden weergegeven en retourneren altijd een andere JSON-waarde. Plaats expressies tussen vierkante haken, [ ]. Als u een letterlijke tekenreeks wilt gebruiken die begint met een vierkante haak, gebruikt u twee vierkante haken [[.
Meestal gebruikt u expressies met functies om een waarde te maken. Functie-aanroepen zijn opgemaakt als functionName(arg1, arg2, arg3)
.
Veelvoorkomende functies zijn:
Functie | Beschrijving |
---|---|
parameters(parameterName) |
Retourneert een parameterwaarde die moet worden opgegeven wanneer de artefactopdracht wordt uitgevoerd. |
concat(arg1, arg2, arg3, ...) |
Combineert meerdere tekenreekswaarden. Deze functie kan verschillende argumenten hebben. |
In het volgende voorbeeld worden expressies en functies gebruikt om een waarde te maken:
runCommand": {
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy bypass \"& ./startChocolatey.ps1'
, ' -RawPackagesList ', parameters('packages')
, ' -Username ', parameters('installUsername')
, ' -Password ', parameters('installPassword'))]"
}
Een aangepast artefact maken
Een aangepast artefact maken:
Installeer een JSON-editor om te werken met artefactdefinitiebestanden. Visual Studio Code is beschikbaar voor Windows, Linux en macOS.
Begin met een voorbeeld van het definitiebestand artifactfile.json .
De openbare opslagplaats voor DevTest Labs-artefacten bevat een uitgebreide bibliotheek met artefacten die u kunt gebruiken. U kunt een artefactdefinitiebestand downloaden en aanpassen om uw eigen artefacten te maken.
In dit artikel wordt gebruikgemaakt van het definitiebestand artifactfile.json en artifact.ps1 PowerShell-script op https://github.com/Azure/azure-devtestlab/tree/master/Artifacts/windows-test-paramtypes.
Gebruik IntelliSense om geldige elementen en waardeopties weer te geven die u kunt gebruiken om een artefactdefinitiebestand te maken. Wanneer u bijvoorbeeld het
targetOsType
element bewerkt, worden in IntelliSense opties weergegevenWindows
.Linux
Sla uw artefacten op in openbare of persoonlijke Git-artefactopslagplaatsen.
- Sla elk artefactdefinitiebestand artifactfile.json op in een afzonderlijke map met dezelfde naam als de naam van het artefact.
- Sla de scripts op waarnaar de installatieopdracht verwijst in dezelfde map als het artefactdefinitiebestand.
In de volgende schermopname ziet u een voorbeeld van een artefactmap:
Als u uw aangepaste artefacten wilt opslaan in de openbare opslagplaats met DevTest Labs-artefacten, opent u een pull-aanvraag voor de opslagplaats.