Bicep: automatizando por código la creación de máquinas virtuales.

Bicep IaaC

En esta ocasión, vamos a introducir el lenguaje Bicep, un lenguaje declarativo nativo de Azure que nos proporciona la magia de la programación de la infraestructura como código (IaC).

Como ejemplo de uso y ejecución en el manejo de recursos de Azure, en el siguiente código vamos a especificar la creación de nueva nueva máquina virtual y gestionar la infraestructura como código (IaC).

Con esta guía, deberías poder empezar a usar Bicep para gestionar tu infraestructura en Azure de manera eficiente, aplicando principios de infraestructura como código.

Prerrequisitos

  • Azure CLI: Asegúrate de tener la Azure CLI instalada. Instalar Azure CLI
  • Bicep CLI: Instala la CLI de Bicep. Ejecuta: az bicep install
  • Visual Studio Code (VS Code): Se recomienda utilizar VS Code con la extensión Bicep para facilitar la edición de archivos Bicep.

Paso 1: Configurar el Entorno de Trabajo

Iniciar Sesión en Azure:

  • Ejecuta az login y sigue las instrucciones para iniciar sesión.

Crear un Grupo de Recursos:

  • Ejecuta: az group create --name MyResourceGroup --location eastus

Paso 2: Crear un Archivo Bicep

  1. Definir la Infraestructura:
  • Crea un archivo main.bicep en tu entorno de trabajo.
  • Define recursos en este archivo. Aquí tienes un ejemplo básico para crear una máquina virtual (VM) en Azure:
   param location string = 'eastus'
   param vmName string = 'myVM'
   param adminUsername string = 'adminUser'
   param adminPassword string = 'Password123!'

   resource myVnet 'Microsoft.Network/virtualNetworks@2020-06-01' = {
     name: 'myVnet'
     location: location
     properties: {
       addressSpace: {
         addressPrefixes: [
           '10.0.0.0/16'
         ]
       }
     }
   }

   resource mySubnet 'Microsoft.Network/virtualNetworks/subnets@2020-06-01' = {
     name: 'default'
     parent: myVnet
     properties: {
       addressPrefix: '10.0.0.0/24'
     }
   }

   resource myPublicIP 'Microsoft.Network/publicIPAddresses@2020-06-01' = {
     name: 'myPublicIP'
     location: location
     properties: {
       publicIPAllocationMethod: 'Dynamic'
     }
   }

   resource myNIC 'Microsoft.Network/networkInterfaces@2020-06-01' = {
     name: 'myNIC'
     location: location
     properties: {
       ipConfigurations: [
         {
           name: 'ipconfig1'
           properties: {
             privateIPAllocationMethod: 'Dynamic'
             publicIPAddress: {
               id: myPublicIP.id
             }
             subnet: {
               id: mySubnet.id
             }
           }
         }
       ]
     }
   }

   resource myVM 'Microsoft.Compute/virtualMachines@2020-06-01' = {
     name: vmName
     location: location
     properties: {
       hardwareProfile: {
         vmSize: 'Standard_DS1_v2'
       }
       osProfile: {
         computerName: vmName
         adminUsername: adminUsername
         adminPassword: adminPassword
       }
       networkProfile: {
         networkInterfaces: [
           {
             id: myNIC.id
           }
         ]
       }
       storageProfile: {
         imageReference: {
           publisher: 'Canonical'
           offer: 'UbuntuServer'
           sku: '18.04-LTS'
           version: 'latest'
         }
         osDisk: {
           createOption: 'FromImage'
           managedDisk: {
             storageAccountType: 'Standard_LRS'
           }
         }
       }
     }
   }

Paso 3: Desplegar la Infraestructura

Validar el Archivo Bicep:

  • Ejecuta: az bicep build --file main.bicep
  • Esto compilará el archivo Bicep a una plantilla ARM JSON, verificando su sintaxis.

Desplegar el Archivo Bicep:

  • Ejecuta: az deployment group create --resource-group MyResourceGroup --template-file main.bicep
  • Esto desplegará los recursos definidos en el archivo Bicep en el grupo de recursos especificado.

Paso 4: Administrar la Infraestructura

Actualizar Recursos:

  • Modifica el archivo main.bicep según sea necesario.
  • Ejecuta nuevamente az deployment group create --resource-group MyResourceGroup --template-file main.bicep para aplicar los cambios.

Eliminar Recursos: Para eliminar el grupo de recursos y todos los recursos asociados, ejecuta: az group delete --name MyResourceGroup --yes --no-wait

Paso 5: Mejores Prácticas y Recursos Adicionales

Usar Parámetros y Variables: Reutiliza parámetros y variables para hacer tus archivos Bicep más modulares y reutilizables.

Organizar Archivos: Divide grandes despliegues en múltiples archivos Bicep y usa módulos para mejorar la organización y mantenimiento del código.

Documentación y Recursos:

Recursos adicionales

Si quieres profundizar y conocer la automatización del despliegue en lenguage Bicep, te dejamos un artículo interesante sobre cómo implementar un Pipeline con Azure DevOps para controlar su versionado, pautas de despliegue y validación.

Si Bicep es un concepto completamente nuevo para ti, te recomiendo que eches un vistazo a la documentación oficial en el repositorio de GitHub. Otro buen material es el módulo de Microsoft Learn para Bicep.

Si quieres saber más acerca de la historia de Bicep y su proyecto de creación, os dejamos un enlace interesante del proyecto.

Os animamos a compartir con nosotros vuestras opiniones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *