Azure Bicep avanzado: testing, linting y despliegue seguro multi-entorno
Resumen
Bicep permite IaC declarativo en Azure, pero en producción necesitas testing, linting y despliegue seguro por entorno. Este post va al grano: cómo testear plantillas, usar linting, parametrizar para dev/prod y evitar errores comunes.
¿Qué es Bicep avanzado?
- Modularización y reutilización
- Testing de plantillas antes de deploy
- Linting para calidad y seguridad
- Parametrización por entorno (dev, prod, test)
- Integración con pipelines CI/CD
Arquitectura / Cómo funciona
flowchart LR
Dev[Dev] --> CI[CI Pipeline]
CI --> Lint[Lint]
CI --> Test[Test]
CI --> Deploy[Deploy]
Deploy --> Azure[Azure]
Azure --> RG1[Resource Group Dev]
Azure --> RG2[Resource Group Prod]
Testing de plantillas Bicep
- Validar sintaxis:
- Test de despliegue (dry-run):
- Test unitario con PSRule for Azure:
Linting y calidad
- Usar bicep linter:
- Reglas custom en
.bicepconfig.json:
Parametrización multi-entorno
- Usar parámetros y archivos por entorno:
- Ejemplo de parámetros:
Integración CI/CD
- Pipeline YAML ejemplo:
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - script: bicep build main.bicep displayName: 'Build Bicep' - script: bicep linter main.bicep displayName: 'Lint Bicep' - script: pwsh -c "Invoke-PSRule -Path ./main.bicep" displayName: 'Test Bicep' - script: az deployment group create --resource-group rg-dev --template-file main.bicep --parameters @dev.parameters.json displayName: 'Deploy Dev'
Buenas prácticas
- Nunca hardcodear secretos en plantillas
- Usar Key Vault para parámetros sensibles
- Validar y testear antes de cada despliegue
- Mantener módulos reutilizables y versionados
- Revisar resultados de linting y testing en cada PR
Costes
- Bicep: gratis
- PSRule: gratis
- Azure DevOps: desde $0 (hasta 1,800 min/mes)