Puedes leer sin crear un espacio. Créalo solo cuando quieras guardar.
Guardar progresoLección 2 de 5
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.
17 min aprox.
02Implementació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.
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.
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.
¿Por qué `run_as` debe separarse del usuario que ejecuta `bundle deploy`?
Profundiza
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.Resumen
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.