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
- 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:
- Revisa la documentación oficial de Bicep para obtener más información y ejemplos avanzados.
- Utiliza Azure Quickstart Templates para ver ejemplos de implementación y adaptar a tus necesidades.
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.