Condividi tramite


Creare ambienti di Azure DevTest Labs da modelli di Resource Manager

Questo articolo illustra come creare ambienti di Azure DevTest Labs da modelli di Azure Resource Manager (ARM). È possibile usare gli ambienti DevTest Labs per eseguire facilmente e in modo coerente il provisioning dei lab con più macchine virtuali o risorse PaaS (Platform-as-a-Service). È possibile usare questo approccio per creare un lab per un'applicazione Web multilivello o una farm di SharePoint.

Le risorse in un ambiente DevTest Labs condividono lo stesso ciclo di vita ed è possibile gestirle insieme. È possibile tenere traccia del costo degli ambienti lab e delle risorse PaaS nello stesso modo in cui si tiene traccia dei costi per le singole macchine virtuali del lab.

È possibile configurare Azure DevTest Labs per l'uso di modelli Resource Manager da un repository GitHub pubblico o privato. Il diagramma seguente illustra come creare un ambiente con DevTest Labs da un modello di Resource Manager in un repository di modelli pubblico o personalizzato. La sezione Repository di modelli per lab descrive in dettaglio questo processo.

Diagramma che illustra come creare un ambiente con DevTest Labs usando un modello di Resource Manager in un repository di modelli.

Nota

Gli ambienti di distribuzione di Azure (ADE) sono altamente consigliati per la creazione di ambienti. AdE consente agli sviluppatori di distribuire rapidamente l'infrastruttura di app usando modelli basati su progetti, garantendo ambienti coerenti e sicuri per i team di sviluppo.

Per altre informazioni sugli ambienti di distribuzione di Azure, vedere la documentazione degli ambienti di distribuzione di Azure.

Prerequisiti

  • È utile avere esperienza nella configurazione degli ambienti lab in DevTest Labs. Se non si ha familiarità con i lab, vedere le istruzioni nella sezione Configurare le impostazioni dell'ambiente pubblico. È necessario comprendere come configurare i repository dei modelli, abilitare o disabilitare gli ambienti pubblici e selezionare i modelli per creare lab.

Limiti

Quando si creano lab da modelli di Resource Manager in DevTest Labs, tenere presenti alcune limitazioni:

  • DevTest Labs non supporta la funzionalità di arresto automatico delle macchine virtuali per le risorse PaaS create dai modelli ARM.

  • DevTest Labs non valuta tutti i criteri lab quando si distribuiscono modelli di Resource Manager. I criteri seguenti non vengono valutati:

    • Numero di macchine virtuali per utente del lab
    • Numero di macchine virtuali premium per utente
    • Numero di dischi Premium per utente

    Si supponga di avere un criterio lab che consenta a ogni utente di creare un massimo di cinque macchine virtuali. In DevTest Labs ogni utente può distribuire un modello di ambiente ARM che crea decine di macchine virtuali.

Creare ambienti da modelli

È possibile creare un ambiente dal repository di modelli pubblici di Azure DevTest Labs oppure aggiungere un repository di modelli privato al lab.

Creare un ambiente da un modello seguendo questa procedura:

  1. Nel portale di Azure passare alla risorsa lab di DevTest Labs.

  2. Nella pagina Panoramica del lab espandere la sezione Lab personale nel menu a sinistra e selezionare Ambienti personali.

  3. Nella pagina Ambienti personali selezionare Aggiungi sulla barra degli strumenti.

  4. Nella pagina Scegli una base selezionare il modello di ambiente ARM da usare:

    Screenshot che mostra i modelli Resource Manager dell'ambiente pubblico disponibili per la risorsa lab di DevTest Labs.

  5. Nel riquadro Aggiungi immettere un Nome ambiente e configurare le altre impostazioni dei parametri.

    Il tipo e il numero di parametri sono univoci per ogni modello di Resource Manager. Un asterisco rosso (*) indica un'impostazione obbligatoria. È necessario immettere i valori per tutte le impostazioni richieste.

    Alcuni valori dei parametri nel file di modello ARM (azuredeploy.parameters.json) producono campi di impostazione vuoti nel riquadro Aggiungi (nessun valore predefinito). Questi valori dei parametri includono GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEY e GEN-PASSWORD.

    Screenshot che mostra il riquadro Aggiungi con le impostazioni da configurare per un ambiente SharePoint.

    Per i parametri a stringa sicura come le password, è possibile usare i segreti di Azure Key Vault. Per informazioni sull'archiviazione dei segreti in un insieme di credenziali delle chiavi e sull'uso durante la creazione delle risorse di lab, vedere Archiviare segreti in Azure Key Vault.

  6. Selezionare Aggiungi per creare l'ambiente. L'ambiente avvia immediatamente il provisioning.

    Nota

    Il processo di provisioning di un ambiente può richiedere molto tempo. Il tempo totale dipende dal numero di istanze del servizio, macchine virtuali e altre risorse create da DevTest Labs come parte dell'ambiente lab.

  7. Per monitorare lo stato del provisioning, tornare alla pagina Ambienti personali del lab:

    Screenshot che mostra come visualizzare lo stato del provisioning per l'ambiente lab.

    Durante il provisioning è in corso, lo stato dell'ambiente è In creazione. Al termine del provisioning, lo stato cambierà in Pronto. È possibile selezionare Aggiorna sulla barra degli strumenti per aggiornare la visualizzazione pagina e controllare lo stato corrente.

  8. Quando l'ambiente è pronto, è possibile espandere l'ambiente nell'elenco Ambienti personali per visualizzare le macchine virtuali di cui è stato effettuato il provisioning dal modello:

    Screenshot che mostra l'elenco delle macchine virtuali create per l'ambiente appena sottoposto a provisioning.

  9. La distribuzione crea un nuovo gruppo di risorse per effettuare il provisioning di tutte le risorse di ambiente definite dal modello di Resource Manager. Selezionare il nome dell'ambiente nell'elenco Ambienti personali per visualizzare il gruppo di risorse e tutte le risorse create dal modello:

    Screenshot che mostra il gruppo di risorse con tutte le risorse dell'ambiente, inclusi macchine virtuali, dischi, rete virtuale e altro ancora.

  10. Selezionare una macchina virtuale dell'ambiente nell'elenco per visualizzare le azioni disponibili per quest'ultima, ad esempio la gestione della configurazione, delle pianificazioni e dei criteri:

    Screenshot che mostra le azioni disponibili per la macchina virtuale dell'ambiente selezionata.

Esplorare i repository di modelli

I modelli di Resource Manager per la creazione di ambienti in DevTest Labs sono disponibili da due origini:

Configurare le impostazioni dell'ambiente pubblico

È possibile configurare il lab per abilitare l'uso di modelli dal repository GitHub del modello pubblico. Quando si abilita il repository di modelli pubblici per un lab, gli utenti possono creare rapidamente un ambiente lab selezionando questi modelli direttamente nel portale di Azure, in modo analogo a come creano una macchina virtuale in un lab. Inoltre, è possibile selezionare i modelli disponibili con cui gli utenti possono creare ambienti lab.

Impostare l'accesso all'ambiente pubblico per il nuovo lab

Configurare l'accesso al repository dell'ambiente pubblico per un nuovo lab seguendo questa procedura:

  1. Durante il processo per creare una risorsa di DevTest Labs, selezionare la scheda Impostazioni di base.

  2. Impostare l'opzione Ambienti pubblici su On:

    Screenshot che mostra come abilitare i repository dell'ambiente pubblico per un lab durante il processo di creazione del lab.

Impostare l'accesso all'ambiente pubblico per i lab esistenti

Per i lab esistenti o i lab creati con un modello di Resource Manager, gli ambienti pubblici potrebbero non essere abilitati. È possibile controllare l'accesso ai repository dell'ambiente pubblico per qualsiasi lab esistente con l'opzione Abilita ambienti pubblici per questo lab.

Seguire questa procedura per abilitare o disabilitare l'accesso al repository dell'ambiente pubblico per qualsiasi lab esistente:

  1. Nel portale di Azure passare alla risorsa lab di DevTest Labs in cui si vuole configurare l'accesso agli ambienti pubblici.

  2. Nella pagina Panoramica del lab espandere la sezione Impostazioni nel menu a sinistra e selezionare Configurazione e criteri.

  3. Nella pagina Configurazione e criteri espandere la sezione Basi delle macchine virtuali nel menu a sinistra e selezionare Ambienti pubblici.

  4. Nella pagina Ambienti pubblici, impostare l'opzione Abilita ambienti pubblici per questo lab su :

    Screenshot che mostra come abilitare tutti i repository dell'ambiente pubblico per una risorsa lab esistente.

  5. Seleziona Salva.

Selezionare i modelli di ambienti pubblici disponibili

Quando si imposta l'opzione Abilita ambienti pubblici per questo lab per controllare l'accesso agli ambienti pubblici per il lab, per impostazione predefinita vengono selezionati tutti i modelli di ambiente. L'impostazione dell'opzione consente o nega l'accesso a tutti gli ambienti in base alla selezione. È possibile usare le caselle di controllo di selezione nell'elenco per specificare gli ambienti a cui gli utenti possono accedere.

Seguire questa procedura per consentire l'accesso solo ad ambienti specifici per il lab:

  1. Nella pagina Ambienti pubblici, impostare l'opzione Abilita ambienti pubblici per questo lab su .

  2. Deselezionare ambienti specifici nell'elenco per renderli non disponibili per gli utenti del lab:

    Screenshot che mostra come deselezionare i repository dell'ambiente pubblico per un lab per disabilitare l'accesso per gli utenti.

  3. Seleziona Salva.

Configurare i diritti utente dell'ambiente

Per impostazione predefinita, agli utenti del lab viene assegnato il ruolo Lettore nei repository dell'ambiente pubblico. Non possono modificare le risorse dell'ambiente e non possono arrestare o avviare le risorse.

Usare la procedura seguente per concedere agli utenti del lab il ruolo Collaboratore e consentire loro di modificare le risorse dell'ambiente:

  1. Nel portale di Azure passare alla risorsa lab di DevTest Labs in cui si vogliono modificare le assegnazioni di ruolo utente.

  2. Nella pagina Panoramica del lab espandere la sezione Impostazioni nel menu a sinistra e selezionare Configurazione e criteri.

  3. Nella pagina Configurazione e criteri espandere la sezione Impostazioni nel menu a sinistra e selezionare Impostazioni lab.

  4. Nella pagina Impostazioni lab impostare l'opzione Accesso ambiente>Diritti utente gruppo di risorse su Collaboratore:

    Screenshot che mostra come impostare le autorizzazioni del ruolo Collaboratore per gli utenti del lab in DevTest Labs.

  5. Seleziona Salva.

Automatizza la creazione di ambienti

Se è necessario creare più ambienti per scenari di sviluppo o test, è possibile automatizzare la distribuzione dell'ambiente con Azure PowerShell o l'interfaccia della riga di comando di Azure.

I proprietari e gli amministratori dei lab possono usare Azure PowerShell per creare macchine virtuali e ambienti da modelli di Resource Manager. È anche possibile automatizzare la distribuzione tramite l'interfaccia della riga di comando di Azure usando il comando az deployment group create per creare ambienti. Per ulteriori informazioni, vedi Distribuire le risorse con i modelli di ARM e l’interfaccia della riga di comando di Azure.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Automatizzare la distribuzione di modelli di ambiente ARM con Azure PowerShell con questa procedura:

  1. Archiviare il modello di ambiente ARM in un repository GitHub.

  2. Aggiungere il repository di modelli di Resource Manager GitHub al lab.

  3. Salvare lo script di PowerShell seguente nel computer con il nome file deployenv.ps1. Questo script chiama il modello di Resource Manager per creare l'ambiente nel lab.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the template repository connected to the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the GitHub repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to pass to the template. Each parameter is prefixed with "-param_".
    # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName",
    # the string in $Params is "-param_TestVMName MyVMName".
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure, or comment out this statement to completely automate environment creation.
    Connect-AzAccount
    
    # Select the subscription for your lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get the user ID to use later in the script.
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get the lab location.
    $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName
    if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." }
    
    # Get information about the repository connected to your lab.
    $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
        -ResourceName $LabName `
        -ApiVersion 2016-05-15 `
        | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." }
    
    # Get information about the ARM template base for the environment.
    $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" `
        -ResourceName "$LabName/$($repository.Name)" `
        -ApiVersion 2016-05-15 `
        | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." }
    
    # Build the template parameters by using parameter names and values.
    $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name
    $templateParameters = @()
    
    # Extract the custom parameters from $Params and format them as name/value pairs.
    $Params | ForEach-Object {
        if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) {
            $name = $Matches[1]                
        } elseif ( $name ) {
            $templateParameters += @{ "name" = "$name"; "value" = "$_" }
            $name = $null #reset name variable
        }
    }
    
    # Create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Deploy the environment in your lab by using the New-AzResource command.
    New-AzResource -Location $Lab.Location `
        -ResourceGroupName $lab.ResourceGroupName `
        -Properties $templateProperties `
        -ResourceType 'Microsoft.DevTestLab/labs/users/environments' `
        -ResourceName "$LabName/$UserId/$EnvironmentName" `
        -ApiVersion '2016-05-15' -Force
    
    Write-Output "Environment $EnvironmentName completed."
    
  4. Aggiornare i segnaposto seguenti nello script con i valori del lab personalizzati:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (cartella del modello nel repository di GitHub)
    • EnvironmentName

    Il frammento di codice seguente illustra come eseguire lo script con valori di parametro di esempio:

    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    
  5. Eseguire lo script.