< Reto Anterior - Home - Siguiente reto >
Con la aplicación actualizada, ¡el refugio está listo para comenzar a configurar el despliegue! Han elegido usar Azure para alojar la aplicación. El sitio web se alojará en Azure Container Apps y la base de datos en Azure Cosmos DB para MongoDB.
El primer paso será crear y configurar el entorno en Azure. En un reto posterior, configurarás el despliegue continuo para el proyecto.
Para este reto, crearás un GitHub workflow que utiliza un archivo Azure Bicep para configurar los recursos necesarios en Azure. Antes de ello, crearás un grupo de recursos para alojar los recursos de Azure, configurarás una identidad de servicio para otorgar los permisos necesarios a la Action, crearás la Action y la ejecutarás para crear los recursos.
La Configuración como Código (CaC), o configuración como código, es un enfoque para gestionar la configuración del sistema que implica definir los ajustes de configuración en archivos o scripts legibles por máquinas. Esto permite una gestión más eficiente, automatizada y consistente de la configuración del sistema, ya que los cambios pueden realizarse y desplegarse más fácilmente y con mayor control. Con la configuración como código, los ajustes de configuración se almacenan en archivos controlados por versiones, utilizando a menudo una sintaxis declarativa como YAML, JSON o HCL. Estos archivos pueden almacenarse junto con el código de la aplicación, facilitando la gestión de todo el ciclo de vida del desarrollo del software.
Este desafío utiliza Azure Bicep, que es un lenguaje específico de dominio para definir la infraestructura de Azure. Ya se ha creado un archivo Bicep para que lo uses (se localiza en la carpeta config
de tu repositorio). El archivo Bicep:
El archivo Bicep requiere un parámetro llamado namePrefix
, que debe configurarse con 5 caracteres alfanuméricos aleatorios en minúsculas. Es importante mencionar que utilices 5 letras que te ayuden a identificar rápidamente los recursos, como por ejemplo las iniciales de tu nombre. Esto asegurará que todos los recursos tengan un nombre único.
Tip 1. Debes crear un grupo de recursos en tu suscripción de Azure. Como el nombre lo sugiere, un grupo de recursos sirve para agrupar recursos relacionados en un solo lugar. Puedes crearlo directamente desde el Portal de Azure o utilizar Azure CLI en una Terminal de tu GitHub Codespace. A continuación, se muestran los pasos para hacerlo desde la Terminal:
Inicia sesión en Azure introduciendo el siguiente comando:
az login --use-device-code
Sigue las instrucciones en pantalla para completar el proceso de autenticación introduciendo el código indicado.
Crea un grupo de recursos denominado pets-workshop en la región West US ingresando el siguiente comando:
az group create -n pets-workshop -l westus
Puedes utilizar otro nombre para el grupo de recursos y otra región para la ubicación. Sin embargo, se recomienda usar estos valores dado que, por ejemplo, actualmente algunas regiones de Azure presentan problemas de limitación de servicio (como East US) ocasionando que algunos recursos no puedan ser creados, en especial CosmosDB.
Registra los proveedores necesarios para los recursos que vas a crear, ejecutando los siguientes comandos uno por uno:
az provider register --namespace Microsoft.OperationalInsights
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.DocumentDB
az provider register --namespace Microsoft.App
Tip 2. Debes crear un service principal, el cual es una identidad de seguridad que utilizan las aplicaciones, los servicios y las herramientas de automatización creados por el usuario para acceder a recursos específicos de Azure. Puedes hacerlo desde el Portal de Azure o en una Terminal de tu GitHub Codespace. A continuación, se muestran los pasos para hacerlo desde la Terminal:
Obtén el ID de tu suscripción de Azure ingresando el siguiente comando (copia el valor devuelto y pégalo en un bloc de notas para utilizarlo en el siguiente paso):
az account show --query id -o tsv
Crea el service principal que se usará para administrar el grupo de recursos introduciendo el siguiente comando, reemplazando SUBSCRIPTION_ID con el ID de suscripción obtenido en el paso anterior (además, observa que se usa el grupo de recursos pets-workshop
, modifica dicho valor en el comando si utilizaste un nombre distinto al crear el grupo):
az ad sp create-for-rbac --name pets-workshop-app --role contributor --scopes /subscriptions/SUBSCRIPTION_ID/resourceGroups/pets-workshop --sdk-auth
Este comando devuelve un objeto JSON que sirve como credenciales utilizadas para crear los recursos en Azure e implementar la aplicación.
Copia la cadena JSON en un bloc de notas. Utilizarás este valor para registrarlo en un secreto en el paso siguiente.
Tip 3. Debes agregar en el repositorio los secretos y variables requeridos en la sección de Actions.
pets-workshop
.Para agregar los secretos y variables:
Tip 4.
Ahora sí, debes crear el workflow (GitHub Action) para desplegar los recursos en Azure a partir del archivo Bicep existente en combinación con los secretos y variables configurados. Este workflow debe correr bajo demanda (manualmente). Consulta los Recursos de Aprendizaje de este reto para determinar el código a escribir en el archivo .yml. Además, no olvides que el archivo Bicep existente en el repositorio requiere un parámetro namePrefix
.
.github/workflows
.main
, por lo que si estás trabajando en una rama, deberás hacer un pull-request, confirmarlo y hacer merge.IMPORTANTE: La imagen predeterminada en el archivo Bicep incluye todos los recursos necesarios para desplegar la aplicación predeterminada. NO actualices el código del archivo Bicep en este reto 04.