Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Артефакты — это инструменты, действия или программное обеспечение, которые можно добавить в виртуальные машины Azure DevTest Labs. Например, артефакты могут выполнять скрипты, устанавливать средства или выполнять такие действия, как присоединение к домену. Пользователи DevTest Labs могут добавлять артефакты на виртуальные машины, а администраторы лабораторий могут указывать обязательные артефакты, которые будут добавлены ко всем виртуальным машинам лаборатории.
В этой статье описывается процесс создания объектов, которые обеспечивают развертывание виртуальных машин в лаборатории. Артефакт состоит из JSON-файла определения артефакта и других файлов скриптов, хранящихся в папке репозитория Git. Артефакты можно хранить в частном или общедоступном репозитории Git. Администраторы лабораторий могут добавлять репозитории артефактов в лаборатории , чтобы все пользователи лаборатории могли получить к ним доступ.
Предпосылки
- Чтобы создать и работать с файлами определения артефактов, вам потребуется редактор JSON. Visual Studio Code доступен для Windows, Linux и macOS.
- Чтобы сохранить файлы определения артефактов и скриптов, требуется учетная запись GitHub.
Общие сведения о файлах определения артефактов
Файл определения артефакта состоит из выражения JSON, указывающего действие, выполняемое на виртуальной машине. Файл определяет имя артефакта, команду для выполнения и параметры, доступные для команды. Если артефакт содержит другие файлы скриптов, можно ссылаться на файлы по имени в файле определения артефакта.
В следующем примере показана базовая структура файла определения артефактов artifactfile.json .
{
"$schema": "https://raw.githubusercontent.com/Azure/azure-devtestlab/master/schemas/2016-11-28/dtlArtifacts.json",
"title": "<title>",
"description": "<description>",
"iconUri": "",
"targetOsType": "<os>",
"parameters": {
"<paramName>": {
"type": "<type>",
"displayName": "<display name>",
"description": "<description>"
}
},
"runCommand": {
"commandToExecute": "<command>"
}
}
Определение содержит следующие обязательные и необязательные элементы:
| Имя элемента | Description |
|---|---|
$schema |
Расположение файла схемы JSON, который поможет проверить допустимость файла определения. |
title |
Необходимое имя артефакта для отображения. |
description |
Обязательное описание артефакта. |
iconUri |
URI значка артефакта для отображения. |
targetOsType |
Требуется операционная система для установки. Поддерживаемые значения : Windows или Linux. |
parameters |
Доступные настройки артефактов во время установки. |
runCommand |
Требуется команда для установки артефакта на виртуальной машине. |
Параметры артефакта
В parameters разделе файла определения определяются параметры и значения, которые пользователи могут указать при установке артефакта. Можно обратиться к этим параметрам в разделе runCommand.
Следующая структура определяет параметр:
"parameters": {
"<name>": {
"type": "<type>",
"displayName": "<display name>",
"description": "<description>"
}
}
Для каждого параметра требуется имя, и для определения параметра требуются следующие элементы:
| Имя элемента | Description |
|---|---|
type |
Обязательный тип значения параметра. Тип может быть любым допустимым JSON string, целым числом int, логическим bool или array. |
displayName |
Необходимое имя параметра для отображения пользователю. |
description |
Обязательное описание параметра. |
Безопасные параметры строки
Чтобы включить секреты в определение артефакта, объявите секреты как безопасные строки с помощью secureStringParam синтаксиса в parameters разделе файла определения. Элемент description разрешает любую текстовую строку, включая пробелы, и представляет строку в пользовательском интерфейсе как маскированные символы.
"securestringParam": {
"type": "securestring",
"displayName": "Secure String Parameter",
"description": "<any text string>",
"allowEmpty": false
},
В следующем runCommand примере используется сценарий PowerShell, который принимает безопасную строку, созданную с помощью ConvertTo-SecureString команды. Скрипт записывает выходные данные для отладки, поэтому для безопасности не регистрируются выходные данные в консоли.
"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'), '\"')]"
}
Выражения и функции артефактов
Выражения и функции можно использовать для создания команды установки артефакта. Выражения вычисляются при установке артефакта.
Выражения могут отображаться в любом месте строкового значения JSON и всегда возвращать другое значение JSON. Заключайте выражения в круглые скобки, [ ]. Если необходимо использовать литеральную строку, начинающуюся с скобки, используйте две скобки [[.
Обычно выражения используются с функциями для создания значения. Вызовы функций форматируются как functionName(arg1, arg2, arg3).
К общим функциям относятся:
| Функция | Description |
|---|---|
parameters(parameterName) |
Возвращает значение параметра, используемое при выполнении команды для артефактов. |
concat(arg1, arg2, arg3, ...) |
Объединяет несколько строковых значений и может принимать различные аргументы. |
В следующем примере используются выражения с concat функцией для создания значения.
runCommand": {
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy bypass \"& ./startChocolatey.ps1'
, ' -RawPackagesList ', parameters('packages')
, ' -Username ', parameters('installUsername')
, ' -Password ', parameters('installPassword'))]"
}
Создание пользовательского артефакта
Вы можете создать пользовательский артефакт, начиная с примера файла определения artifactfile.json . В общедоступном репозитории артефактов DevTest Labs есть библиотека артефактов. Вы можете скачать файл определения артефакта и настроить его для создания собственных артефактов.
Скачайте скрипт PowerShell artifact.ps1 и файл определения artifactfile.json из https://github.com/Azure/azure-devtestlab/tree/master/Artifacts/windows-test-paramtypes.
Измените файл определения артефакта, чтобы внести некоторые допустимые изменения в элементы и значения. В Visual Studio Code можно использовать IntelliSense для просмотра допустимых элементов и параметров значения. Например, при редактировании элемента
targetOsTypeIntelliSense показываетWindowsилиLinuxварианты.Сохраните артефакт в общедоступном или частном репозитории артефактов Git.
- Сохраните каждый artifactfile.json файл определения артефакта в отдельном каталоге с именем артефакта.
- Сохраните скрипты, ссылки на которые команда установки ссылается в том же каталоге, что и файл определения артефакта.
На следующем снимка экрана показан пример папки артефактов:
Замечание
Чтобы добавить пользовательские артефакты в общедоступный репозиторий артефактов DevTest Labs, откройте pull request для репозитория.
Дальнейшие шаги
- Добавление артефактов в виртуальные машины DevTest Labs
- Указание обязательных артефактов для добавления во все виртуальные машины лаборатории
- Добавление репозитория артефактов в лабораторию