Ejercicio: Configuración del entorno de Azure DevOps

Completado

En esta sección, aprenderá a configurar la organización de Azure DevOps y a crear el entorno de Azure App Service en el que implementará.

Aprenderá a:

  • Configure el proyecto de Azure DevOps.
  • Administre los elementos de trabajo con Azure Boards.
  • Cree el entorno de Azure App Service.
  • Cree variables de canalización en Azure Pipelines.
  • Cree una conexión de servicio para autenticarse con 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.

No necesita una suscripción de Azure para trabajar con Azure DevOps, pero en este módulo usará Azure DevOps para implementar en los recursos de Azure. Para simplificar el proceso, use la misma cuenta Microsoft para iniciar sesión en Azure y Azure DevOps.

Si usa cuentas microsoft diferentes para iniciar sesión en Azure y Azure DevOps, agregue un usuario con el nivel de acceso Básico a la organización de DevOps en la cuenta microsoft que usa para iniciar sesión en Azure. Consulte Agregar usuarios a su organización o proyecto para obtener más detalles.

A continuación, cierre sesión en Azure DevOps e inicie sesión con la misma cuenta que usó para iniciar sesión en su suscripción de Azure.

Obtención del proyecto de Azure DevOps

Aquí se asegurará de que la organización de Azure DevOps esté configurada para completar el resto de este módulo. Para ello, ejecutará una plantilla que crea un proyecto en Azure DevOps.

Los módulos de esta ruta de aprendizaje forman una progresión. Siga el equipo web de Tailspin por su recorrido 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 39 para Automatizar implementaciones de contenedores de Docker con Azure Pipelines y 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 asegurarse de 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 - Docker 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-docker .

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

  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

En este módulo, la página Limpieza del entorno de Azure DevOps contiene pasos de limpieza importantes. La limpieza ayuda a garantizar que no se queda sin minutos de compilación libres. Asegúrese de realizar los pasos de limpieza, aunque no haya completado este módulo.

Establecimiento de la visibilidad del proyecto

La bifurcación del repositorio Space Game en GitHub inicialmente se establece en pública mientras que el proyecto creado por la plantilla de Azure DevOps se establece 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:

Cambio del elemento de trabajo al estado En curso

Aquí vas a asignarte un elemento de trabajo en Azure Boards. También moverá el elemento de trabajo al estado En curso . En la práctica, usted y su equipo crearían elementos de trabajo al principio de cada sprint o iteración de trabajo.

Esta asignación de trabajo proporciona una lista de comprobación desde la que trabajar. Proporciona a otros miembros del equipo visibilidad de 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.

Aquí, moverá el primer elemento, Crear versión de contenedor del sitio web mediante Docker, a la columna Hacer y, a continuación, asignarse al elemento de trabajo.

Para configurar el elemento de trabajo:

  1. En Azure DevOps, vaya a Paneles. A continuación, seleccione Paneles en el menú.

    Captura de pantalla de Azure DevOps en la que se muestra la ubicación del menú Paneles.

  2. En el elemento de trabajo Crear versión de contenedor del sitio web mediante Docker , seleccione la flecha abajo situada en la parte inferior de la tarjeta y, a continuación, asigne el elemento de trabajo a sí mismo.

    Captura de pantalla de Azure Boards que muestra la ubicación de la flecha abajo.

  3. Mueva el elemento de trabajo de la columna Tareas pendientes a la columna Hacer .

    Recorte de pantalla de Azure Boards que muestra la tarjeta en la columna En progreso.

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

Creación del entorno de Azure App Service

En el módulo Crear una canalización de publicación con Azure Pipelines, creaste una instancia de App Service mediante el portal de Azure. Aunque el portal es una excelente herramienta para explorar las ofertas de Azure, la configuración de componentes como App Service puede resultar complicado.

En este módulo, usará la CLI de Azure para iniciar los recursos necesarios para implementar y ejecutar una instancia de App Service. Puede acceder a la CLI de Azure desde un terminal o a través de Visual Studio Code.

Importante

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

Inicio de Cloud Shell en el portal de Azure

  1. Vaya al portal de Azure e inicie sesión.

  2. Seleccione Cloud Shell en la barra de menús y, a continuación, seleccione la experiencia de Bash .

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

    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 ubicados dentro de una ubicación geográfica determinada. Este de EE. UU., Oeste de EE. UU. y Norte de Europa son algunos ejemplos de regiones. Cada recurso de Azure, como una instancia de App Service, se asigna a una región específica.

Para simplificar el proceso de ejecución de comandos, comience seleccionando una región predeterminada. Una vez especificada la región predeterminada, los comandos posteriores usarán esa región de forma predeterminada a menos que se especifique explícitamente otra región.

  1. Ejecute el siguiente comando para enumerar las regiones disponibles para la suscripción de Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Seleccione una región que esté en proximidad a su ubicación desde la columna Nombre de la salida. Por ejemplo, puede elegir eastasia o westus2.

  3. Ejecute el siguiente comando para establecer la región predeterminada. Reemplace el marcador de posición por el nombre de la región que ha seleccionado.

    az configure --defaults ___location=<REGION>
    

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

    az configure --defaults ___location=westus2
    

Creación de variables de Bash

En esta sección, creará 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. Esto facilitará la creación de nombres únicos globales para determinados servicios en el paso siguiente.

    resourceSuffix=$RANDOM
    
  2. Cree nombres únicos globales para la aplicación web de App Service y Azure Container Registry. El uso de comillas dobles en estos comandos solicita a Bash que interpole las variables mediante la sintaxis en línea.

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

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

Creación de recursos de Azure

Nota:

Para fines de aprendizaje, aquí podrás ver la configuración de red predeterminada. Esta configuración hace que el sitio sea accesible desde Internet. En la práctica, podría configurar una red virtual de Azure que coloque el sitio web en una red que no sea enrutable a Internet y que solo usted y su equipo puedan acceder. Más adelante, podría volver a configurar la red 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 acr create para crear una instancia de Azure Container Registry con el nombre definido anteriormente.

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. Ejecute el comando siguiente az appservice plan create para crear un plan de App Service con el nombre definido anteriormente.

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

    El argumento --sku especifica el plan B1. Este plan se ejecuta en el nivel Básico. El argumento --is-linux especifica usar trabajadores de Linux.

    Importante

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

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

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. 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. Lo necesitará más adelante cuando compruebe su trabajo. Este es un ejemplo:

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  6. Ejecute el comando siguiente az acr list para enumerar el servidor de inicio de sesión de la instancia de Azure Container Registry. Necesitará este nombre de servidor al crear variables de canalización más adelante.

    az acr list \
      --resource-group $rgName \
      --query "[].{loginServer: loginServer}" \
      --output table
    

    Anote el servidor de inicio de sesión. Lo necesitará más adelante al configurar la canalización. Este es un ejemplo:

    LoginServer
    ---------------------------------
    tailspinspacegame4692.azurecr.io    
    

Importante

La página Limpieza del 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 Crear una canalización de lanzamiento con Azure Pipelines, agregaste una variable a la canalización que almacena el nombre de tu aplicación web en App Service. Harás lo mismo aquí. Además, agregaremos el nombre de nuestra instancia de Azure Container Registry.

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 será más reutilizable. Además, si cambian los nombres de instancia, puede actualizar las variables y desencadenar la canalización sin modificar la configuración.

Para agregar las variables:

  1. En Azure DevOps, vaya al proyecto Space Game - web - Docker .

  2. En Canalizaciones, seleccione Biblioteca.

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

  3. Seleccione + Grupo de variables.

  4. En Propiedades, escriba Release para el nombre del grupo de variables.

  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 creada anteriormente, como tailspin-space-game-web-4692.

    Importante

    Establezca el nombre de la instancia de App Service, no su nombre de host. En este ejemplo, escribiría tailspin-space-game-web-4692 y no tailspin-space-game-web-4692.azurewebsites.net.

  7. Repita el proceso para agregar otra variable denominada RegistryName con el valor del servidor de inicio de sesión de Azure Container Registry, como tailspinspacegame4692.azurecr.io.

  8. Seleccione Permisos de canalización y, a continuación, seleccione el + signo para agregar una canalización. Seleccione mslearn-tailspin-spacegame-web-docker para conceder permiso a la canalización para acceder al grupo de variables.

  9. Seleccione Guardar en la parte superior de la página para guardar las variables. El grupo de variables debe ser similar al siguiente:

    Captura de pantalla de Azure Pipeline que muestra el grupo de variables. El grupo contiene dos variables.

Creación de conexiones de servicio necesarias

Aquí, 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. También creará una conexión de Docker Registry para publicar el contenedor en Azure Container Registry.

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, vaya al proyecto Space Game - web - Docker .

  2. En la esquina inferior de la página, seleccione Configuración del proyecto.

  3. En Canalizaciones, seleccione Conexiones de servicio.

  4. Seleccione Nueva conexión de servicio y, a continuación, elija Azure Resource Manager y, después, seleccione Siguiente.

  5. Cerca de la parte superior de la página, seleccione Entidad de servicio (automática). A continuación, seleccione Siguiente.

  6. Rellene estos campos:

    Campo Importancia
    Nivel de ámbito Suscripción
    Suscripción Su suscripción de 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.

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

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

  9. Seleccione Nueva conexión de servicio y, después, seleccione Registro de Docker y, a continuación, seleccione Siguiente.

  10. Cerca de la parte superior de la página, seleccione Azure Container Registry.

  11. Rellene estos campos:

    Campo Importancia
    Suscripción Su suscripción de Azure
    Azure Registro de Contenedores Seleccione la que creó anteriormente.
    Nombre de conexión de servicio Conexión del Registro de Contenedores
  12. Asegúrese de que la opción Conceder permiso de acceso a todas las canalizaciones está seleccionada.

  13. Seleccione Guardar cuando haya terminado.