Creación de entornos de Azure DevTest Labs a partir de plantillas de ARM

En este artículo, aprenderá a crear entornos de Azure DevTest Labs a partir de plantillas de Azure Resource Manager (ARM). Puede usar entornos de DevTest Labs para aprovisionar laboratorios de forma sencilla y coherente con varias máquinas virtuales (VM) o recursos de plataforma como servicio (PaaS). Por ejemplo, para crear un laboratorio para una aplicación web de varios niveles o una granja de servidores de SharePoint.

Los recursos de un entorno comparten el mismo ciclo de vida y se pueden administrar de forma conjunta. Puede realizar un seguimiento del coste de los entornos de laboratorio y los recursos de PaaS, del mismo forma que realiza el seguimiento de los costes de las máquinas virtuales de laboratorio individuales.

Puede configurar Azure DevTest Labs para usar plantillas de ARM de un repositorio de Git público o privado. Obtenga más información sobre los repositorios de plantillas para laboratorios.

Diagrama en el que se muestra cómo crear un entorno con Azure DevTest Labs a partir de una plantilla de ARM en un repositorio de plantillas público o personalizado.

Si quiere usar una plantilla de ARM para crear un recurso de Azure DevTest Labs, consulte Inicio rápido: Uso de una plantilla de ARM para crear un laboratorio en DevTest Labs.

Limitaciones

Tenga en cuenta estas limitaciones al crear laboratorios a partir de plantillas de ARM en DevTest Labs:

  • El apagado automático de las máquinas virtuales no se aplica a los recursos de PaaS.

  • No todas las directivas de laboratorio se evalúan al implementar plantillas de ARM. Las directivas que no se evalúan incluyen: el número de máquinas virtuales por usuario de laboratorio, el número de máquinas virtuales prémium por usuario y el número de escritorios prémium por usuario. Por ejemplo, la directiva de laboratorio podría limitar los usuarios a solo cinco máquinas virtuales cada uno. Sin embargo, un usuario puede implementar una plantilla de entorno de ARM que cree docenas de máquinas virtuales.

Creación de entornos a partir de plantillas

Puede crear un entorno a partir de un repositorio de plantillas público de Azure DevTest Labs o puede agregar un repositorio de plantillas privado a su laboratorio.

Aprenda a configurar entornos para el laboratorio. Por ejemplo, cómo configurar los repositorios de plantillas, habilitar o deshabilitar entornos públicos y seleccionar plantillas específicas para crear laboratorios.

Para crear un entorno a partir de una plantilla:

  1. En Azure Portal, seleccione el recurso de laboratorio.

  2. En la página del laboratorio Información general, seleccione Añadir desde la barra de herramientas superior.

  3. En la página Elegir una base, seleccione la plantilla de entorno de ARM que se usará. Las plantillas de entorno disponibles aparecen en primer lugar en la lista de bases.

    Captura de pantalla que muestra las plantillas de entorno público.

  4. En la pantalla Agregar, escriba un Nombre de entorno y rellene los demás campos de entrada.

    El número y el tipo de campos de entrada se definen en la plantilla de ARM. Según sea necesario, escriba los valores de los campos de entrada que el archivo azuredeploy.parameters.json de plantilla define como en blanco o predeterminado.

    • Para los parámetros secure string, puede usar secretos de Azure Key Vault. Para obtener información sobre cómo almacenar secretos en un almacén de claves y utilizarlos al crear recursos de laboratorio, consulte Store secrets in Azure Key Vault (almacenamiento de secretos en Azure Key Vault).

    • En los archivos de plantilla de ARM, los valores de parámetro GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEY y GEN-PASSWORD generan campos de entrada en blanco para que los usuarios los introduzcan.

    Captura de pantalla que muestra el panel Agregar para un entorno de SharePoint.

  5. Seleccione Add (Agregar) para crear el entorno.

    El entorno inicia el aprovisionamiento inmediatamente. Puede ver el estado de aprovisionamiento en Mis entornos en la página Información general del laboratorio. El aprovisionamiento de un entorno puede tardar mucho tiempo.

  6. Una vez finalizada la creación del entorno, expanda el entorno en Mis entornos para ver la lista de máquinas virtuales y otros recursos que aprovisionó la plantilla.

    Captura de pantalla que muestra la lista de máquinas virtuales en un entorno.

    La implementación crea un nuevo grupo de recursos para aprovisionar todos los recursos de entorno definidos por la plantilla de ARM. Seleccione el nombre del entorno en Mis entornos para ver el grupo de recursos y todos los recursos creados por la plantilla.

    Captura de pantalla que muestra el grupo de recursos con todos los recursos del entorno.

  7. Seleccione una máquina virtual de entorno para ver las acciones disponibles para la máquina virtual, como la administración de la configuración, las programaciones y las directivas.

    Captura de pantalla que muestra las acciones disponibles para la máquina virtual de un entorno.

Repositorios de plantillas de entorno

Con Azure DevTest Labs, puede crear entornos a partir de plantillas de ARM. Las plantillas de ARM pueden proceder de dos orígenes:

Sugerencia

Para sugerir revisiones o adiciones a las plantillas públicas, envíe solicitudes de incorporación de cambios en el repositorio de plantillas público de GitHub de código abierto.

Configuración del entorno público para el laboratorio

Puede configurar el laboratorio para habilitar el uso de plantillas desde el repositorio de plantillas público. Si habilita el repositorio de plantillas público para un laboratorio, los usuarios pueden crear rápidamente un entorno seleccionando estas plantillas directamente en Azure Portal, de forma similar a cómo crean una máquina virtual en un laboratorio.

Además, puede seleccionar qué plantillas están disponibles para que los usuarios creen entornos a partir de ellas.

Habilitación de entornos públicos al crear un laboratorio

Para habilitar el acceso al repositorio de entorno público para un laboratorio al crear un laboratorio:

  1. Seleccione la pestaña Configuración básica al crear un recurso de DevTest Labs.

  2. Seleccione Activado en el campo Entornos públicos.

    Captura de pantalla que muestra la habilitación de entornos públicos para un laboratorio nuevo.

Habilitación o deshabilitación de entornos públicos para laboratorios existentes

En el caso de los laboratorios existentes o de los laboratorios que cree con una plantilla de ARM, es posible que los entornos públicos no estén habilitados. Para habilitar o deshabilitar el repositorio de entornos públicos para laboratorios existentes:

  1. En Azure Portal, seleccione el recurso de laboratorio.

  2. Seleccione Configuración y directivas en el panel de navegación izquierdo.

  3. Seleccione Entornos públicos en Bases para máquinas virtuales en el panel de navegación izquierdo.

  4. Seleccione o No para Habilitar entornos públicos para este laboratorio, a fin de habilitar o deshabilitar los entornos públicos para el laboratorio.

  5. Seleccione Guardar.

Selección de plantillas de entorno público disponibles

Al habilitar entornos públicos, todas las plantillas de entorno del repositorio están disponibles para crear entornos. Para permitir solo entornos específicos para un laboratorio:

  1. En Azure Portal, seleccione el recurso de laboratorio.

  2. Seleccione Configuración y directivas en el panel de navegación izquierdo.

  3. Seleccione Entornos públicos en Bases para máquinas virtuales en el panel de navegación izquierdo.

  4. Anule la selección de entornos específicos en la lista para que no estén disponibles para los usuarios del laboratorio y, a continuación, seleccione Guardar.

    Captura de pantalla en la que se muestra la lista de entornos públicos para un laboratorio.

Configuración de los permisos de usuario del entorno

En los entornos, los usuarios del laboratorio tienen un rol de Lector de forma predeterminada, y no pueden cambiar los recursos de un entorno. Por ejemplo, los usuarios no pueden detener ni iniciar recursos. Para proporcionar a los usuarios del laboratorio el rol Colaborador para permitirles editar los recursos del entorno:

  1. En Azure Portal, seleccione el recurso de laboratorio.

  2. Seleccione Configuración y directivas en el panel de navegación izquierdo.

  3. Seleccione Configuración del laboratorio en el panel de navegación izquierdo.

  4. En Acceso al entorno>Derechos de usuario del grupo de recursos, seleccione Colaborador y después Guardar.

    Captura de pantalla que muestra la configuración de los permisos de colaborador del usuario de laboratorio.

Automatización de la creación de entornos

Si necesita crear varios entornos para escenarios de desarrollo o pruebas, puede automatizar la implementación del entorno con Azure PowerShell o CLI de Azure.

Puede usar el comando CLI de Azure az deployment group create parar crear entornos. Para más información, consulte Implementación de recursos con plantillas de Resource Manager y la CLI de Azure.

Los propietarios y administradores del laboratorio pueden usar Azure PowerShell para crear máquinas virtuales y entornos a partir de plantillas de ARM.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Para automatizar la implementación de plantillas de entorno de ARM con Azure PowerShell:

  1. Es necesario disponer de una plantilla de entorno de ARM insertada en un repositorio de GITy el repositorio agregado al laboratorio.

  2. Guarde el siguiente script de PowerShell en su ordenador con el nombre deployenv.ps1. Este script llama a la plantilla de ARM para crear el entorno en el laboratorio.

    #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 Git repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to be passed 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 will be "-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 that has the 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 the 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 the 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."
    
  3. Ejecute el script con sus propios valores para reemplazar los valores de ejemplo para:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (carpeta de plantillas en el repositorio de GIT)
    • EnvironmentName
    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    

Pasos siguientes