Delen via


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.

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:

Volgende stappen