Integración de DevTest Labs en Azure Pipelines
Puede usar la extensión Azure DevTest Labs Tasks para integrar Azure DevTest Labs en las canalizaciones de integración y entrega continuas de Azure Pipelines (CI/CD). La extensión instala varias tareas en Azure Pipelines, entre las que se incluyen:
- Creación de una máquina virtual (VM)
- Crear una imagen personalizada a partir de una máquina virtual
- Eliminación de una máquina virtual
Estas tareas facilitan, por ejemplo, la implementación rápida de una máquina virtual de imagen maestra, ejecutan una tarea de prueba específica y, luego, eliminan la máquina virtual.
En este artículo se muestra cómo usar Azure DevTest Labs Tasks para crear e implementar una máquina virtual, crear una imagen personalizada y, a continuación, eliminar la máquina virtual, todo ello en una única canalización de versión. Normalmente, realizaría estas tareas por separado en sus propias canalizaciones de compilación, prueba e implementación.
Introducción a Azure DevTest Labs
¿Acaba de llegar a Azure? Cree una cuenta gratuita de Azure.
¿Ya está familiarizado con Azure? Cree el primer laboratorio y empiece a trabajar con Azure DevTest Labs en cuestión de minutos.
Requisitos previos
En Azure Portal, cree un laboratorio de DevTest Labs o utilice uno existente.
Regístrese o inicie sesión en su organización Azure DevOps Services y cree un proyecto o use un proyecto existente.
Instale la extensión Azure DevTest Labs Tasks desde Visual Studio Marketplace:
- Vaya a Azure DevTest Labs Tasks.
- Seleccione Obtener gratis.
- Seleccione su organización de Azure DevOps en la lista desplegable y, luego, Instalar.
Creación de una plantilla para compilar una máquina virtual de laboratorio
En primer lugar, construya una plantilla de Azure Resource Manager (ARM) que cree una máquina virtual de laboratorio a petición.
- En el laboratorio de Azure Portal, seleccione Agregar en la barra de menús superior.
- En la página Elegir una base, seleccione una imagen de Marketplace para la máquina virtual.
- En la pantalla Crear recurso de laboratorio, en Artefactos, seleccione Agregar o quitar artefactos.
- En la pantalla Agregar artefactos, busque winrmy seleccione la flecha situada junto a Configurar WinRM.
- En el panel Agregar artefacto, escriba un nombre de dominio completo (FQDN) para la máquina virtual, como
contosolab00000000000000.westus3.cloudapp.azure.com
. Seleccione Aceptar y, después, otra vez Aceptar. - Seleccione la pestaña Configuración avanzada y, para Dirección IP, seleccione Público.
Nota
Si usa el artefacto de WinRM con una dirección IP compartida, debe agregar una regla de traducción de direcciones de red (NAT) para asignar un puerto externo al puerto de WinRM. La regla NAT no es necesaria si crea la máquina virtual con una dirección IP pública. Para este tutorial, cree la máquina virtual con una dirección IP pública.
- Seleccione Ver plantilla de ARM.
- Copie el código de plantilla y guárdelo como un archivo denominado CreateVMTemplate.json en la rama del control de código fuente local.
- Inserte la plantilla en el sistema de control de código fuente del proyecto.
Creación de un script para obtener las propiedades de la máquina virtual
A continuación, cree un script para recopilar los valores que los pasos de la tarea, como Copia de archivos de Azure y PowerShell en máquinas de destino, usan para implementar aplicaciones en máquinas virtuales. Normalmente, usaría estas tareas para implementar sus propias aplicaciones en las máquinas virtuales de Azure. Las tareas requieren valores como el nombre del grupo de recursos de VM, la dirección IP y el nombre de dominio completo (FQDN).
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.
Guarde el siguiente script con un nombre como GetLabVMParams.ps1 y protéjalo en su sistema de control de código fuente del proyecto.
Param( [string] $labVmId)
$labVmComputeId = (Get-AzResource -Id $labVmId).Properties.ComputeId
# Get lab VM resource group name
$labVmRgName = (Get-AzResource -Id $labVmComputeId).ResourceGroupName
# Get the lab VM Name
$labVmName = (Get-AzResource -Id $labVmId).Name
# Get lab VM public IP address
$labVMIpAddress = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress
# Get lab VM FQDN
$labVMFqdn = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn
# Set a variable labVmRgName to store the lab VM resource group name
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"
# Set a variable labVMIpAddress to store the lab VM Ip address
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"
# Set a variable labVMFqdn to store the lab VM FQDN name
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"
Crear una canalización de versión en Azure Pipelines
A continuación, cree la canalización de versión en Azure Pipelines. Las tareas de canalización usan los valores que asignó a la máquina virtual cuando creó la plantilla de ARM.
- En la página del proyecto de Azure DevOps Services, seleccione Canalizaciones>Versiones en el panel de navegación de la izquierda.
- Selecciona Nueva canalización.
- En el panel Seleccionar una plantilla, elija Fase vacía.
- Cierre el panel Fase.
- En la página Nueva canalización de versión, seleccione la pestaña Variables.
- Seleccione Agregar, escriba los siguientes pares de Nombre y Valor y Agregar después de agregar cada uno de ellos.
- vmName: nombre de la máquina virtual que asignó en la plantilla ARM.
- userName: nombre de usuario para acceder a la máquina virtual.
- password: contraseña del nombre de usuario. Seleccione el icono de candado para ocultar y proteger la contraseña.
Agregar un artefacto
- En la página de nueva canalización de versión, en la pestaña Canalización, seleccione Agregar un artefacto.
- En el panel Agregar un artefacto, seleccione Azure Repo (Repositorio de Azure).
- En la lista Proyecto, seleccione el proyecto de DevOps.
- En la lista Origen (repositorio), seleccione el repositorio de origen.
- En la lista Rama predeterminada, seleccione la rama que quiere modificar.
- Seleccione Agregar.
Creación de una máquina virtual de DevTest Labs
El siguiente paso consiste en crear una máquina virtual de imagen maestra que se usará para futuras implementaciones. En este paso se usa la tarea Azure DevTest Labs Create VM (Crear VM de Azure DevTest Labs).
En la página de nueva canalización de versión, en la pestaña Canalización, seleccione el texto con hipervínculo en Fase 1.
En el panel izquierdo, seleccione el signo más + que aparece al lado de Trabajo de agente.
En Agregar tareas en el panel derecho, busque y seleccione Azure DevTest Labs Create VM (Crear VM de Azure DevTest Labs) y, a continuación, seleccione Agregar.
En el panel izquierdo, seleccione la tarea Create Azure DevTest Labs VM (Crear VM de Azure DevTest Labs).
En el panel de la derecha, rellene el formulario como se indica a continuación:
Suscripción del Administrador de recursos de Azure: seleccione su conexión o suscripción de servicio en la lista desplegable y, luego, Autorizar si es necesario.
Nota
Para más información sobre cómo crear una conexión de permisos más restringida a su suscripción de Azure, consulte Punto de conexión de servicio de Azure Resource Manager.
Laboratorio: seleccione el nombre del laboratorio de DevTest Labs.
Nombre de la máquina virtual: variable que especificó para el nombre de la máquina virtual: $vmName.
Plantilla: busque y seleccione el archivo de plantilla que ha registrado en el repositorio del proyecto.
Archivo de parámetros: si ha insertado un archivo de parámetros en el repositorio, vaya a él y selecciónelo.
Parameter Overrides (Invalidaciones de parámetros): escriba
-newVMName '$(vmName)' -userName '$(userName)' -password '$(password)'
.Despliegue Variables de salida y, en Nombre de la referencia, escriba la variable para el identificador de la máquina virtual del laboratorio creado. Escribiremos vm como Nombre de referencia para simplificar. labVmId será un atributo de esta variable y se hará referencia más adelante como $vm.labVmId. Si usa algún otro nombre, recuerde usarlo en consecuencia en las tareas posteriores.
El id. de la máquina virtual de laboratorio tendrá el siguiente formato:
/subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName}
.
Recopilación de los detalles de la máquina virtual de DevTest Labs
A continuación, la canalización ejecuta el script que creó para recopilar los detalles de la máquina virtual de DevTest Labs.
- En la pestaña Tareas de la canalización de versión, seleccione el signo más + que aparece al lado de Trabajo de agente.
- En Agregar tareas en el panel derecho, busque y seleccione Azure PowerShell y, después, seleccione Agregar.
- En el panel izquierdo, seleccione la tarea Azure PowerShell script: FilePath (Script de Azure PowerShell: FilePath).
- En el panel de la derecha, rellene el formulario como se indica a continuación:
- Suscripción de Azure: seleccione su suscripción o conexión del servicio.
- Tipo de script: seleccione Ruta de acceso del archivo de script.
- Ruta de acceso de script: busque y seleccione el script de PowerShell que ha registrado en el repositorio de código fuente. Puede usar las propiedades integradas para simplificar la ruta de acceso, por ejemplo:
$(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1
. - Argumentos de script: escriba el valor como -labVmId $(vm.labVmId).
El script recopila los valores necesarios y los almacena en variables de entorno dentro de la canalización de versión, para que así pueda consultarlos en pasos posteriores.
Creación de una imagen de máquina virtual desde la máquina virtual de DevTest Labs
En la siguiente tarea se crea una imagen de la máquina virtual recién implementada en el laboratorio. Puede usar la imagen para crear copias de la máquina virtual a petición a fin de realizar tareas de desarrollador o ejecutar pruebas.
- En la pestaña Tareas de la canalización de versión, seleccione el signo más + que aparece al lado de Trabajo de agente.
- En Agregar tareas, seleccione Azure DevTest Labs Create Custom Image (Crear imagen personalizada de Azure DevTest Labs) y seleccione Agregar.
- En el panel izquierdo, seleccione la tarea Azure DevTest Labs Create Custom Image (Crear imagen personalizada de Azure DevTest Labs).
- En el panel de la derecha, rellene el formulario como se indica a continuación:
- Suscripción del Administrador de recursos de Azure: seleccione su suscripción o conexión del servicio.
- Laboratorio: seleccione el laboratorio.
- Custom Image Name (Nombre de imagen personalizada): escriba un nombre para la imagen personalizada.
- Descripción: escriba una descripción opcional para facilitar la selección de la imagen correcta.
- Source Lab VM (Máquina virtual de laboratorio de origen): labVmId de origen. Escriba el valor como $(vm.labVmId).
- Variables de salida: puede editar el nombre de la variable del identificador de imagen personalizada predeterminada si es necesario.
Implementación de la aplicación en la máquina de DevTest Labs (opcional)
Puede agregar tareas para implementar la aplicación en la nueva máquina virtual de DevTest Labs. Si solo desea experimentar con la creación de una máquina virtual de DevTest Labs y una imagen personalizada, sin implementar una aplicación, puede omitir este paso.
Las tareas que se usan habitualmente para implementar las aplicaciones son Copia de archivos de Azure y PowerShell en equipos de destino. Puede encontrar la información de la máquina virtual que necesita para los parámetros de tareas en tres variables de configuración denominadas labVmRgName, labVMIpAddress y labVMFqdn dentro de la canalización de versión.
Eliminación de la máquina virtual
La tarea final consiste en eliminar la máquina virtual que implementó en el laboratorio. Lo habitual es eliminar la máquina virtual después de realizar las tareas del desarrollador o de ejecutar las pruebas que necesita en la máquina virtual implementada.
- En la pestaña Tareas de la canalización de versión, seleccione el signo más + que aparece al lado de Trabajo de agente.
- En Agregar tareas, seleccione Azure DevTest Labs Delete VM (Eliminar VM de Azure DevTest Labs) y seleccione Agregar.
- Configure la tarea de la siguiente manera:
- Suscripción del Administrador de recursos de Azure: seleccione su suscripción o conexión del servicio.
- Laboratorio: seleccione el laboratorio.
- Máquina virtual: escriba el valor como $(vm.labVmId).
- Variables de salida: en Nombre de la referencia, si ha cambiado el nombre predeterminado de la variable labVmId, escríbalo aquí. El valor predeterminado es $(labVmId).
Guardar la canalización de versión
Para guardar la nueva canalización de versión:
- Seleccione Nueva canalización de versión en la parte superior de la página de canalización de versión y escriba un nuevo nombre para la canalización.
- Seleccione Guardar en la esquina superior derecha.
Creación y ejecución de una versión
Para crear y ejecutar una versión con la nueva canalización:
- En la página de canalización de versión, seleccione Crear versión en la parte superior derecha.
- En Artefactos, seleccione la compilación más reciente y, a continuación, seleccione Crear.
En cada fase de la versión, puede actualizar la vista del laboratorio en Azure Portal para ver la creación de la máquina virtual, la creación de la imagen y la eliminación de la máquina virtual.
Ahora puede usar la imagen personalizada para crear máquinas virtuales cuando sea necesario.
Pasos siguientes
- Explore más plantillas de inicio rápido de ARM para la automatización de DevTest Labs desde el repositorio público de GitHub de DevTest Labs.
- Si es necesario, consulte Azure Pipelines troubleshooting (Solución de problemas de canalizaciones de Azure).