Cargando...

Bicep: Implementar Azure Database for MySQL

Las bases de datos relacionales son ampliamente utilizadas en soluciones empresariales. Como no podría ser de otra manera, Microsoft Azure proporciona servicios para administrar bases de datos relacionales con los motores conocidos, como SQL Server, PostgreSQL, MySQL y MariaDB. Esto permite desplegar nuevas aplicaciones en la nube y migrar de forma rápida, aplicaciones existentes On-Premises a Azure, sin hacer cambios significativos en las aplicaciones.

Los servicios de Azure para bases de datos son PaaS (plataforma como servicio) en su mayoría, servicios gestionados por Microsoft, por lo tanto, simplifica las tareas operativas al equipo de IT, permitiendo ser más productivos en otras actividades. Con estos servicios la alta disponibilidad está garantizada, escalabilidad y seguridad mejorada. ¡Todo perfecto! la pregunta es, ¿cómo desplegar servicios de bases de datos en Azure? En Crashell nuestro mandamiento es automatización, así que, prepárate, en esta ocasión te mostramos cómo crear un servidor de Azure Database for MySQL de forma automatizada, para ello, te compartimos una plantilla ARM escrita en Bicep.

Qué es Azure Database for MySQL

Es momento de entrar en materia con el servicio de bases de datos MySQL en Azure, pero antes merece la pena recordar ¿qué es MySQL? MySQL nació como un sistema de gestión de bases de datos de código abierto, en la actualidad cuenta también con una versión comercial. MySQL es la base de datos relacional de código abierto más utilizada en aplicaciones de pila LAMP (Linux, Apache, MySQL y PHP).

Azure Database for MySQL es una implementación PaaS de MySQL en la nube de Azure basado en la versión de código abierto (Community edition), por lo que puedes aprovechar tus habilidades y herramientas conocidas de MySQL para entregar aplicaciones de forma rápida y eficiente. Al ser una implementación PaaS, solo debes preocuparte de las bases de datos y por supuesto, de los datos, todo lo que es hardware, sistema operativo y el propio sistema gestor de bases de datos, son responsabilidad de Microsoft. El servicio tiene alta disponibilidad, se puede escalar cuando sea necesario y es un de pago por uso, se proporcionan copias de seguridad automatizadas y opciones de seguridad para las conexiones.

Azure Database for MySQL cuenta con dos opciones de implementación: servidor único y servidor flexible. La plantilla que compartimos a continuación, realiza el despliegue de servidor único.

Plantilla ARM para implementar Azure Database for MySQL

Después de este breve resumen, pasamos al aprovisionamiento de un recurso de Azure Database for MySQL. Seguidamente la plantilla completa para implementar Azure Database for MySQL con Bicep.

@description('Región para crear los recursos')
param location string = resourceGroup().location

@description('Nombre del servidor')
param serverName string = 'crashelldb'

@description('Usuario administrador de la base de datos')
@minLength(1)
param adminUser string

@description('Contraseña del administrador de la base de datos')
@minLength(8)
@secure()
param adminPassword string

@description('Versión de MySQL')
@allowed([
  '5.6'
  '5.7'
  '8.0'
])
param nysqlVersion string = '8.0'

@description('Nivel de precio de Azure database for MySQL')
@allowed([
  'Basic'
  'GeneralPurpose'
  'MemoryOptimized'
])
param skuTier string = 'Basic'

@description('Generación de cómputo')
param skuName string = 'B_Gen5_2'

@description('sku family')
param skuFamily string = 'Gen5'

@description('Capacidad de cómmputo en vCores (2,4,8,16,32,64)')
param skuCapacity int = 2

@description('Almacenamiento (en MB)')
param skuSizeMB int = 5120

@description('Período de retención de copia de seguridad')
param backupRetentionDays int = 7

@description('Configuración de redundancia de copias de seguridad')
param geoRedundantBackup string = 'Disabled'

@description('Habilitar cifrado doble de infraestructura')
param infrastructureEncryption string = 'Disabled'
// El cifrado doble de infraestructura es una capa de cifrado de infraestructura adicional que usa una clave secundaria administrada por el servicio. Si se activa, puede afectar al rendimiento de la base de datos.

@description('Crecimiento automático del almacenamiento')
param storageAutoGrow string = 'Enabled'

resource db_mysql 'Microsoft.DBforMySQL/servers@2017-12-01' = {
  name: serverName
  location: location
  sku: {
    name: skuName
    tier: skuTier
    capacity: skuCapacity
    size: 'skuSizeMB'
    family: skuFamily
  }
  properties: {
    administratorLogin: adminUser
    createMode: 'Default'
    administratorLoginPassword: adminPassword
    version: nysqlVersion
    infrastructureEncryption: infrastructureEncryption
    storageProfile: {
      storageMB: skuSizeMB
      storageAutogrow: storageAutoGrow
      backupRetentionDays: backupRetentionDays
      geoRedundantBackup: geoRedundantBackup
    }
  }
}

Implementar plantilla ARM desde la CLI de Azure

Es ideal comprobar para encontrar errores y obtener una vista previa de los cambios antes de hacer la implementación. Para ello, ejecuta:

az deployment group create --resource-group CrashellRG --template-file db-mysql.bicep -c

El comando anterior hace la comprobación y pregunta si quieres hacer el deployment. Para hacer la implementación sin hacer una comprobación, ejecuta la siguiente instrucción:

az deployment group create --resource-group CrashellRG --template-file db-mysql.bicep

Cambia CrashellRG por tu grupo de recursos.

Para eliminar todos los recursos creados, la forma más rápida es eliminar el grupo de recursos.

Puedes visitar el repositorio Infraestructura como código en Azure con Bicep para encontrar esta plantilla completa y otras que serán de utilidad para aprovisionar recursos en Azure.

  • John Doe
    43 Sales$156,24 Totals
    62%
  • Rosy O'Dowell
    12 Leads$56,24 Totals
    32%

With supporting text below as a natural lead-in to additional content.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled.