Tworzenie niestandardowych artefaktów dla usługi DevTest Labs
W tym artykule opisano sposób tworzenia niestandardowych plików artefaktów dla maszyn wirtualnych Azure DevTest Labs. Artefakty usługi DevTest Labs określają akcje do wykonania w celu aprowizacji maszyny wirtualnej. Artefakt składa się z pliku definicji artefaktu i innych plików skryptów przechowywanych w folderze w repozytorium Git.
- Aby uzyskać informacje na temat dodawania repozytoriów artefaktów do laboratoriów, zobacz Dodawanie repozytorium artefaktów do laboratorium.
- Aby uzyskać informacje na temat dodawania artefaktów tworzonych do maszyn wirtualnych, zobacz Dodawanie artefaktów do maszyn wirtualnych usługi DevTest Labs.
- Aby uzyskać informacje o określaniu obowiązkowych artefaktów do dodania do wszystkich maszyn wirtualnych laboratorium, zobacz Określanie obowiązkowych artefaktów dla maszyn wirtualnych usługi DevTest Labs.
Pliki definicji artefaktu
Pliki definicji artefaktu to wyrażenia JSON określające, co chcesz zainstalować na maszynie wirtualnej. Pliki definiują nazwę artefaktu, polecenie do uruchomienia i dostępne parametry dla polecenia. W pliku definicji artefaktu można odwoływać się do innych plików skryptów według nazwy.
Poniższy przykład przedstawia sekcje tworzące podstawową strukturę pliku definicji artefaktu artifactfile.json :
{
"$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": ""
}
}
Nazwa elementu | Opis |
---|---|
$schema |
Lokalizacja pliku schematu JSON. Plik schematu JSON może pomóc w przetestowaniu ważności pliku definicji. |
title |
Nazwa artefaktu do wyświetlenia w laboratorium. Wymagane. |
description |
Opis artefaktu do wyświetlenia w laboratorium. Wymagane. |
iconUri |
Identyfikator URI ikony artefaktu do wyświetlenia w laboratorium. |
targetOsType |
System operacyjny maszyny wirtualnej do zainstalowania artefaktu. Obsługiwane wartości: Windows , Linux .
Wymagane. |
parameters |
Wartości do dostosowania artefaktu podczas instalowania na maszynie wirtualnej. |
runCommand |
Polecenie instalacji artefaktu do wykonania na maszynie wirtualnej. Wymagane. |
Parametry artefaktu
W sekcji parameters pliku definicji określ wartości, które użytkownik może wprowadzić podczas instalowania artefaktu. Możesz odwołać się do tych wartości w poleceniu instalacji artefaktu.
Aby zdefiniować parametry, użyj następującej struktury:
"parameters": {
"<parameterName>": {
"type": "<type-of-parameter-value>",
"displayName": "<display-name-of-parameter>",
"description": "<description-of-parameter>"
}
}
Nazwa elementu | Opis |
---|---|
type |
Typ wartości parametru. Wymagane. |
displayName |
Nazwa parametru do wyświetlenia użytkownikowi laboratorium. Wymagane. |
description |
Opis parametru do wyświetlenia użytkownikowi laboratorium. Wymagane. |
Dozwolone typy wartości parametrów to:
Typ | Opis |
---|---|
string |
Dowolny prawidłowy ciąg JSON |
int |
Dowolna prawidłowa liczba całkowita JSON |
bool |
Dowolna prawidłowa wartość logiczna JSON |
array |
Dowolna prawidłowa tablica JSON |
Wpisy tajne jako bezpieczne ciągi
Aby zadeklarować wpisy tajne jako parametry bezpiecznego ciągu z zamaskowanych znaków w interfejsie użytkownika, użyj następującej składni w parameters
sekcji pliku 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
},
Polecenie instalacji artefaktu służące do uruchamiania skryptu programu PowerShell pobiera bezpieczny ciąg utworzony przy użyciu ConvertTo-SecureString
polecenia .
"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'), '\"')]"
}
Nie rejestruj wpisów tajnych w konsoli, ponieważ skrypt przechwytuje dane wyjściowe na potrzeby debugowania użytkownika.
Wyrażenia artefaktów i funkcje
Możesz użyć wyrażeń i funkcji, aby skonstruować polecenie instalacji artefaktu. Wyrażenia są obliczane podczas instalowania artefaktu. Wyrażenia mogą być wyświetlane w dowolnym miejscu w wartości ciągu JSON i zawsze zwracają inną wartość JSON. Ujęcie wyrażeń za pomocą nawiasów kwadratowych [ ]. Jeśli musisz użyć ciągu literału rozpoczynającego się nawiasem kwadratowym, użyj dwóch nawiasów [[.
Zwykle używasz wyrażeń z funkcjami do konstruowania wartości. Wywołania funkcji są formatowane jako functionName(arg1, arg2, arg3)
.
Typowe funkcje to:
Funkcja | Opis |
---|---|
parameters(parameterName) |
Zwraca wartość parametru, aby podać, gdy zostanie uruchomione polecenie artefaktu. |
concat(arg1, arg2, arg3, ...) |
Łączy wiele wartości ciągów. Ta funkcja może przyjmować różne argumenty. |
W poniższym przykładzie użyto wyrażeń i funkcji do konstruowania wartości:
runCommand": {
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy bypass \"& ./startChocolatey.ps1'
, ' -RawPackagesList ', parameters('packages')
, ' -Username ', parameters('installUsername')
, ' -Password ', parameters('installPassword'))]"
}
Tworzenie artefaktu niestandardowego
Aby utworzyć artefakt niestandardowy:
Zainstaluj edytor JSON, aby pracować z plikami definicji artefaktów. Visual Studio Code jest dostępna dla systemów Windows, Linux i macOS.
Rozpocznij od przykładowego pliku definicji artifactfile.json .
Publiczne repozytorium artefaktów usługi DevTest Labs zawiera bogatą bibliotekę artefaktów, których można użyć. Możesz pobrać plik definicji artefaktu i dostosować go w celu utworzenia własnych artefaktów.
W tym artykule użyto pliku definicji artifactfile.json i skryptu programu PowerShellartifact.ps1pod adresem https://github.com/Azure/azure-devtestlab/tree/master/Artifacts/windows-test-paramtypes.
Użyj funkcji IntelliSense, aby wyświetlić prawidłowe elementy i opcje wartości, których można użyć do konstruowania pliku definicji artefaktu. Na przykład podczas edytowania
targetOsType
elementu funkcja IntelliSense wyświetla opcjeWindows
lubLinux
.Przechowuj artefakty w publicznych lub prywatnych repozytoriach artefaktów Git.
- Przechowuj każdy plik definicji artefaktu artifactfile.json w osobnym katalogu o nazwie takiej samej jak nazwa artefaktu.
- Zapisz skrypty, do których odwołuje się polecenie instalacji w tym samym katalogu co plik definicji artefaktu.
Poniższy zrzut ekranu przedstawia przykładowy folder artefaktu:
Aby przechowywać niestandardowe artefakty w publicznym repozytorium artefaktów usługi DevTest Labs, otwórz żądanie ściągnięcia względem repozytorium.
Aby dodać prywatne repozytorium artefaktów do laboratorium, zobacz Dodawanie repozytorium artefaktów do laboratorium w usłudze DevTest Labs.