Uso de plantillas de ARM para crear entornos de DevTest Labs

Las granjas de servidores de SharePoint o las aplicaciones web de niveles múltiples de Azure usan varias máquinas virtuales (VM) con recursos de plataforma como servicio (PaaS) instalados. Puede aprovisionar estos recursos de PaaS y las máquinas virtuales de infraestructura como servicio (IaaS) en Azure DevTest Labs mediante plantillas de entorno Azure Resource Manager (ARM).

Una plantilla de Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define la infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa. En la sintaxis declarativa, se describe la implementación deseada sin escribir la secuencia de comandos de programación para crearla.

Las plantillas de entorno de ARM de varias máquinas virtuales usan el tipo de recurso Microsoft.Compute/virtualmachines. Los usuarios del laboratorio pueden usar las plantillas para implementar de forma fácil y coherente varias máquinas virtuales con recursos preinstalados como un único entorno. Las máquinas virtuales creadas con este tipo de recurso aparecen en sus entornos en la lista del laboratorio Mis entornos.

Screenshot that shows V Ms in an environment.

Puede configurar DevTest Labs para cargar plantillas de entorno de ARM directamente desde repositorios de control de código fuente de Git públicos o privados. A continuación, los usuarios del laboratorio pueden crear entornos seleccionando las plantillas de Azure Portal, del mismo modo que seleccionan imágenes base de máquina virtual individuales para crear máquinas virtuales.

Las máquinas virtuales del mismo entorno comparten el mismo ciclo de vida y los usuarios del laboratorio pueden administrarlas juntas. 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.

Para obtener más información acerca de las ventajas del uso de plantillas de ARM para implementar, actualizar o eliminar muchos recursos de laboratorio en una sola operación, consulte las Ventajas de usar plantillas de Resource Manager.

Tenga en cuenta estas limitaciones cuando use plantillas de entornos 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 premium 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.

Uso de repositorios de plantillas públicos y privados

Azure DevTest Labs un repositorio de plantillas de ARM público que incluye plantillas de entorno preautorizado para Azure Web Apps, un clúster de Azure Service Fabric y granjas de servidores 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 y como están o personalizarlas para que se adapten a sus necesidades. 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 GitHub de código abierto

También puede almacenar plantillas de entorno en sus propios repositorios de GIT y conectar dichos repositorios a su laboratorio para hacer que sus plantillas estén disponibles para todos los usuarios del laboratorio.

Habilitación y configuración de entornos públicos

Los usuarios de DevTest Labs no tienen que conectarse al repositorio de plantillas públicas externamente para usar las plantillas de entorno. Puede habilitar y configurar el acceso de laboratorio al repositorio público para que los usuarios del laboratorio puedan acceder a las plantillas directamente desde Azure Portal.

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

Para habilitar el acceso al repositorio de entorno público para un laboratorio, asegúrese de que se haya seleccionado On en el campo entornos públicos al crear el laboratorio. El valor es On por defecto.

Screenshot that shows enabling public environments for a new lab.

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

Es posible que los laboratorios existentes y los que cree con algunas plantillas de ARM no tengan habilitados los entornos públicos. Para habilitar o deshabilitar el repositorio de entornos públicos para laboratorios existentes:

  1. Desde la página Información general del laboratorio en Azure Portal, seleccione Configuración y directivas en el panel de navegación izquierdo.
  2. En el panel Configuración y directivas, seleccione Entornos públicos en Bases para máquinas virtuales en el panel de navegación izquierdo.
  3. En Habilitar entornos públicos para este laboratorio,seleccione para habilitar o No para deshabilitar los entornos públicos.

Selección de plantillas de entorno público disponibles

Si habilita entornos públicos, todas las plantillas de entorno del repositorio están disponibles de forma predeterminada. Anule la selección de entornos específicos para que no estén disponibles para los usuarios del laboratorio.

Screenshot that shows the public environments page.

Creación de entornos a partir de plantillas

Una vez que habilite el repositorio de entorno público o agregue un repositorio de plantillas privado al laboratorio, los usuarios del laboratorio pueden usar las plantillas de repositorio para crear entornos.

Para crear un entorno a partir de una plantilla:

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

  2. 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.

    Screenshot that shows public environment templates.

  3. En la pantalla Agregar, escriba un nombre de entorno. La plantilla de ARM define el resto de los campos de entrada. 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.

    Screenshot that shows the Add pane for a SharePoint environment.

  4. 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.

  5. Una vez creado el entorno, expanda el entorno en Mis entornos para ver la lista de máquinas virtuales que aprovisionó la plantilla.

    Screenshot that shows the list of V Ms under an environment.

    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.

    Screenshot that shows the resource group with all the environment resources.

  6. 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.

    Screenshot that shows available actions for an environment VM.

Configuración de los permisos de usuario del entorno

En los entornos, los usuarios del laboratorio tienen un rol de Lector de forma predeterminada, por lo que 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 que puedan editar los recursos del entorno:

  1. En la página Información general del laboratorio, seleccione Configuración y directivas en el panel de navegación izquierdo.

  2. En la página Configuración y directivas, seleccione Configuración del laboratorio en el panel de navegación izquierdo.

  3. En el panel Configuración del laboratorio, en Acceso de entorno>Derechos de usuario de grupo de recursos, seleccione Colaborador y luego seleccione Guardar.

    Screenshot that shows configuring lab user Contributor permissions.

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:

En este artículo se usa el módulo Az de PowerShell, que es el módulo de PowerShell que se recomienda para interactuar con Azure. Para empezar a trabajar con el módulo Az de PowerShell, 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.

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