Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как добавить репозиторий артефактов в лабораторию в Azure DevTest Labs. Артефакты — это средства или приложения для установки на виртуальных машинах. Вы определяете артефакты в JSON-файле, который загружаете из репозитория Git на GitHub или Azure Repos.
Общедоступный репозиторий артефактов GitHub в DevTest Labs предоставляет множество стандартных артефактов для Windows и Linux. Артефакты в этом общедоступном репозитории доступны по умолчанию в DevTest Labs. Сведения о добавлении артефактов на виртуальные машины см. в статье Добавление артефактов в виртуальные машины DevTest Labs.
Вы также можете создавать пользовательские артефакты, которые недоступны в общедоступном репозитории артефактов. Дополнительные сведения о создании пользовательских артефактов см. в статье Создание пользовательских артефактов. Вы можете добавить пользовательские артефакты в собственный репозиторий артефактов, а затем добавить этот репозиторий в лабораторию, чтобы все ее пользователи могли работать с этими артефактами.
В этой статье показано, как добавить репозиторий артефактов в лабораторию с помощью портала Azure, шаблона Azure Resource Management (ARM) или Azure PowerShell. Можно также использовать скрипт Azure PowerShell или Azure CLI для автоматизации добавления репозитория артефактов в лабораторию.
Note
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.
Добавление репозитория артефакта с помощью портала Azure
Вы можете добавить репозиторий артефактов из репозитория Azure Repos или репозитория GitHub. Вы можете выполнить проверку подлинности, назначив разрешения управляемому удостоверению, с помощью проверки подлинности приложения GitHub или с помощью PAT. Дополнительные сведения об управляемых удостоверениях см. в статье "Что такое управляемые удостоверения для ресурсов Azure"?
Выберите вкладку для типа репозитория и проверки подлинности, которую вы хотите использовать.
- Репозиторий Azure Repos с управляемыми идентификаторами
- Репозиторий Azure Repos с помощью PAT
- Репозиторий GitHub с приложением Центра разработки
- Репозиторий GitHub с токеном доступа PAT
Чтобы добавить репозиторий артефакта, выполните следующие задачи:
- Назначьте разрешения в Azure Repos для управляемого удостоверения.
- Добавьте репозиторий артефактов.
Назначьте разрешения в Azure Repos для управляемого удостоверения
Необходимо предоставить разрешения управляемого удостоверения репозиторию в Azure Repos.
Войдите в организацию Azure DevOps.
Note
Ваша организация Azure DevOps должна находиться в том же каталоге, что и подписка Azure, содержащая лабораторию.
Выберите Параметры организации.
На странице "Обзор" выберите "Пользователи".
На странице "Пользователи" выберите "Добавить пользователей".
Завершите добавление новых пользователей , введя или выбрав следующие сведения, а затем нажмите кнопку "Добавить".
Name Value Пользователи или субъекты-службы Введите название вашей лаборатории.
При использовании управляемого удостоверения, назначаемого системой, укажите имя лаборатории, а не идентификатор объекта управляемой учетной записи. При использовании управляемого удостоверения, назначаемого пользователем, используйте имя управляемой учетной записи.уровня доступа Выберите Базовый. Добавление в проекты Выберите проект, содержащий репозиторий. Группы Azure DevOps Выберите "Читатели проектов". Отправка приглашений по электронной почте (только пользователям) Снимите флажок.
Добавление репозитория артефактов Azure DevOps в лабораторию в портале Azure
На странице обзора лаборатории выберите "Конфигурация и политики " в левой области.
На странице "Конфигурация и политики" выберите репозитории в разделе "Внешние ресурсы " в левой области.
На странице Репозиторииобщедоступный репозиторий артефактов появляется автоматически и подключается к общедоступному репозиторию GitHub DevTest Labs. Если этот репозиторий не включен для лаборатории, его можно включить, установив флажок рядом с общедоступным репозиторием артефактов, а затем нажмите кнопку "Включить " в верхней части области.
Чтобы добавить репозиторий артефактов в лабораторию, нажмите кнопку "Добавить " в верхней части области.
В области Репозитории введите следующие сведения:
- Имя: имя репозитория для использования в лаборатории.
- Git clone URL: URL-адрес HTTPS клона Git из Azure Repos.
- Ветвь (необязательно): ветвь, в которой находятся определения артефактов.
- Пути к папкам: папка, где размещены определения шаблонов ARM, относительно базового URL-адреса клонирования Git. Обязательно добавьте косую черту в начале пути к папке.
- Управляемое удостоверение. Выберите этот параметр, чтобы использовать управляемое удостоверение для проверки подлинности.
Нажмите Сохранить.
Репозиторий теперь отображается в списке Репозитории для лаборатории.
Добавление репозитория артефактов с помощью шаблона ARM
Шаблоны ARM — это файлы JSON, описывающие создаваемые ресурсы Azure. Дополнительные сведения о шаблонах ARM см. в статье Общие сведения о структуре и синтаксисе шаблонов ARM.
Приведенный ниже шаблон ARM добавляет репозиторий артефактов в лабораторию. Если лаборатория еще не существует, шаблон создает его.
Просмотр шаблона ARM
Пример шаблона собирает следующие сведения в параметрах. Некоторые параметры имеют значения по умолчанию, но в команде развертывания должны быть указаны имя лаборатории, код URI репозитория артефактов, тип репозитория и личный маркер доступа к репозиторию.
- Имя лаборатории.
- Отображаемое имя репозитория артефактов в DevTest Labs. Значение по умолчанию —
Team Repository. - Код URI репозитория артефактов, скопированный ранее.
- Ветвь репозитория, которая содержит артефакты. Значение по умолчанию —
main. - Имя папки, содержащей артефакты. Значение по умолчанию ―
/Artifacts. - Тип репозитория. Допустимые значения:
VsoGitдля Azure Repos илиGitHub. - Личный маркер доступа для репозитория, скопированный ранее.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"labName": {
"type": "string"
},
"artifactRepositoryDisplayName": {
"type": "string",
"defaultValue": "Team Repository"
},
"artifactRepoUri": {
"type": "string"
},
"artifactRepoBranch": {
"type": "string",
"defaultValue": "main"
},
"artifactRepoFolder": {
"type": "string",
"defaultValue": "/Artifacts"
},
"artifactRepoType": {
"type": "string",
"allowedValues": ["VsoGit", "GitHub"]
},
"artifactRepoSecurityToken": {
"type": "securestring"
}
},
"variables": {
"artifactRepositoryName": "[concat('Repo-', uniqueString(subscription().subscriptionId))]"
},
"resources": [{
"apiVersion": "2016-05-15",
"type": "Microsoft.DevTestLab/labs",
"name": "[parameters('labName')]",
"location": "[resourceGroup().location]",
"resources": [
{
"apiVersion": "2016-05-15",
"name": "[variables('artifactRepositoryName')]",
"type": "artifactSources",
"dependsOn": [
"[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]"
],
"properties": {
"uri": "[parameters('artifactRepoUri')]",
"folderPath": "[parameters('artifactRepoFolder')]",
"branchRef": "[parameters('artifactRepoBranch')]",
"displayName": "[parameters('artifactRepositoryDisplayName')]",
"securityToken": "[parameters('artifactRepoSecurityToken')]",
"sourceType": "[parameters('artifactRepoType')]",
"status": "Enabled"
}
}
]
}
]
}
Развертывание шаблона
Существует несколько способов развертывания шаблонов ARM для создания или обновления ресурсов Azure. Сведения и инструкции см. в следующих статьях:
- Развертывание ресурсов с помощью шаблонов ARM и Azure PowerShell
- Развертывание ресурсов с помощью шаблонов ARM и Azure CLI
- Развертывание ресурсов с помощью шаблонов ARM на портале Azure
- Развертывание ресурсов с помощью шаблонов ARM и REST API Resource Manager
Для этой процедуры разверните шаблон с помощью Azure PowerShell.
Note
Командлеты, которые развертывают шаблон, зависят от контекста, поэтому они используют текущий клиент и подписку. Если необходимо изменить контекст, перед развертыванием шаблона используйте Set-AzContext .
Создайте группу ресурсов с помощью команды New-AzResourceGroup. Если группа ресурсов, которую вы хотите использовать, уже существует, пропустите этот шаг.
New-AzResourceGroup -Name MyLabResourceGroup1 -Location westusСоздайте развертывание в группе ресурсов с помощью команды New-AzResourceGroupDeployment. Вы можете выполнить несколько развертываний ресурсов в одной и той же группе ресурсов. Если вы развертываете несколько раз в одной группе ресурсов, имя каждого развертывания должно быть уникально.
New-AzResourceGroupDeployment ` -Name MyLabResourceGroup-Deployment1 ` -ResourceGroupName MyLabResourceGroup1 ` -TemplateFile azuredeploy.json ` -TemplateParameterFile azuredeploy.parameters.json
После успешного выполнения New-AzResourceGroupDeployment команда выводит важную информацию, например состояние подготовки (должно быть succeeded), и все выходные данные шаблона.
Добавление репозитория артефактов с помощью Azure PowerShell
Приведенный ниже пример скрипта PowerShell New-DevTestLabArtifactRepository.ps1 добавляет репозиторий артефактов в лабораторию. Полный скрипт включает в себя некоторые подробные сообщения и комментарии.
<#
.SYNOPSIS
This script creates a new custom repository and adds it to an existing DevTest lab.
.PARAMETER LabName
The name of the lab.
.PARAMETER LabResourceGroupName
The name of the resource group that contains the lab.
.PARAMETER ArtifactRepositoryName
Name for the new artifact repository. The script creates a random name for the repository if a name isn't specified.
.PARAMETER ArtifactRepositoryDisplayName
Display name for the artifact repository.
This name appears in the list of artifact repositories for a lab.
.PARAMETER RepositoryUri
URI to the artifact repository.
.PARAMETER RepositoryBranch
Branch that contains the artifact files. Defaults to 'main'.
.PARAMETER FolderPath
Folder that contains the artifact files. Defaults to '/Artifacts'.
.PARAMETER PersonalAccessToken
Personal access token for the GitHub or Azure Repos repository.
.PARAMETER SourceType
Whether the artifact repository is a VSOGit (Azure Repos) or GitHub repository.
.EXAMPLE
Set-AzContext -SubscriptionId aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.\New-DevTestLabArtifactRepository.ps1 -LabName "mydevtestlab" -LabResourceGroupName "mydtlrg" -ArtifactRepositoryName "MyTeam Repository" -RepositoryUri "https://github.com/<myteam>/<nameofrepo>.git" -PersonalAccessToken "1111...." -SourceType "GitHub"
.NOTES
The script uses the current Azure context. To set the context, use Set-AzContext.
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
$LabName,
[Parameter(Mandatory=$true)]
$LabResourceGroupName,
$ArtifactRepositoryName,
$ArtifactRepositoryDisplayName = 'Team Artifact Repository',
[Parameter(Mandatory=$true)]
$RepositoryUri,
$RepositoryBranch = 'main',
$FolderPath = '/Artifacts',
[Parameter(Mandatory=$true)]
$PersonalAccessToken ,
[Parameter(Mandatory=$true)]
[ValidateSet('VsoGit', 'GitHub')]
$SourceType
)
# Set artifact repository internal name if it's not specified.
if ($ArtifactRepositoryName -eq $null){
$ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}
# Sign in to Azure.
Connect-AzAccount
# Get lab resource.
$LabResource = Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' -ResourceName $LabName -ResourceGroupName $LabResourceGroupName
Write-Verbose "Lab Name: $($LabResource.Name)"
Write-Verbose "Lab Resource Group Name: $($LabResource.ResourceGroupName)"
Write-Verbose "Lab Resource Location: $($LabResource.Location)"
Write-Verbose "Artifact Repository Internal Name: $ArtifactRepositoryName"
# Prepare properties object for the call to New-AzResource.
$propertiesObject = @{
uri = $RepositoryUri;
folderPath = $FolderPath;
branchRef = $RepositoryBranch;
displayName = $ArtifactRepositoryDisplayName;
securityToken = $PersonalAccessToken;
sourceType = $SourceType;
status = 'Enabled'
}
Write-Verbose "Properties to be passed to New-AzResource:$($propertiesObject | Out-String)"
# Add resource to the current subscription.
$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName
Write-Verbose "Az ResourceType: $resourcetype"
Write-Verbose "Az ResourceName: $resourceName"
Write-Verbose "Creating artifact repository '$ArtifactRepositoryDisplayName'..."
$result = New-AzResource -Location $LabResource.Location -ResourceGroupName $LabResource.ResourceGroupName -properties $propertiesObject -ResourceType $resourcetype -ResourceName $resourceName -ApiVersion 2016-05-15 -Force
# Alternative implementation:
# Use resourceId rather than resourcetype and resourcename parameters.
# Using resourceId lets you specify the $SubscriptionId rather than using the
# subscription ID of Get-AzContext.
# $resourceId = "/subscriptions/$SubscriptionId/resourceGroups/$($LabResource.ResourceGroupName)/providers/Microsoft.DevTestLab/labs/$LabName/artifactSources/$ArtifactRepositoryName"
# $result = New-AzResource -properties $propertiesObject -ResourceId $resourceId -ApiVersion 2016-05-15 -Force
# Check the result.
if ($result.Properties.ProvisioningState -eq "Succeeded") {
Write-Verbose ("Successfully added artifact repository source '$ArtifactRepositoryDisplayName'")
}
else {
Write-Error ("Error adding artifact repository source '$ArtifactRepositoryDisplayName'")
}
# Return the newly created resource to use in later scripts.
return $result
Parameters
Скрипт PowerShell принимает следующие параметры:
| Parameter | Description |
|---|---|
LabName |
Имя лаборатории. |
ArtifactRepositoryName |
Имя для нового репозитория артефактов. Скрипт создает случайное имя репозитория, если имя не указано. |
ArtifactRepositoryDisplayName |
Имя, отображаемое в списке репозиториев артефактов лаборатории. |
RepositoryUri |
URI репозитория артефактов. Вы скопировали это значение ранее. |
RepositoryBranch |
Ветвь репозитория, которая содержит артефакты. Значение по умолчанию — main. |
FolderPath |
Папка, содержащая артефакты. Значение по умолчанию — /Artifacts. |
PersonalAccessToken |
Маркер безопасности для доступа к репозиторию. Вы скопировали это значение ранее. |
SourceType |
Является ли репозиторий артефактов репозиторием VSOGit (Azure Repos) или репозиторием GitHub. |
Для идентификации репозитория требуется внутреннее имя. Это имя отличается от отображаемого имени на портале Azure. Вы не видите внутреннее имя на портале Azure, но видите его при использовании интерфейсов REST API Azure или Azure PowerShell. Скрипт создает случайное имя, если оно не указано в команде развертывания.
# Set artifact repository name, if it's not set by user.
if ($ArtifactRepositoryName -eq $null){
$ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}
Команды PowerShell
В этом скрипте используются следующие команды PowerShell:
| Command | Notes |
|---|---|
| Get-AzResource | Получает сведения о лаборатории, например ее расположение. Вы создаете источник репозитория артефактов в том же расположении и в той же группе ресурсов, что и лаборатория. |
| New-AzResource | Добавляет ресурс Azure. Специальной команды для добавления репозиториев артефактов нет. Этот командлет должен иметь либо ResourceId, либо пару ResourceName и ResourceType, чтобы определить тип создаваемого ресурса. Сценарий выше использует пару ResourceName и ResourceType. |
Легко найти сведения об имени и типе ресурса можно на веб-сайте обозревателя REST API Azure. Источники артефактов DevTest Labs показывают интерфейсы REST API для создания источников артефактов DevTest Labs и управления ими. В приведенном выше скрипте используется следующий идентификатор ресурса:
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}
Тип ресурса — это все, что указано в providers URI, за исключением элементов в фигурных скобках ({}). Имя ресурса — это все, что отображается в фигурных скобках. Если для имени ресурса используется более одного элемента, отделите каждый элемент косой чертой:
$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName
Запуск скрипта PowerShell
Запустите скрипт PowerShell, подставив собственные значения вместо примеров значений для LabName, LabResourceGroupName, ArtifactRepositoryName, RepositoryUri, PersonalAccessToken и SourceType:
Set-AzContext -SubscriptionId <Your Azure subscription ID>
.\New-DevTestLabArtifactRepository.ps1 -LabName "mydevtestlab" -LabResourceGroupName "mydtlrg" -ArtifactRepositoryName "myteamrepository" -RepositoryUri "https://github.com/myteam/myteamrepository.git" - "1111...." -SourceType "GitHub"