Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Professional
Declarative Automation Bundles y CI/CD
Define recursos como código y promociona el mismo artefacto validado entre targets.
- Estructurar un bundle completo
- Validar y desplegar con CLI
- Integrar identidad de servicio y pipeline Git
01Modelo mentalBundle configuration y includes
Modela código, artefactos y recursos Databricks como una unidad declarativa versionada mediante Declarative Automation Bundles.
+
Bundle configuration y includes
Modela código, artefactos y recursos Databricks como una unidad declarativa versionada mediante Declarative Automation Bundles.
- Objetivo
- Modela código, artefactos y recursos Databricks como una unidad declarativa versionada mediante Declarative Automation Bundles.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m28
Declarative Automation Bundles —antes Asset Bundles— describen jobs, pipelines, permisos, artefactos y configuración junto al código. `databricks.yml` identifica el bundle y puede incluir ficheros por dominio; `resources` usa el esquema de las APIs de Databricks, mientras `artifacts` construye wheels u otros entregables. `sync` controla qué fuentes se envían al workspace.
Un bundle no reemplaza Terraform para infraestructura de cuenta o nube. Su frontera natural son recursos del proyecto dentro de Databricks. Evita un YAML monolítico: separa `resources/jobs.yml`, `resources/pipelines.yml` y variables; valida que referencias como `${resources.jobs.orders.id}` se resuelven sin hardcodear IDs entre ambientes.
Modelo mental
Declarative Automation Bundles describen un proyecto Databricks completo como código: fuentes, artefactos, recursos, variables, permisos y targets forman una unidad que puede revisarse y desplegarse repetidamente. Desde el 16 de marzo de 2026 este es el nombre oficial de la capacidad antes llamada Databricks Asset Bundles; el blueprint Professional vigente, publicado antes del cambio, conserva Asset Bundles, pero ambos nombres señalan el mismo mecanismo evaluable. El bundle no sustituye el aprovisionamiento de toda la cuenta ni convierte cualquier script en infraestructura declarativa. Su frontera es el proyecto y sus recursos de aplicación, como Lakeflow Jobs y pipelines, enlazados a código versionado y a una identidad de despliegue.
Definición versionada de un proyecto Databricks que agrupa código, artefactos, configuración y recursos desplegables mediante la CLI.
Hace revisables y repetibles tanto la lógica como la configuración operativa que antes podía cambiarse manualmente.Nombre anterior de Declarative Automation Bundles, todavía presente en el blueprint Professional del 30 de noviembre de 2025.
Reconocer el alias evita tratar una pregunta de examen como producto obsoleto o diferente del mecanismo actual.Objeto de workspace cuya configuración deseada se expresa en YAML, como un Lakeflow Job, pipeline o dashboard compatible.
Permite revisar diferencias, aplicar despliegues coherentes y reconstruir configuración sin edición manual del entorno.bundle:
name: orders-platform
include:
- resources/*.yml
artifacts:
default:
type: whl
build: python -m build
path: .
sync:
include:
- src/**
- tests/**
exclude:
- .venv/**El recurso job puede vivir en `resources/orders.job.yml` y referenciar la wheel construida por el artefacto.
Puntos clave
- El bundle une configuración de recursos y artefactos versionados.
- Usa includes y referencias en lugar de duplicar IDs.
- Mantén fuera credenciales e infraestructura cloud no propia del proyecto.
Evita
- Guardar host, token o contraseña dentro de `databricks.yml`.
- Usar bundles para crear redes, buckets y metastores que pertenecen a otra capa de infraestructura.
Recuerdo activo
¿Qué ventaja aporta referenciar un job por `${resources.jobs.<key>.id}`?
Borrador privado · solo en este navegador02ImplementaciónResources: jobs y pipelines
Define targets dev, test y prod con overrides mínimos, rutas aisladas y modos que expresen claramente la intención de cada ambiente.
+
Resources: jobs y pipelines
Define targets dev, test y prod con overrides mínimos, rutas aisladas y modos que expresen claramente la intención de cada ambiente.
- Objetivo
- Define targets dev, test y prod con overrides mínimos, rutas aisladas y modos que expresen claramente la intención de cada ambiente.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m28
Un target aplica variables, workspace, modo y overrides a la misma definición base. Development mode añade aislamiento apropiado al desarrollador y permite iteración; production mode aplica validaciones y nombres estables. Las variables cambian catálogo, esquema, policy o warehouse, pero no deben duplicar toda la definición del job.
Usa `${bundle.target}` y `${workspace.current_user.userName}` para rutas de desarrollo, y una identidad de despliegue estable en producción. Define `run_as` de forma explícita: quien despliega no tiene por qué ser quien ejecuta. Antes de promocionar, compara el plan para detectar eliminaciones o reemplazos inesperados.
Modelo mental
Un target no es una copia completa del proyecto, sino una transformación controlada de una base común. La configuración compartida expresa lo que debe permanecer idéntico; los overrides declaran sólo diferencias legítimas como workspace, identidad, catálogo, schedule o escala. Los modos development y production añaden comportamientos convencionales y guardrails, pero no reemplazan una revisión explícita de cada diferencia. El aislamiento usa root paths, schemas y nombres que impiden colisión entre desarrolladores o ambientes. Si cada target contiene una segunda definición completa, el drift queda incorporado al diseño. Si no hay ninguna diferencia, producción puede heredar rutas o permisos de desarrollo. La meta es minimizar variación sin fingir que seguridad y capacidad son iguales.
Configuración nombrada que selecciona workspace, modo, variables y overrides para desplegar el mismo proyecto en un ambiente concreto.
Permite promoción repetible sin mantener copias divergentes de código y recursos para desarrollo, test y producción.Diferencia explícita limitada a aquello que realmente cambia entre ambientes, heredando el resto desde una base compartida.
Reduce drift y hace visible qué propiedades productivas no fueron ejercitadas de forma equivalente en test.Ruta de workspace usada por el bundle para almacenar archivos y estado desplegados bajo una identidad y target.
Un diseño único por ambiente o desarrollador evita colisiones, sobrescrituras y ownership ambiguo entre despliegues.variables:
catalog:
description: Catálogo de datos del target
targets:
dev:
mode: development
default: true
variables:
catalog: dev
workspace:
root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}
prod:
mode: production
variables:
catalog: prod
run_as:
service_principal_name: ${var.prod_run_as}Declara `prod_run_as` por un canal seguro de configuración; no pegues credenciales ni un ID de usuario personal.
Puntos clave
- Una base común reduce drift; targets sólo expresan diferencias reales.
- Aísla rutas y nombres de desarrollo por usuario/target.
- Separa deployment identity de `run_as` del workload.
Evita
- Copiar el job entero dentro de cada target y permitir que sus DAG diverjan.
- Ejecutar producción como el desarrollador que lanzó el deploy.
Recuerdo activo
¿Por qué `run_as` debe separarse del usuario que ejecuta `bundle deploy`?
Borrador privado · solo en este navegador03OperaciónVariables, substitutions y targets
Usa `validate`, `plan`, `deploy` y `run` como puertas distintas; no conviertas un deploy correcto en prueba suficiente del workload.
+
Variables, substitutions y targets
Usa `validate`, `plan`, `deploy` y `run` como puertas distintas; no conviertas un deploy correcto en prueba suficiente del workload.
- Objetivo
- Usa `validate`, `plan`, `deploy` y `run` como puertas distintas; no conviertas un deploy correcto en prueba suficiente del workload.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m28
`bundle validate` resuelve configuración y comprueba el esquema contra el target. `bundle plan` muestra acciones previstas sin aplicarlas. `bundle deploy` sincroniza artefactos y recursos, y `bundle run` ejecuta un recurso ya desplegado. Una pipeline segura captura el plan, requiere aprobación para cambios destructivos y despliega el mismo artefacto validado.
La validación no ejecuta SQL ni demuestra permisos de datos del `run_as`. Después del deploy, ejecuta un smoke test con parámetros y datos acotados, comprueba estado y contrato, y sólo entonces habilita triggers o tráfico productivo. Usa `bundle summary` y output estructurado para trazabilidad.
Modelo mental
Validate, plan, deploy y run responden preguntas diferentes. Validate comprueba que la configuración compone y referencia elementos válidos; plan muestra el cambio esperado sin aplicarlo; deploy materializa recursos y artefactos; run ejecuta un recurso ya desplegado. Ninguna etapa implica automáticamente la siguiente. Un YAML válido puede describir un cambio destructivo, un despliegue correcto puede contener código defectuoso y un run exitoso puede publicar datos semánticamente erróneos. La entrega robusta coloca evidencia entre transiciones: revisión del plan, aprobación según ambiente, smoke y validación de datos. En el blueprint anterior, estas operaciones aparecen bajo Asset Bundles; en la CLI actual pertenecen a Declarative Automation Bundles y conservan el mismo razonamiento.
Comprobación estática de estructura, tipos, referencias y configuración resuelta para un target antes de modificar recursos remotos.
Detecta errores baratos temprano, aunque no garantiza seguridad del cambio ni corrección del código ejecutado.Representación previa de las acciones que alinearían los recursos reales con la configuración declarada del bundle.
Permite revisar actualizaciones o eliminaciones inesperadas antes de que afecten un ambiente compartido o productivo.Ejecución pequeña posterior al despliegue que confirma arranque, identidad, dependencias y un recorrido crítico del recurso.
Cubre la brecha entre recursos creados correctamente y un workload realmente capaz de operar en ese ambiente.databricks bundle validate -t test
databricks bundle plan -t test
databricks bundle deploy -t test
databricks bundle run -t test orders_smoke -- --business_date 2026-07-20
# Tras aprobar evidencia y el plan de prod:
databricks bundle plan -t prod
databricks bundle deploy -t prodNo uses `--force` para saltar validaciones de rama como comportamiento normal de CI.
Puntos clave
- Validate comprueba configuración; plan anticipa cambios; deploy aplica; run verifica ejecución.
- Revisa manualmente cambios destructivos antes de desplegar.
- Añade smoke test post-deploy antes de activar producción.
Evita
- Desplegar directamente en prod sin leer un plan que elimina o reemplaza recursos.
- Confundir bundle validado con job funcional sobre datos y permisos reales.
Recuerdo activo
¿Qué aporta `bundle plan` que no aporta `bundle validate`?
Borrador privado · solo en este navegador04Diagnósticovalidate, deploy y run
Autentica CI con OAuth y aplica promoción por ambientes sin tokens personales, rebuilds ni edición manual del workspace.
+
validate, deploy y run
Autentica CI con OAuth y aplica promoción por ambientes sin tokens personales, rebuilds ni edición manual del workspace.
- Objetivo
- Autentica CI con OAuth y aplica promoción por ambientes sin tokens personales, rebuilds ni edición manual del workspace.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m28
CI debe usar workload identity federation o un service principal con OAuth y permisos limitados al workspace/recursos destino. Los secretos, hosts y client IDs viven en el sistema de CI o perfiles seguros. Un PAT personal tiene ciclo de vida humano, privilegios difíciles de justificar y riesgo de exposición; no es la identidad productiva adecuada.
Construye y prueba la wheel, publica un manifiesto de hash, despliega en test y promueve el mismo artefacto a prod. Protege el ambiente prod con aprobación y branch policy. Prohíbe ediciones manuales de recursos gestionados por bundle o documenta un proceso de importación del cambio, porque el siguiente deploy puede sobrescribir drift.
Modelo mental
CI es un actor de producción y debe tener identidad propia. OAuth para un service principal entrega credenciales renovables o de corta duración y separa claramente automatización de una persona; un personal access token ata continuidad, auditoría y revocación al usuario que lo creó. La promoción no significa reconstruir: CI toma el artefacto cuyo hash superó pruebas, autentica contra el target y aplica sólo permisos de despliegue y ejecución requeridos. Separar identidades por ambiente limita blast radius, aunque una organización puede optar por un principal común con acceso explícito cuando su modelo lo justifica. En ambos casos, los secretos viven en el proveedor de CI y nunca en databricks.yml, logs o wheel.
Flujo de autorización máquina a máquina mediante el cual un service principal obtiene tokens sin depender de una sesión humana.
Mejora rotación, continuidad y atribución de CI frente a credenciales personales de larga duración.Identidad no humana gobernada que representa una aplicación o automatización y recibe permisos explícitos en cada workspace.
Separa responsabilidad del pipeline respecto a usuarios y permite mínimo privilegio, auditoría y revocación independientes.Movimiento del mismo artefacto probado entre ambientes sin reconstruir ni modificar sus bytes durante el proceso.
Garantiza que la evidencia de test corresponde exactamente al código que finalmente alcanza producción.promotion:
source_commit: 4f2c9ab
artifact: orders_pipeline-1.4.0-py3-none-any.whl
sha256: "<sha256-verificado-en-ci>"
deploy_identity: sp-data-platform-cicd
run_identity: sp-orders-prod
gates:
- bundle_plan_approved
- integration_tests_passed
- rollback_version_recordedEl fichero ilustra evidencia; las credenciales se obtienen por OAuth y nunca se escriben en el manifiesto.
Puntos clave
- CI usa OAuth y service principal de mínimo privilegio.
- El mismo hash atraviesa test y producción.
- Los recursos declarativos no se editan manualmente sin reconciliar código.
Evita
- Reutilizar un PAT de administrador para todos los workspaces.
- Volver a construir el paquete en cada ambiente y perder identidad del artefacto.
Recuerdo activo
¿Por qué un PAT personal es una mala dependencia de producción?
Borrador privado · solo en este navegador05Decisión de diseñoCI/CD, service principals y approvals
Gestiona drift, ownership, permisos y rollback como parte del bundle para que un despliegue sea reversible y auditable.
+
CI/CD, service principals y approvals
Gestiona drift, ownership, permisos y rollback como parte del bundle para que un despliegue sea reversible y auditable.
- Objetivo
- Gestiona drift, ownership, permisos y rollback como parte del bundle para que un despliegue sea reversible y auditable.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m28
Un recurso creado manualmente puede incorporarse mediante generación o binding según soporte, pero primero hay que decidir quién será su fuente de verdad. Dos bundles no deben gestionar el mismo job. Usa permisos declarados, nombres estables y ownership operativo; revisa el plan cuando cambia la identidad o la ruta raíz porque puede aparentar un recurso nuevo.
Rollback normalmente despliega la última versión conocida del bundle y artefacto, no restaura datos automáticamente. Los cambios de esquema requieren una estrategia compatible hacia delante y hacia atrás. Conserva manifest, plan y resultados de smoke test por release; si un deploy falla a mitad, inspecciona el estado real antes de relanzar.
Modelo mental
El estado declarado, el estado desplegado y el estado que realmente ejecuta producción pueden divergir. Drift aparece cuando alguien edita un recurso fuera del bundle, otra automatización comparte ownership o una referencia externa cambia. El bundle necesita una frontera de propietario: un recurso tiene una fuente de verdad y una identidad autorizada a modificarlo. Permissions también son configuración y deben evitar que el deploy se quite a sí mismo acceso o conceda control excesivo. Rollback no siempre es aplicar el commit anterior: código, schema y datos pueden haber evolucionado. Una estrategia reversible conserva artefactos, planes, compatibilidad hacia atrás y procedimientos para detener, redeployar o avanzar con una corrección.
Diferencia entre la configuración versionada que se considera deseada y el estado real modificado por personas o automatizaciones externas.
Hace que despliegues sean impredecibles y puede reintroducir cambios manuales, permisos incorrectos o recursos huérfanos.Regla que asigna una única fuente de verdad y responsables autorizados para gestionar cada recurso desplegado.
Evita que dos sistemas compitan por el mismo objeto y sobrescriban mutuamente su configuración.Estrategia de cambio que añade primero compatibilidad nueva, migra consumidores y retira después la forma anterior.
Mantiene una ventana donde versiones adyacentes funcionan y hace viable rollback sin revertir datos destructivamente.databricks bundle validate -t prod
databricks bundle plan -t prod
databricks bundle summary -t prod
# Si el job ya existe, documenta ownership y usa el flujo
# de generación/binding soportado en lugar de duplicarlo.No ejecutes binding a ciegas: confirma que ningún otro bundle o proceso gestiona ese recurso.
Puntos clave
- Un recurso tiene una sola fuente de verdad y un único bundle propietario.
- Rollback de configuración no revierte side effects de datos.
- Revisa plan y estado real antes de reparar un deploy parcial.
Evita
- Crear un job duplicado porque cambió `root_path` o la identidad del bundle.
- Creer que desplegar la versión anterior revierte filas ya escritas.
Recuerdo activo