(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Infraestrutura como Código & DevOps
Infraestrutura como Código & DevOps 1 min

Bicep: infraestructura Azure como código — de cero a producción

João Barros 13 de November de 2024 1 min de lectura

Bicep es el lenguaje de IaC (Infrastructure as Code) de Microsoft para Azure, con una sintaxis más limpia que los ARM templates puros, compilación automática a JSON e integración nativa con Azure CLI y DevOps.

Estructura básica de un fichero Bicep

// main.bicep
@description('Entorno de deployment')
@allowed(['dev', 'test', 'prod'])
param environment string

@description('Ubicación de los recursos')
param location string = resourceGroup().location

var prefix = 'bconcepts-${environment}'

// Recurso: Storage Account
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
    name: 'sta${replace(prefix, '-', '')}'
    location: location
    sku: { name: 'Standard_LRS' }
    kind: 'StorageV2'
    properties: {
        isHnsEnabled: true    // ADLS Gen2
        minimumTlsVersion: 'TLS1_2'
    }
}

// Output para referenciar en otros módulos
output storageAccountId string = storageAccount.id

Módulos — reutilización de componentes

// modules/keyvault.bicep
param name string
param location string
param principalId string

resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = {
    name: name
    location: location
    properties: {
        tenantId: subscription().tenantId
        sku: { name: 'standard', family: 'A' }
        enableRbacAuthorization: true
        enableSoftDelete: true
        softDeleteRetentionInDays: 90
    }
}

// main.bicep — usar el módulo
module keyVault 'modules/keyvault.bicep' = {
    name: 'deploy-keyvault'
    params: {
        name: 'kv-${prefix}'
        location: location
        principalId: adf.identity.principalId  // dar acceso al ADF
    }
}

Deploy con Azure CLI

az group create --name rg-analytics-prod --location westeurope

az deployment group create \
  --resource-group rg-analytics-prod \
  --template-file main.bicep \
  --parameters environment=prod \
  --what-if  # previsualizar los cambios antes de aplicar

Pipeline CI/CD (GitHub Actions)

name: Deploy Infrastructure
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: azure/login@v2
        with: { creds: ${{ secrets.AZURE_CREDENTIALS }} }
      - uses: azure/arm-deploy@v2
        with:
          resourceGroupName: rg-analytics-prod
          template: ./infra/main.bicep
          parameters: environment=prod

Conclusión

Bicep es la elección natural para IaC en Azure — menos verboso que ARM, más nativo que Terraform para recursos Azure puros. Con módulos, la infraestructura es reutilizable y testeable. Añada siempre --what-if antes de un deploy de producción.

Compartir: