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.
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:
En Azure Portal, vaya al recurso de laboratorio de DevTest Labs.
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.
En la página Mis entornos, seleccione Agregar en la barra de herramientas.
En la página Elegir una base, seleccione la plantilla de entorno de ARM que se usará:
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
yGEN-PASSWORD
.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.
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.
Para supervisar el estado de aprovisionamiento, vuelva a la página Mis entornos del 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.
Cuando el entorno esté listo, puede expandir el entorno en la lista Mis entornos para ver las máquinas virtuales aprovisionadas por la plantilla:
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:
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:
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:
Durante el proceso para crear un recurso de DevTest Labs, seleccione la pestaña Configuración básica.
Establezca la opción Entornos públicos en Activados:
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:
En el Azure Portal, vaya al recurso de laboratorio de DevTest Labs donde desea establecer el acceso al entorno público.
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.
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.
En la página Entornos públicos, establezca la opción Habilitar entornos públicos para este laboratorio para Sí:
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:
En la página Entornos públicos, establezca la opción Habilitar entornos públicos para este laboratorio en Sí.
Anule la selección de entornos específicos de la lista para que no estén disponibles para los usuarios del laboratorio:
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:
En el Azure Portal, vaya al recurso de laboratorio de DevTest Labs donde desea ajustar las asignaciones de roles de usuario.
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.
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.
En la página Configuración del laboratorio, establezca la opción Acceso al entorno>Derechos de usuario del grupo de recursos en Colaborador:
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:
Almacenar la plantilla de entorno de ARM en un repositorio de GitHub.
Agregar el repositorio de plantillas de ARM de GitHub al laboratorio.
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."
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"
Ejecute el script.