Creación de la infraestructura como código
Azure Developer CLI (azd
) puede aprovisionar recursos en Azure mediante archivos de infraestructura como código (IaC) escritos en Bicep o Terraform. La infraestructura como código permite definir recursos y configuraciones de infraestructura en archivos de definición declarativa que generan de forma confiable los mismos entornos cada vez que se implementan. azd
ejecuta estos archivos para crear los recursos de Azure necesarios para hospedar la aplicación. Puede obtener más información sobre la infraestructura como código en el documento ¿Qué es la infraestructura como código?
En esta unidad, agregará código de Bicep a la plantilla para aprovisionar los recursos necesarios para la aplicación. No se requieren conocimientos previos de Bicep para completar este módulo. Sin embargo, si planea trabajar con plantillas de azd
con frecuencia, es una buena idea familiarizarse con al menos los conceptos básicos de Bicep o Terraform. Obtenga más información sobre Bicep en la ruta de aprendizaje Aspectos básicos de Bicep.
Los archivos de Bicep o Terraform de la plantilla se encuentran en la carpeta infra
. La plantilla de inicio de Bicep que seleccionó generó tres archivos como punto de partida:
main.bicep
: actúa como punto de entrada principal para la ejecución de Bicep y se usa para definir los recursos que se aprovisionarán en Azure. El archivomain.bicep
también puede hacer referencia a otros módulos (archivos) de Bicep que le permiten extraer definiciones de recursos en archivos más detallados y reutilizables.abbreviations.json
: un archivo JSON que proporciona muchas abreviaturas de nomenclatura útiles. Este archivo se carga en el archivomain.bicep
durante la ejecución y proporciona un conjunto de prefijos de nomenclatura lógicos y coherentes para distintos recursos de Azure.main.parameters.json
: un archivo JSON que define los valores predeterminados de parámetros de plantilla importantes, como la ubicación predeterminada de Azure o el nombre del entorno.
Puede definir y aprovisionar los recursos de Azure necesarios para la aplicación mediante la actualización del archivo main.bicep
y la creación de más archivos de Bicep. Main.bicep
normalmente organiza la ejecución de otros módulos de Bicep pasando parámetros entre ellos. En este ejemplo, creará un módulo de Bicep adicional para definir la instancia de Azure App Service que hospedará la aplicación.
Dentro de la carpeta
infra
de la plantilla, cree un nuevo archivo denominadoapp.bicep
.Abra el archivo
app.bicep
y pegue el siguiente fragmento de código: Los comentarios del código describen el propósito de cada sección del código.// Define parameters that can be passed into the module // Parameters allow a module to be reusable @description('The location of where to deploy resources') param location string @description('The name of the App Service Plan') param appServicePlanName string @description('The name of the App Service') param appServiceName string // Define the App Service Plan to manage compute resources resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location properties: { reserved: true } sku: { name: 'F1' } kind: 'linux' } // Define the App Service to host the application resource appService 'Microsoft.Web/sites@2022-03-01' = { name: appServiceName location: location properties: { serverFarmId: appServicePlan.id siteConfig: { linuxFxVersion: 'DOTNETCORE|6.0' } } // Tag used to reference the service in the Azure.yaml file tags: { 'azd-service-name': 'web' } }
Este fragmento de código realiza las siguientes tareas:
- Define un conjunto de parámetros que se pueden pasar al módulo para que sea reutilizable y configurable. Puede optar por parametrizar más valores en las definiciones de recursos para que el módulo sea más flexible.
- Define un plan de App Service para administrar los recursos de proceso para las instancias de App Service.
- Define la instancia de App Service que hospedará la aplicación implementada.
Nota:
Se incluye una etiqueta
azd-service-name
en la definición de Bicep de la instancia de App Service que usará más adelante el archivo de configuraciónAzure.yaml
para asociar una carpeta del código fuente de la aplicación con la instancia de App Service.El nuevo módulo de Bicep creará una instancia de App Service para la plantilla, pero deberá actualizar
main.bicep
para usarla. Busque la carpetainfra
dentro del editor y abra el archivomain.bicep
.El archivo
main.bicep
generado por la plantilla de inicio incluye opciones de configuración útiles automáticamente. Por ejemplo, el archivo define parámetros esenciales, comoenvironmentName
ylocation
. De forma predeterminada, estos parámetros se rellenarán desdemain.parameters.json
si se incluyen en ese archivo, pero también puede reemplazarlos. El código de inicio también se carga en el archivoabbreviations.json
para que esté disponible para trabajar, crea algunas etiquetas y tokens útiles para la nomenclatura del servicio e incluye comentarios útiles con sugerencias para ayudarle a empezar.Hacia la parte inferior del archivo
main.bicep
, busque un comentario similar al siguiente:// Add resources to be provisioned below. // A full example that leverages azd bicep modules can be seen in the todo-python-mongo template: // https://github.com/Azure-Samples/todo-python-mongo/tree/main/infra
Este comentario de marcador de posición resalta dónde incluir los recursos adicionales que quiera aprovisionar. Queremos incluir el módulo de Bicep que cree para la instancia de App Service, así que pegue el siguiente fragmento de código directamente después del comentario:
module web 'app.bicep' = { name: '${deployment().name}-app' scope: rg params: { location: location appServiceName: '${abbrs.webSitesAppService}${resourceToken}' appServicePlanName: '${abbrs.webServerFarms}${resourceToken}' } }
Este fragmento de código realiza las siguientes tareas:
- Define un módulo de Bicep que apunta al archivo que creó en el paso anterior.
- Asigna un nombre al conjunto de implementación de Azure y lo limita al grupo de recursos creado en
main.bicep
. - Pasa parámetros al módulo mediante los valores
abbreviations.json
para ayudar con la nomenclatura.
Los archivos de infraestructura del código fuente de la aplicación ahora forman parte de la plantilla. En la unidad siguiente, agregará configuraciones que describen la relación entre estas partes del proceso de implementación de azd
.