Megosztás a következőn keresztül:


Összetevő-adattár hozzáadása egy laborhoz

Ez a cikk bemutatja, hogyan adhat hozzá összetevő-adattárat a laborhoz az Azure DevTest Labsban. Az összetevők virtuális gépekre (virtuális gépekre) telepíthető eszközök vagy alkalmazások. A GitHubról vagy az Azure Repos Git-adattárból betöltött JSON-fájlban definiálhat összetevőket.

A nyilvános DevTest Labs GitHub-összetevő-adattár számos gyakori összetevőt biztosít Windowshoz és Linuxhoz. A nyilvános adattárban lévő összetevők alapértelmezés szerint elérhetők a DevTest Labsban. További információ az összetevők virtuális gépekhez való hozzáadásáról: Összetevők hozzáadása a DevTest Labs virtuális gépekhez.

Létrehozhat olyan egyéni összetevőket is, amelyek nem érhetők el a nyilvános összetevők adattárában. Az egyéni összetevők létrehozásáról további információt az Egyéni összetevők létrehozása című témakörben talál. Hozzáadhatja az egyéni összetevőket a saját összetevő-adattárához, és hozzáadhatja az adattárat a laborhoz, hogy az összes laborfelhasználó használni tudja az összetevőket.

Ez a cikk bemutatja, hogyan adhat hozzá összetevő-adattárat a laborhoz az Azure Portal, az Azure Resource Management (ARM) sablon vagy az Azure PowerShell használatával. Azure PowerShell- vagy Azure CLI-szkripttel automatizálhatja az összetevő-adattár laborhoz való hozzáadását.

Feljegyzés

Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Előfeltételek

Ha összetevő-adattárat szeretne hozzáadni egy laborhoz, ismernie kell a Git HTTPS klón URL-címét és az összetevőfájlokat tartalmazó GitHub- vagy Azure-adattár személyes hozzáférési jogkivonatát.

A GitHub klónozott URL-címének és személyes hozzáférési jogkivonatának lekérése

  1. Az összetevőket tartalmazó GitHub-adattár kezdőlapján válassza a Kód lehetőséget, majd a Klónozás területen másolja a HTTPS URL-címet.
  2. Válassza ki a profilképét a GitHub jobb felső sarkában, majd válassza a Gépház.
  3. A profillap bal oldali menüjében válassza a Fejlesztői Gépház, majd a Személyes hozzáférési jogkivonatok lehetőséget.
  4. Válassza az Új jogkivonat létrehozása lehetőséget.
  5. Az Új személyes hozzáférési jogkivonat lapon, a Megjegyzés területen adja meg a jogkivonat opcionális leírását. Fogadja el az összes alapértelmezett beállítást, majd válassza a Jogkivonat létrehozása lehetőséget.
  6. Mentse a létrehozott jogkivonatot.

Az Azure-adattárak klónozott URL-címének és személyes hozzáférési jogkivonatának lekérése

  1. Az összetevőket tartalmazó adattár főoldalán válassza a Klónozás lehetőséget. A Klónozási adattár lapon másolja ki a klónozási URL-címet.
  2. Az Azure DevOps oldal jobb felső sarkában válassza a Felhasználói beállítások>személyes hozzáférési jogkivonatok lehetőséget.
  3. A Személyes hozzáférési jogkivonatok lapon válassza az Új jogkivonat lehetőséget.
  4. Töltse ki a jogkivonat adatait, válassza az Olvasás a hatókörökhöz lehetőséget, majd válassza a Létrehozás lehetőséget.
  5. A Sikeresség lapon mindenképpen másolja ki a jogkivonatot, mert az Azure-adattárak nem tárolják vagy nem jelenítik meg újra.

Összetevő-adattár hozzáadása egy laborhoz az Azure Portalon

  1. A tesztkörnyezet Áttekintés lapján válassza a Konfiguráció és szabályzatok lehetőséget a bal oldali navigációs sávon.

  2. A Konfiguráció és szabályzatok lapon válassza az Adattárak lehetőséget a bal oldali navigációs sáv Külső erőforrások területén.

    Az Adattárak lapon a nyilvános összetevő-adattár automatikusan jelen van, és csatlakozik a DevTest Labs nyilvános GitHub-adattárhoz. Ha ez az adattár nincs engedélyezve a laborban, engedélyezheti azt a Nyilvános összetevők adattára melletti jelölőnégyzet bejelölésével, majd a felső menüsávOn az Engedélyezés gombra kattintva.

  3. Ha hozzá szeretné adni az összetevő-adattárat a laborhoz, válassza a Hozzáadás lehetőséget a felső menüsávon.

    Képernyőkép az Adattárak konfigurációs képernyőről.

  4. Az Adattár panelen adja meg a következő adatokat:

    • Név: A laborban használandó adattárnév.
    • Git-klón URL-címe: A Git HTTPS klón URL-címe a GitHubról vagy az Azure-adattárakból.
    • Ág (nem kötelező): Az az ág, amely az összetevődefiníciókkal rendelkezik.
    • Személyes hozzáférési jogkivonat: A Személyes hozzáférési jogkivonat a GitHubról vagy az Azure Reposból.
    • Mappa elérési útjai: Az ARM-sablondefiníciók mappája a Git-klón URL-címéhez viszonyítva. Ügyeljen arra, hogy a kezdeti perjelet belefoglalja a mappa elérési útjába.
  5. Válassza a Mentés lehetőséget.

    Képernyőkép egy új összetevő-adattár laborhoz való hozzáadásáról.

Az adattár ekkor megjelenik a labor Adattárak listájában.

Összetevő-adattár hozzáadása ARM-sablonnal

Az ARM-sablonok olyan JSON-fájlok, amelyek leírják a létrehozandó Azure-erőforrásokat. Az ARM-sablonokról további információt az ARM-sablonok szerkezetének és szintaxisának ismertetése című témakörben talál.

Az alábbi ARM-sablon egy összetevő-adattárat ad hozzá egy laborhoz. A sablon akkor hozza létre a labort, ha még nem létezik.

Az ARM-sablon áttekintése

A mintasablon a következő adatokat gyűjti a paraméterekben. Egyes paraméterek alapértelmezettek, de az üzembe helyezési parancsnak meg kell adnia a tesztkörnyezet nevét, az összetevő-adattár URI-ját, az adattár típusát és az adattár személyes hozzáférési jogkivonatát.

  • Labornév.
  • Az összetevő-adattár megjelenítendő neve a DevTest Labsban. Az alapértelmezett érték Team Repository.
  • Az összetevő-adattár URI-ja, amelyet korábban másolt.
  • Az összetevőket tartalmazó adattárág. Az alapértelmezett érték main.
  • Az összetevőket tartalmazó mappa neve. Az alapértelmezett érték a következő: /Artifacts.
  • Az adattár típusa. Az engedélyezett értékek az VsoGitAzure Repos vagy GitHuba .
  • Személyes hozzáférési jogkivonat az adattárhoz, amelyet korábban másolt.
{

    "$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"
                    }
                }
            ]
        }
    ]
}

A sablon üzembe helyezése

Az Azure-erőforrások létrehozásához vagy frissítéséhez többféleképpen is üzembe helyezhet ARM-sablonokat. További információkért és utasításokért tekintse meg a következő cikkeket:

Ebben a példában helyezze üzembe a sablont az Azure PowerShell használatával.

Feljegyzés

A sablont üzembe helyező parancsmagok környezetfüggőek, ezért az aktuális bérlőt és előfizetést használják. Ha módosítania kell a környezetet, használja a Set-AzContext parancsot a sablon üzembe helyezése előtt

  1. Hozzon létre egy erőforráscsoportot a New-AzResourceGroup használatával. Ha a használni kívánt erőforráscsoport már létezik, hagyja ki ezt a lépést.

    New-AzResourceGroup -Name MyLabResourceGroup1 -Location westus
    
  2. Hozzon létre egy üzembe helyezést az erőforráscsoportban a New-AzResourceGroupDeployment használatával. Több erőforrás-üzembe helyezést is elvégezhet ugyanahhoz az erőforráscsoporthoz. Ha többször is üzembe helyezi ugyanazt az erőforráscsoportot, győződjön meg arról, hogy az egyes üzembehelyezési nevek egyediek.

    New-AzResourceGroupDeployment `
        -Name MyLabResourceGroup-Deployment1 `
        -ResourceGroupName MyLabResourceGroup1 `
        -TemplateFile azuredeploy.json `
        -TemplateParameterFile azuredeploy.parameters.json
    

A sikeres futtatás után New-AzResourceGroupDeployment a kimenet olyan fontos információkat jelenít meg, mint a kiépítési állapot, amelynek meg kell lennie succeeded, és a sablon kimenetei.

Összetevő-adattár hozzáadása az Azure PowerShell használatával

A következő PowerShell-példaszkript, a New-DevTestLabArtifactRepository.ps1 hozzáad egy összetevő-adattárat egy laborhoz. A teljes szkript részletes üzeneteket és megjegyzéseket tartalmaz.


<#

.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 not 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 11111111-1111-1111-1111-111111111111
.\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 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

#Alternate 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

Paraméterek

A PowerShell-szkript a következő paramétereket használja:

Paraméter Leírás
LabName A labor neve.
ArtifactRepositoryName Az új összetevő-adattár neve. A szkript véletlenszerű nevet hoz létre az adattár számára, ha nincs megadva.
ArtifactRepositoryDisplayName Megjelenítendő név, amely megjelenik a labor összetevő-adattárának listájában.
RepositoryUri Az összetevő-adattár URI-ja, amelyet korábban másolt.
RepositoryBranch Az összetevőket tartalmazó adattárág. Az alapértelmezett érték main.
FolderPath Az összetevőket tartalmazó mappa. Az alapértelmezett érték a következő: /Artifacts.
PersonalAccessToken Biztonsági jogkivonat a korábban másolt adattár eléréséhez.
SourceType Azt, hogy az összetevő-adattár VSOGit (Azure-adattár) vagy GitHub-adattár-e.

Az adattárnak egy belső névre van szüksége az azonosításhoz, amely eltér az Azure Portal megjelenítendő nevéétől. Az Azure Portal használatakor nem látja a belső nevet, de az Azure REST API-k vagy az Azure PowerShell használatakor is megjelenik. A szkript véletlenszerű nevet hoz létre, ha az üzembe helyezési parancs nem ad meg egyet.

#Set artifact repository name, if not set by user
if ($ArtifactRepositoryName -eq $null){
    $ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}

PowerShell-parancsok

A szkript a következő PowerShell-parancsokat használja:

Parancs Jegyzetek
Get-AzResource Lekéri a labor adatait, például a helyét. Az összetevő-adattár forrását ugyanabban a helyen és ugyanabban az erőforráscsoportban hozza létre, mint a labor.
New-AzResource Hozzáadja az Azure-erőforrást. Az összetevő-adattárak hozzáadásához nincs külön parancs. Ennek a parancsmagnak vagy a párnak vagy ResourceType ResourceName a ResourceId párnak ismernie kell a létrehozandó erőforrás típusát. Az aktuális szkript a és ResourceType a ResourceName párot használja.

Az erőforrásnév és az erőforrástípus információinak felderítésére jó módszer az Azure REST API Browser webhelyének használata. A DevTest Labs összetevőforrásai REST API-kat mutatnak a DevTest Labs-összetevőforrások létrehozásához és kezeléséhez. Az aktuális szkript a következő erőforrás-azonosítót használja:

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}

Az erőforrástípus az URI után providers minden, a szögletes zárójelben lévő elemek kivételével. Az erőforrás neve minden, ami a kapcsos zárójelekben szerepel. Ha egynél több elemet használ az erőforrásnévhez, minden elemet különítse el perjellel:

$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName

A PowerShell-parancsprogram futtatása

Futtassa a PowerShell-szkriptet, és helyettesítse a saját értékeit a példaértékekhez a következőben LabName: , LabResourceGroupName, ArtifactRepositoryName, RepositoryUri, PersonalAccessTokenés 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"

Következő lépések