Compartir vía


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). Puede usar este enfoque para crear un laboratorio para una aplicación web de varios niveles o una granja de servidores de SharePoint.

Los recursos de un entorno de DevTest Labs comparten el mismo ciclo de vida y puede administrarlos juntos. Puede realizar un seguimiento del costo de los entornos de laboratorio y los recursos de PaaS de la misma manera que realiza un seguimiento de los costos de las máquinas virtuales de laboratorio individuales.

Puede configurar Azure DevTest Labs para usar plantillas de ARM de un repositorio de GitHub público o privado. En el diagrama siguiente se muestra cómo crear un entorno con DevTest Labs a partir de una plantilla de ARM en un repositorio de plantillas público o personalizado. La sección repositorios de plantillas para laboratorios describe este proceso con detalle.

Diagrama que muestra cómo crear un entorno con DevTest Labs mediante una plantilla de ARM en un repositorio de plantillas.

Nota:

Se recomienda encarecidamente Azure Deployment Environments (ADE) para crear entornos. ADE permite a los desarrolladores implementar rápidamente la infraestructura de aplicaciones mediante plantillas basadas en proyectos, lo que garantiza entornos coherentes y seguros para los equipos de desarrollo.

Para más información sobre Azure Deployment Environments, vea Documentación de Azure Deployment Environments.

Requisitos previos

  • Resulta útil tener experiencia en la configuración de entornos de laboratorio en DevTest Labs. Si no está familiarizado con los laboratorios, empiece por revisar las instrucciones de la sección Configuración del entorno público. Debe comprender cómo configurar repositorios de plantillas, habilitar o deshabilitar entornos públicos y seleccionar plantillas para crear laboratorios.

Limitaciones

Hay algunas limitaciones que debe tener en cuenta al crear laboratorios a partir de plantillas de ARM en DevTest Labs:

  • DevTest Labs no admite la máquina virtual (VM) característica de apagado automático para los recursos PaaS creados a partir de plantillas de ARM.

  • DevTest Labs no evalúa todas las directivas de laboratorio al implementar plantillas de ARM. Las directivas siguientes no se evalúan:

    • Número de máquinas virtuales por usuario de laboratorio
    • Número de máquinas virtuales premium por usuario
    • Número de escritorios premium por usuario

    Supongamos que tiene una directiva de laboratorio que permite a cada usuario crear un máximo de cinco máquinas virtuales. En DevTest Labs, cada 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.

Cree un entorno a partir de una plantilla siguiendo estos pasos:

  1. En Azure Portal, vaya al recurso de laboratorio de DevTest Labs.

  2. En la página Información general del laboratorio, expanda la sección Mi laboratorio en el menú de la izquierda y seleccione Mis entornos.

  3. En la página Mis entornos, seleccione Agregar en la barra de herramientas.

  4. En la página Elegir una base, seleccione la plantilla de entorno de ARM que se usará:

    Captura de pantalla que muestra las plantillas de ARM del entorno público disponibles para el recurso de laboratorio de DevTest Labs.

  5. En el panel Agregar, escriba un Nombre del entorno y configure los demás parámetros.

    El tipo y el número de parámetros son únicos para cada plantilla de ARM. Un asterisco rojo (*) indica un valor obligatorio. Debe especificar valores para todas las configuraciones necesarias.

    Algunos valores de parámetro del archivo de plantilla de ARM (azuredeploy.parameters.json) generan campos de configuración en blanco en el panel Agregar (sin valor predeterminado). Estos valores de parámetro incluyen GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEY y GEN-PASSWORD.

    Captura de pantalla que muestra el panel Agregar con las opciones a configurar para un entorno de SharePoint.

    Para parámetros de cadena segura como contraseñas, puede usar secretos de Azure Key Vault. Para obtener información sobre cómo almacenar secretos en un almacén de claves y usarlos al crear recursos de laboratorio, consulte Almacenamiento de secretos en Azure Key Vault.

  6. Seleccione Add (Agregar) para crear el entorno. El entorno inicia el aprovisionamiento inmediatamente.

    Nota:

    El proceso para aprovisionar un entorno puede tardar mucho tiempo. El tiempo total depende del número de instancias de servicio, máquinas virtuales y otros recursos que DevTest Labs crea como parte del entorno de laboratorio.

  7. Para supervisar el estado de aprovisionamiento, vuelva a la página Mis entornos del laboratorio:

    Captura de pantalla que muestra cómo ver el estado de aprovisionamiento del entorno de laboratorio.

    Mientras el aprovisionamiento está en curso, el estado del entorno es Crear. Una vez completado el aprovisionamiento, el estado cambia a Listo. Puede seleccionar Actualizar en la barra de herramientas para actualizar la vista de página y comprobar el estado actual.

  8. Cuando el entorno esté listo, puede expandir el entorno en la lista Mis entornos para ver las máquinas virtuales aprovisionadas por la plantilla:

    Captura de pantalla que muestra la lista de máquinas virtuales creadas para el entorno recién aprovisionado.

  9. 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 de entorno, incluidas las máquinas virtuales, los discos, la red virtual, etc.

  10. Seleccione una máquina virtual de entorno en la lista para ver las acciones disponibles para la máquina virtual, como administrar la configuración, las programaciones y las directivas:

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

Explorar repositorios de plantillas

Las plantillas de ARM para crear entornos en DevTest Labs están disponibles en dos orígenes:

  • DevTest Labs tiene un repositorio de plantillas de ARM público que incluye plantillas de entorno autenticadas previamente para Azure Web Apps, un clúster de Azure Service Fabric y granjas de SharePoint de desarrollo. Las plantillas tienen parámetros de entrada mínimos para una experiencia de introducción sin problemas con los recursos de PaaS. Puede usar las plantillas de entorno público tal como están o personalizarlas para que se adapten a sus necesidades. También puede sugerir revisiones o adiciones a una plantilla pública mediante el envío de una solicitud de incorporación de cambios en el repositorio de plantillas públicas de GitHub.

  • Puede almacenar plantillas de entorno en sus propios repositorios públicos o privados de GitHub y agregar esos repositorios a su laboratorio para que las plantillas estén disponibles para todos los usuarios del laboratorio.

Configuración del entorno público

Puede configurar el laboratorio para habilitar el uso de plantillas desde el repositorio de GitHub de plantilla pública. Al habilitar el repositorio de plantillas públicas para un laboratorio, los usuarios pueden crear rápidamente un entorno de laboratorio seleccionando estas plantillas directamente en Azure Portal, de forma similar a cómo se crea una máquina virtual en un laboratorio. Además, puede seleccionar qué plantillas están disponibles para que los usuarios creen entornos de laboratorio.

Establecimiento del acceso al entorno público para el nuevo laboratorio

Configure el acceso al repositorio del entorno público para un nuevo laboratorio siguiendo estos pasos:

  1. Durante el proceso para crear un recurso de DevTest Labs, seleccione la pestaña Configuración básica.

  2. Establezca la opción Entornos públicos en Activados:

    Captura de pantalla que muestra cómo habilitar repositorios de entorno público para un laboratorio durante el proceso de creación del laboratorio.

Establecimiento del acceso al entorno público 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. Puede controlar el acceso a repositorios de entorno público para cualquier laboratorio existente con la opción Habilitar entornos públicos para este laboratorio.

Siga estos pasos para habilitar o deshabilitar el acceso al repositorio del entorno público para cualquier laboratorio existente:

  1. En el Azure Portal, vaya al recurso de laboratorio de DevTest Labs donde desea establecer el acceso al entorno público.

  2. En la página Información general del laboratorio, expande la sección Configuración en el menú izquierdo y selecciona Configuración y directivas.

  3. En la página Configuración y directivas, expanda la sección Bases de máquinas virtuales en el menú de la izquierda y seleccione Entornos públicos.

  4. En la página Entornos públicos, establezca la opción Habilitar entornos públicos para este laboratorio para :

    Captura de pantalla que muestra cómo habilitar todos los repositorios de entorno público para un recurso de laboratorio existente.

  5. Seleccione Guardar.

Selección de plantillas de entorno público disponibles

Al establecer la opción Habilitar entornos públicos para este laboratorio para controlar el acceso a entornos públicos para el laboratorio, todas las plantillas de entorno se seleccionan de forma predeterminada. La opción permite o no permite el acceso a todos los entornos en función de la selección. Puede usar las casillas de selección de la lista para especificar a qué entornos pueden acceder los usuarios.

Siga estos pasos para permitir el acceso solo a entornos específicos para el laboratorio:

  1. En la página Entornos públicos, establezca la opción Habilitar entornos públicos para este laboratorio en .

  2. Anule la selección de entornos específicos de la lista para que no estén disponibles para los usuarios del laboratorio:

    Captura de pantalla que muestra cómo anular la selección de repositorios de entorno público para que un laboratorio deshabilite el acceso para los usuarios.

  3. Seleccione Guardar.

Configuración de los permisos de usuario del entorno

De forma predeterminada, a los usuarios del laboratorio se les asigna el rol Lector en repositorios de entorno público. No pueden cambiar los recursos del entorno y no pueden detener ni iniciar recursos.

Siga estos pasos para proporcionar a los usuarios de laboratorio el rol de Colaborador y permitirles editar los recursos del entorno:

  1. En el Azure Portal, vaya al recurso de laboratorio de DevTest Labs donde desea ajustar las asignaciones de roles de usuario.

  2. En la página Información general del laboratorio, expande la sección Configuración en el menú izquierdo y selecciona Configuración y directivas.

  3. En la página Configuración y directivas, expanda la sección Configuración del menú de la izquierda y seleccione Configuración del laboratorio.

  4. En la página Configuración del laboratorio, establezca la opción Acceso al entorno>Derechos de usuario del grupo de recursos en Colaborador:

    Captura de pantalla que muestra cómo establecer permisos del rol Colaborador para los usuarios del laboratorio en DevTest Labs.

  5. Seleccione Guardar.

Automatizar 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 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. También puede automatizar la implementación a través de la CLI de Azure mediante el comando az deployment group create para crear entornos. Para más información, consulte Implementación de recursos con plantillas de ARM y la CLI de Azure.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. 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.

Automatice la implementación de plantillas de entorno de ARM con Azure PowerShell mediante estos pasos:

  1. Almacenar la plantilla de entorno de ARM en un repositorio de GitHub.

  2. Agregar el repositorio de plantillas de ARM de GitHub al laboratorio.

  3. Guarde el siguiente script de PowerShell en el equipo con el nombre de archivo 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 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. Actualice los siguientes marcadores de posición en el script con sus propios valores de laboratorio:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (carpeta de plantilla en el repositorio de GitHub)
    • EnvironmentName

    En el fragmento de código siguiente se muestra cómo ejecutar el script con valores de parámetro de ejemplo:

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