Ejercicio: Configuración del entorno de Azure DevOps
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 realizará la implementación.
Aprenderá a:
- Configure el proyecto de Azure DevOps.
- Administre los elementos de trabajo con Azure Boards.
- Cree el entorno de Azure App Service.
- Crear 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, hay que tener una suscripción a Azure propia. Puede comenzar 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 realizar la implementación en recursos de Azure. Para simplificar el proceso, use la misma cuenta Microsoft para iniciar sesión tanto en Azure como en Azure DevOps.
Si usa cuentas Microsoft diferentes para iniciar sesión en Azure y Azure DevOps, agregue un usuario con nivel de acceso Básico a la organización de DevOps en la cuenta Microsoft que use para iniciar sesión en Azure. Para obtener más información, consulte Adición de usuarios a su organización o proyecto.
Después, cierre la sesión de Azure DevOps e iníciela de nuevo con la misma cuenta que ha usado para iniciar sesión en la suscripción a 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, ejecutaremos 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 configure la organización de Azure DevOps:
En el sitio del generador de demostraciones de Azure DevOps, siga estos pasos para ejecutar la plantilla:
Seleccione Iniciar sesión y acepte los términos de uso.
En la página Crear proyecto, seleccione la organización de Azure DevOps. Escriba un nombre de proyecto, como Space Game - web - Docker.
Seleccione Yes, I want to fork this repository (Sí, quiero bifurcar este repositorio)>Authorize (Autorizar). Si se le solicita, autorice el acceso a su cuenta de GitHub.
Importante
Debe seleccionar esta opción para que la plantilla pueda conectarse al repositorio de GitHub. Asegúrese de activar la casilla incluso si ya ha bifurcado el repositorio Space Game. La plantilla usará la bifurcación existente.
Seleccione Crear un proyecto.
Seleccione Navegar al proyecto para ir al proyecto de Azure DevOps.
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 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:
- Uso de proyectos privados y públicos
- Inicio rápido: Transformación del proyecto privado en público
- Configurar la visibilidad de un repositorio
Cambio del elemento de trabajo al estado En curso
Aquí asignará un elemento de trabajo en Azure Boards. También cambiará el elemento de trabajo al estado En curso. En la práctica, usted y el equipo tendrían que crear elementos de trabajo al principio de cada sprint o iteración de trabajo.
Esta asignación del trabajo proporciona una lista de comprobación desde la que trabajar. Permite que otros miembros del equipo vean lo que hace y cuánto trabajo queda pendiente. El elemento de trabajo también ayuda a aplicar límites de trabajo en curso (WIP) para que el equipo no asuma demasiado trabajo a la vez.
Aquí moverá el primer elemento, Create container version of web site using Docker (Crear la versión de contenedor del sitio web con Docker), a la columna Doing (En curso) y, a continuación, se asignará el elemento de trabajo.
Para configurar el elemento de trabajo:
En Azure DevOps, vaya a Paneles. Después, seleccione Paneles en el menú.
En el elemento de trabajo Create container version of web site using Docker (Crear la versión de contenedor del sitio web con Docker), seleccione la flecha abajo en la parte inferior de la tarjeta y, a continuación, asígnese el elemento de trabajo.
Mueva el elemento de trabajo de la columna Tareas pendientes a la columna En curso.
Al final de este módulo, moveremos la tarjeta a la columna Listo después de haber completado la tarea.
Creación del entorno de Azure App Service
En el módulo Creación de una canalización de versión con Azure Pipelines, ha creado una instancia de App Service con Azure Portal. 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 tener acceso a la CLI de Azure desde un terminal o a través de Visual Studio Code.
Importante
Para completar los ejercicios de este módulo debe tener una suscripción de Azure propia.
Inicio de Cloud Shell en Azure Portal
Vaya a Azure Portal e inicie sesión.
Seleccione el Cloud Shell en la barra de menús y, a continuación, seleccione la experiencia de Bash.
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 consiste en uno o varios centros de datos de Azure que se encuentran en una ubicación geográfica en particular. Este de EE. UU., Oeste de EE. UU. y Norte de Europa son unos pocos 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.
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
Seleccione una región cercana a la ubicación de la columna Nombre de la salida. Por ejemplo, puede seleccionar eastasia o westus2.
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 la 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 instalación sea más cómodo y menos propenso a errores. El uso de variables para cadenas de texto compartidas ayuda a evitar errores tipográficos accidentales.
En 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
Asigne nombres únicos globales a la aplicación web de App Service y a la instancia de Azure Container Registry. El uso de comillas dobles en estos comandos solicita a Bash que interpole las variables mediante la sintaxis insertada.
webName="tailspin-space-game-web-${resourceSuffix}" registryName="tailspinspacegame${resourceSuffix}"
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:
Con fines de aprendizaje, aquí se usará la configuración de red predeterminada. Esta configuración hace que el sitio sea accesible desde Internet. En la práctica, podríamos configurar una red virtual de Azure que coloque el sitio web en una red que no sea enrutable a Internet y a la que solo nosotros y el equipo podemos acceder. Más adelante, puede volver a configurar la red para que el sitio web esté disponible para los usuarios.
Ejecute el comando
az group create
siguiente para crear un grupo de recursos con el nombre definimos antes.az group create --name $rgName
Ejecute el comando
az acr create
siguiente para crear una instancia de Azure Container Registry con el nombre que definimos antes.az acr create --name $registryName \ --resource-group $rgName \ --sku Standard \ --admin-enabled true
Ejecute el comando
az appservice plan create
siguiente para crear un plan de App Service con el nombre que definimos antes.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 que se deben usar trabajos de Linux.Importante
Si la SKU B1 no está disponible en la suscripción de Azure, elija otro plan, como S1 (Estándar).
Ejecute el comando
az webapp create
siguiente 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
Ejecute el comando
az webapp list
siguiente para mostrar 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 para el servicio en ejecución. ya que lo necesitaremos más adelante cuando comprobemos el trabajo. Este es un ejemplo:
HostName State ---------------------------------------------- ------- tailspin-space-game-web-4692.azurewebsites.net Running
Ejecute el comando
az acr list
siguiente para mostrar el servidor de inicio de sesión de la instancia de Azure Container Registry. Necesitaremos este nombre de servidor al crear las 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, ya que lo necesitaremos más adelante cuando configuremos la canalización. Este es un ejemplo:
LoginServer --------------------------------- tailspinspacegame4692.azurecr.io
Importante
La página Limpiar el entorno de Azure DevOps de este módulo contiene pasos de limpieza importantes. La limpieza sirve para evitar que se nos cobre 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 Creación de una canalización de versión con Azure Pipelines, agregamos una variable a la canalización en la que se almacena el nombre de la aplicación web en App Service. Hará lo mismo aquí. Además, agregaremos el nombre de nuestra instancia de Azure Container Registry.
Podríamos codificar estos nombres de forma rígida en la configuración de la canalización, pero si los definimos como variables, la configuración será más reutilizable. Además, si los nombres de las instancias cambian, puede actualizar las variables y desencadenar la canalización sin modificar la configuración.
Para agregar las variables:
En Azure DevOps, vaya al proyecto web Space Game - web - Docker.
En Canalizaciones, seleccione Biblioteca.
Seleccione + Grupo de variables.
En Propiedades, escriba Release como nombre del grupo de variables.
En Variables, seleccione + Agregar.
Para el nombre de la variable, escriba WebAppName. En cuanto al valor, escriba el nombre de la instancia de App Service que creamos antes, por ejemplo, tailspin-space-game-web-4692.
Importante
Establezca el nombre de la instancia de App Service, no su nombre de host. En este ejemplo, habría que especificar tailspin-space-game-web-4692, y no tailspin-space-game-web-4692.azurewebsites.net.
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.
Seleccione Permisos de canalización y, luego, 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.Seleccione Guardar en la parte superior de la página para guardar las variables. El grupo de variables debe ser similar a lo que se muestra a continuación:
Creación de las conexiones de servicio necesarias
Aquí creará una conexión de servicio que permita 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. Creó una conexión de servicio similar en el módulo anterior. También crearemos una conexión de Registro de Docker para publicar el contenedor en Azure Container Registry.
Importante
Asegúrese de haber iniciado sesión tanto en Azure Portal como en Azure DevOps con la misma cuenta Microsoft.
En Azure DevOps, vaya al proyecto web Space Game - web - Docker.
En la esquina inferior de la página, seleccione Configuración del proyecto.
En Canalizaciones, seleccione Conexiones de servicio.
Seleccione Nueva conexión de servicio, luego, Azure Resource Manager y, por último, Siguiente.
Cerca de la parte superior de la página, seleccione Entidad de servicio (automática). Luego, seleccione Siguiente.
Rellene estos campos:
Campo Value Nivel de ámbito Subscription Subscription 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 la cuenta Microsoft.
Asegúrese de tener seleccionada la opción Conceder permiso de acceso a todas las canalizaciones.
Seleccione Guardar.
Azure DevOps realiza una conexión de prueba para comprobar que se puede conectar a la suscripción a Azure. Si Azure DevOps no se puede conectar, tiene la oportunidad de iniciar sesión una segunda vez.
Seleccione Nueva conexión de servicio, después Registro de Docker y, por último, Siguiente.
Cerca de la parte superior de la página, seleccione Azure Container Registry.
Rellene estos campos:
Campo Value Subscription Su suscripción de Azure Azure Container Registry Seleccione la instancia que creamos antes. Nombre de conexión de servicio Container Registry Connection (Conexión de Container Registry) Asegúrese de tener seleccionada la opción Conceder permiso de acceso a todas las canalizaciones.
Cuando haya terminado, haga clic en Guardar.