Ejercicio: Configuración del entorno de Azure DevOps

Completado

En esta unidad, asegúrese de que la organización de Azure DevOps esté configurada para completar el resto de este módulo. También se crean los entornos de Azure App Service en los que se implementa.

Para lograr estos objetivos, realice estas tareas:

  • Agregue un usuario para asegurarse de que Azure DevOps puede conectarse a su suscripción de Azure.
  • Configurar un proyecto de Azure DevOps para este módulo.
  • En Azure Boards, mueva el elemento de trabajo de este módulo a la columna En curso.
  • Asegurarse de que el proyecto esté configurado localmente para que pueda enviar los cambios a la canalización.
  • Cree la aplicación Azure App Service y Azure Functions mediante la CLI de Azure en Azure Cloud Shell.
  • Cree variables de pipeline que definan los nombres de su App Service y la instancia de Azure Functions.
  • Cree una conexión de servicio que permita a Azure Pipelines acceder de forma segura a su suscripción de Azure.

Adición de un usuario a Azure DevOps

Para completar este módulo, necesita su propia suscripción de Azure. Puede empezar a trabajar con Azure de forma gratuita.

Aunque no necesita una suscripción de Azure para trabajar con Azure DevOps, en este ejercicio se usa Azure DevOps para implementar en recursos de Azure en la suscripción de Azure. Para simplificar el proceso, use la misma cuenta Microsoft para iniciar sesión en su suscripción de Azure y en su organización de Azure DevOps.

Importante

Si inicia sesión con cuentas diferentes, agregue un usuario a su organización de DevOps en la cuenta Microsoft que usa para iniciar sesión en Azure. Para obtener más información, consulte Agregar usuarios a su organización o proyecto. Al agregar el usuario, elija el nivel de acceso Básico .

A continuación, cierre sesión en Azure DevOps e inicie sesión con la nueva cuenta de usuario. Use la cuenta Microsoft que usa para iniciar sesión en su suscripción de Azure.

Obtén el proyecto de Azure DevOps

Asegúrese de que la organización de Azure DevOps está configurada para completar el resto de este módulo. Para ello, ejecute una plantilla que cree un proyecto en Azure DevOps.

Los módulos de esta ruta de aprendizaje forman una progresión a medida que sigues al equipo web de Tailspin a través de su viaje de DevOps. Con fines de aprendizaje, cada módulo tiene su propio proyecto de Azure DevOps.

Ejecución de la plantilla

Ejecute una plantilla que configura la organización de Azure DevOps.

  1. Obtenga y ejecute el proyecto ADOGenerator en Visual Studio o el IDE que prefiera.

  2. Cuando se le pida que escriba el número de plantilla de la lista de plantillas, escriba 38 para automatizar implementaciones de funciones de Azure con Azure Pipelines, y luego presione Entrar.

  3. Elija el método de autenticación. Puede configurar y usar un token de acceso personal (PAT) o usar el inicio de sesión del dispositivo.

    Nota:

    Si configura un PAT, asegúrese de autorizar los ámbitos necesarios. En este módulo, puede usar el acceso completo, pero en una situación real, debe conceder solo los ámbitos necesarios.

  4. Escriba el nombre de la organización de Azure DevOps y presione Entrar.

  5. Si se le solicita, escriba el PAT de Azure DevOps y presione Entrar.

  6. Escriba un nombre de proyecto como Space Game - web - Azure Functions y presione Entrar.

  7. Una vez creado el proyecto, vaya a la organización de Azure DevOps en el explorador (en https://dev.azure.com/<your-organization-name>/) y seleccione el proyecto.

Bifurcar el repositorio

Si aún no lo ha hecho, cree una bifurcación del repositorio mslearn-tailspin-spacegame-web-azure-functions.

  1. En GitHub, vaya al repositorio mslearn-tailspin-spacegame-web-azure-functions.

  2. Seleccione Bifurcar en la parte superior derecha de la pantalla.

  3. Elija su cuenta de GitHub como propietario y, a continuación, seleccione Crear un fork.

Importante

La página Limpiar el entorno de Azure DevOps de este módulo contiene pasos importantes que debe completar, incluso si no completa este módulo. La limpieza ayuda a asegurarse de que no se agota de minutos de compilación gratuitos.

Establecimiento de la visibilidad del proyecto

Inicialmente, la bifurcación del repositorio Space Game en GitHub está establecida en pública mientras que el proyecto creado por la plantilla de Azure DevOps está establecido en privado. Cualquier persona puede acceder a un repositorio público en GitHub, mientras que a un repositorio privado solo puede acceder usted y personas con las que decida compartirlo. Del mismo modo, en Azure DevOps, los proyectos públicos proporcionan acceso de solo lectura a los usuarios no autenticados, mientras que los privados requieren que los usuarios tengan acceso y se autentiquen para acceder a los servicios.

En este momento, no es necesario modificar ninguna de estas configuraciones para los fines de este módulo. Sin embargo, para sus proyectos personales, debe determinar la visibilidad y el acceso que desea conceder a otros usuarios. Por ejemplo, si el proyecto es de código abierto, podría elegir que tanto el repositorio de GitHub como el proyecto de Azure DevOps fueran públicos. Si el proyecto es de su propiedad, normalmente tanto el repositorio de GitHub como el proyecto de Azure DevOps son privados.

Más adelante encontrará los siguientes recursos útiles para determinar qué opción es mejor para su proyecto:

Asignar un elemento de trabajo y moverlo al estado En curso

Aquí, asignará un elemento de trabajo a sí mismo en Azure Boards y establecerá el estado del elemento de trabajo en Hacer. En la práctica, usted y su equipo crearían elementos de trabajo al principio de cada sprint o iteración de trabajo.

En este ejercicio se crea una lista de comprobación a partir de la cual trabajar. Da visibilidad a otros miembros del equipo sobre en lo que estás trabajando y cuánto trabajo queda. El elemento de trabajo también ayuda a aplicar límites de trabajo en curso (WIP) para que el equipo no tome demasiado trabajo a la vez.

  1. En Azure DevOps, vaya a la categoría Paneles y seleccione Paneles en el menú.

    Azure DevOps mostrando la ubicación del menú Tableros.

  2. Abra la API de tabla de clasificación Refactorizar como un elemento de trabajo de Azure Function seleccionando el título. Asigne este elemento de trabajo a sí mismo y, a continuación, seleccione Guardar y cerrar.

  3. Seleccione la flecha abajo situada en la parte inferior de la tarjeta y seleccione Hacero seleccione la tarjeta y arrástrela a la columna Hacer.

    Captura de pantalla de la tarjeta de elemento de trabajo que resalta la ubicación de la flecha hacia abajo.

  4. El elemento de trabajo se mueve de la columna To Do a la columna Doing .

    Captura de pantalla de Azure Boards en la que se resalta la tarjeta de elemento de trabajo en la columna En progreso.

Al final de este módulo, mueva la tarjeta a la columna Listo después de completar la tarea.

Creación de entornos de Azure App Service y Azure Functions

Aquí, creará la aplicación App Service y Azure Functions necesaria para implementar la nueva versión del sitio y la API.

En el módulo Creación de una canalización de versión con Azure Pipelines Learn, ha presentado App Service a través de Azure Portal. Aunque el portal es una excelente manera de explorar lo que está disponible en Azure o para realizar tareas básicas, la incorporación de componentes como App Service puede ser tedioso.

En este módulo, usará la CLI de Azure para abrir una instancia de App Service. Puede acceder a la CLI de Azure desde un terminal o a través de Visual Studio Code. Se ha usado la CLI de Azure desde Azure Cloud Shell. Esta experiencia de shell basada en explorador se hospeda en la nube. En Cloud Shell, la CLI de Azure está configurada para su uso con la suscripción de Azure.

Importante

Necesita su propia suscripción de Azure para completar los ejercicios de este módulo.

Abrir Cloud Shell a través del Portal de Azure

  1. Inicie sesión en Azure Portal.

  2. En los controles globales del encabezado de página, seleccione Cloud Shell.

    Captura de pantalla de Azure Portal en la que se muestra la ubicación del elemento de menú Cloud Shell.

    Se abre un terminal y se conecta a Azure Cloud Shell.

  3. Si es necesario, seleccione Bash en el menú del terminal.

    Nota:

    Cloud Shell necesita un recurso de Azure Storage para conservar los archivos que se creen en Cloud Shell. Al abrir Cloud Shell por primera vez, se le pedirá que cree un grupo de recursos, una cuenta de almacenamiento y un recurso compartido de Azure Files. Esta configuración se usa automáticamente para todas las sesiones de Cloud Shell futuras.

Selección de una región de Azure

Una región es uno o varios centros de datos de Azure dentro de una ubicación geográfica. Este de EE. UU., Oeste de EE. UU. y Norte de Europa son ejemplos de regiones. A cada recurso de Azure, incluida una instancia de App Service, se le asigna una región.

Para que los comandos sean más fáciles de ejecutar, empiece estableciendo una región predeterminada. Después de especificar la región predeterminada, los comandos que escriba usen esa región hasta especificar otra región.

  1. En Cloud Shell, ejecute el siguiente az account list-locations comando para enumerar las regiones que están disponibles en la suscripción de Azure:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. En la columna Name de la salida, elija una región cercana. Por ejemplo, elija eastasia o westus2.

  3. Ejecute az configure para establecer la región predeterminada. Reemplace <REGION> por el nombre de la región elegida.

    az configure --defaults ___location=<REGION>
    

    En este ejemplo se establece westus2 como la región predeterminada:

    az configure --defaults ___location=westus2
    

Creación de variables de Bash

Aquí, cree variables de Bash para que el proceso de configuración sea más cómodo y menos propenso a errores. El uso de variables para cadenas de texto compartido ayuda a evitar errores tipográficos accidentales.

  1. Desde Cloud Shell, genere un número aleatorio, que se usa para crear nombres únicos globales para determinados servicios en el paso siguiente.

    resourceSuffix=$RANDOM
    
  2. Cree tres nombres únicos globales para las cuentas de App Service, Azure Functions y storage. Estos comandos usan las comillas dobles, lo que indica a Bash que resuelva las variables utilizando la sintaxis en línea.

    webName="tailspin-space-game-web-${resourceSuffix}"
    leaderboardName="tailspin-space-game-leaderboard-${resourceSuffix}"
    storageName="tailspinspacegame${resourceSuffix}"
    
  3. Cree dos variables de Bash más para almacenar los nombres del grupo de recursos y el plan de servicio.

    rgName='tailspin-space-game-rg'
    planName='tailspin-space-game-asp'
    

Creación de los recursos de Azure necesarios

La solución requiere varios recursos de Azure para la implementación, que se crean ahora.

Nota:

En este ejercicio se usa la configuración de red predeterminada, por lo que el sitio es accesible desde Internet. En la práctica, podría configurar una red virtual de Azure para colocar el sitio web en una red a la que solo pueda acceder usted y su equipo. Más adelante, podría volver a configurar la red virtual para que el sitio web esté disponible para los usuarios.

  1. Ejecute el comando siguiente az group create para crear un grupo de recursos con el nombre definido anteriormente:

    az group create --name $rgName
    
  2. Ejecute el comando siguiente az appservice plan create para crear un plan de App Service con el nombre definido en la tarea anterior:

    az appservice plan create \
      --name $planName \
      --resource-group $rgName \
      --sku B1 \
      --is-linux
    

    El --sku parámetro especifica el plan B1. Este plan se ejecuta en el nivel Básico. El parámetro --is-linux especifica los trabajos de Linux (subprocesos usados en eventos y programación de tareas).

    Importante

    Si la SKU B1 no está disponible en la suscripción de Azure, elija otro plan, como S1 (Estándar).

  3. Ejecute el comando siguiente az webapp create para crear la instancia de App Service:

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --runtime "DOTNETCORE|8.0"
    
  4. Azure Functions requiere una cuenta de almacenamiento para la implementación. Ejecute el siguiente az storage account create comando para crearlo:

    az storage account create \
      --name $storageName \
      --resource-group $rgName \
      --sku Standard_LRS
    
  5. Ejecute el comando siguiente az functionapp create para crear la instancia de aplicación de Azure Functions. Reemplace el <region> con su región preferida.

    az functionapp create \
      --name $leaderboardName \
      --resource-group $rgName \
      --storage-account $storageName \
      --functions-version 4 \
      --consumption-plan-___location <region>
    
  6. Ejecute el siguiente az webapp list comando para enumerar el nombre de host y el estado de la instancia de App Service:

    az webapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    Anote el nombre de host del servicio en ejecución. Debe tener un aspecto similar al siguiente, pero con un número aleatorio diferente. Necesitará el nombre de host web más adelante cuando compruebe el trabajo.

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  7. Ejecute el siguiente az functionapp list comando para enumerar el nombre de host y el estado de la instancia de Azure Functions.

    az functionapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    Anote el nombre de host del servicio en ejecución. Debe tener un aspecto similar al siguiente, pero con un identificador de número aleatorio diferente. Necesitará el nombre de host de la tabla de clasificación más adelante cuando compruebe el trabajo.

    HostName                                                State
    ------------------------------------------------------  -------
    tailspin-space-game-leaderboard-4692.azurewebsites.net  Running
    
  8. Copie estos dos nombres de host en una ubicación a la que pueda acceder fácilmente más adelante.

  9. Como paso opcional, abra un explorador y escriba un nombre de host para comprobar que se está ejecutando. Aparece la página principal predeterminada.

Importante

La página Limpiar el entorno de Azure DevOps de este módulo contiene pasos de limpieza importantes. La limpieza ayuda a garantizar que no se le cobra por los recursos de Azure después de completar este módulo. No olvide realizar los pasos de limpieza, aunque no haya completado este módulo.

Creación de variables de canalización en Azure Pipelines

En el módulo Crear una canalización de versión con Azure Pipelines, añadiste una variable a tu canalización que almacena el nombre de tu aplicación web en App Service. Aquí, haz lo mismo. Además, agregue el nombre de la aplicación de tabla de clasificación para la instancia de Azure Functions.

Puede codificar de forma rígida estos nombres en la configuración de la canalización, pero si los define como variables, la configuración es más reutilizable. Además, si cambian los nombres de las instancias, puede actualizar las variables y desencadenar la canalización sin modificar la configuración.

Agregue un grupo de variables al proyecto.

  1. El proyecto Space Game - web - Azure Functions debe estar abierto en Azure DevOps.

  2. En el menú, seleccione Canalizaciones y, a continuación, en Canalizaciones , seleccione Biblioteca. Aparece el panel Biblioteca.

    Captura de pantalla del menú de Azure DevOps que resalta la opción Biblioteca en Canalizaciones.

  3. En la barra de comandos o en el centro del panel, seleccione Grupo de variables. Aparece la página Nuevo grupo de variables .

  4. Para el nombre del grupo de variables, escriba Release.

  5. En Variables, seleccione Agregar.

  6. Para el nombre de la variable, escriba WebAppName. Para el valor, escriba el nombre de la instancia de App Service que se creó para la aplicación web, como tailspin-space-game-web-4692.

    Importante

    Establezca el nombre de la instancia de App Service, no su nombre de host completo. En este ejercicio, por ejemplo, tailspin-space-game-web-4692 es la parte de instancia del nombre de host tailspin-space-game-web-4692.azurewebsites.net.

  7. Agregue otra variable denominada LeaderboardAppName con el valor de la instancia de tabla de clasificación, por ejemplo, tailspin-space-game-leaderboard-4692.

  8. Agregue una variable final denominada ResourceGroupName con el valor tailspin-space-game-rg.

  9. En la barra de comandos cerca de la parte superior de la página, seleccione Guardar para guardar el grupo de variables Release en la canalización.

    Las variables del grupo de variables deben ser similares:

    Captura de pantalla de Azure Pipelines que muestra el grupo de variables. El grupo contiene tres variables.

Creación del entorno de pico

En los módulos anteriores, ha creado entornos de desarrollo, pruebas y preproducción. Aquí, haz lo mismo. Esta vez, cree un entorno denominado spike.

  1. En el menú de Azure DevOps, en Canalizaciones, seleccione Entornos.

    Captura de pantalla de Azure Pipelines que muestra la ubicación de la opción de menú Entornos.

  2. Selecciona Crear entorno. Aparece el panel Nuevo entorno .

  3. Para Nombre, ingrese spike.

  4. Deje los campos restantes en sus valores predeterminados.

  5. Seleccione Crear.

Creación de una conexión de servicio

En este caso, creará una conexión de servicio que permite a Azure Pipelines acceder a la suscripción de Azure. Azure Pipelines usa esta conexión de servicio para implementar el sitio web en App Service. Ha creado una conexión de servicio similar en el módulo anterior.

Importante

Asegúrese de que ha iniciado sesión en Azure Portal y Azure DevOps en la misma cuenta de Microsoft.

  1. En Azure DevOps, Space Game - web- Azure Functions proyecto de canalización, debajo del menú, seleccione Configuración del proyecto. Aparece el panel Detalles del proyecto .

  2. En el menú, en Canalizaciones, seleccione Conexiones de servicio.

  3. En la página Conexiones de servicio, seleccione Nueva conexión de servicio y, después, en el panel Nueva conexión de servicio , seleccione Azure Resource Manager y, a continuación, seleccione Siguiente.

  4. En el panel Nueva conexión de servicio, seleccione Principal del servicio (automática) y, a continuación, seleccione Siguiente.

  5. En el panel Nueva conexión de servicio de Azure , seleccione o escriba la siguiente configuración:

    Campo Importancia
    Nivel de ámbito Suscripción
    Suscripción Seleccione su suscripción a Azure.
    Grupo de recursos tailspin-space-game-rg
    Nombre de conexión de servicio Resource Manager- Tailspin - Space Game

    Durante el proceso, es posible que se le pida que inicie sesión en su cuenta Microsoft.

  6. Asegúrese de que la opción Conceder permiso de acceso a todas las canalizaciones está seleccionada.

  7. Seleccione Guardar.

Azure DevOps realiza una conexión de prueba para comprobar que puede conectarse a su suscripción de Azure. Si Azure DevOps no se puede conectar, tiene la oportunidad de iniciar sesión una segunda vez.