Bundles en CI/CD door vier omgevingen
In deze les ga je
- De sleutels op het hoogste niveau van een bundle en de vier hoofdcommando's beschrijven
- Targets structureren voor dev, test, acceptatie en productie met de catalog als variabele
- Een wijziging via pull requests door vier branches promoveren
- Opsommen wat de pipeline bij elke pull request moet controleren
Aangeklikt werk is onreviewbaar
Een pipeline die in de workspace-interface is gebouwd, werkt op de dag dat hij gebouwd wordt. Zes maanden later weet niemand wie het schema wijzigde, waarom de clustergrootte verdubbelde of hoe je het geheel in een andere omgeving herbouwt. Bundles lossen dat op door het project als code te beschrijven: jobs, pipelines, dashboards en hun instellingen staan in bestanden, gaan door pull requests en worden via een pipeline uitgerold.
De documentatie noemt de functie nu Declarative Automation Bundles en zegt dat ze eerder Databricks Asset Bundles heette. Veel teams, en onze eigen artikelen, zeggen nog Asset Bundles of DABs. Het is hetzelfde. De opdrachtregel blijft databricks bundle.
In deze les bouwen we een bundle op, definiëren we de vier omgevingen en stellen we de pipelineregels op die een wijziging van een featurebranch naar productie brengen. Terraform voor de omliggende infrastructuur behandelen we niet. Die heeft een eigen plek in de governancecursus.
Wat een bundle is
Een bundle verpakt bronbestanden, definities van Databricks-resources (zoals jobs, pipelines en dashboards), workspaceconfiguratie en tests in één project dat naar een doelomgeving wordt uitgerold. Hij is gedefinieerd in YAML en is een functie van de Databricks CLI, volgens de documentatie versie 0.218.0 of hoger.
De levenscyclus heeft vier commando's die je dagelijks gebruikt:
| Commando | Wat het doet |
|---|---|
databricks bundle init | Maak een bundle vanuit een standaard- of eigen template |
databricks bundle validate | Controleer de configuratie zonder uit te rollen |
databricks bundle deploy | Rol uit naar een target |
databricks bundle run | Draai een job of pipeline uit de bundle |
Het hoofdbestand is databricks.yml in de projectroot. Volgens de documentatie zijn de sleutels op het hoogste niveau:
bundle: kerninstellingen.nameis verplicht.include: andere configuratiebestanden of padpatronen om te laden.variables: eigen waarden die door de bundle worden hergebruikt.resources: de workspace-objecten die worden uitgerold, zoals jobs, pipelines en dashboards.targets: uitrolomgevingen zoalsdevenprod. Precies één magdefault: truehebben.workspace: instellingen zoalshostenroot_path.permissions: rechten die op de gedefinieerde resources worden toegepast.run_as: de gebruiker of service principal die de bundle draait.
Het minimale voorbeeld uit de documentatie laat zien hoe een target de basisdefinitie overschrijft. Het dev-target is de standaard, dus databricks bundle deploy gaat naar dev en databricks bundle deploy -t prod gaat naar productie.
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456Een opzet in NexOps-stijl
Voor een domeinpipeline gebruiken we één bundle met een pipelineresource, een jobresource en vier targets. De listing is schematisch: de exacte sleutels van de pipeline- en jobresources hangen af van je CLI-versie, dus draai databricks bundle validate tegen het actuele schema.
Illustratie
# databricks.yml (schematisch). Vervang hosts en identiteiten per omgeving.
bundle:
name: sales-orders
include:
- resources/*.yml # pipeline- en jobdefinities staan in eigen bestanden
variables:
catalog:
description: Unity Catalog-catalog voor deze omgeving
targets:
dev:
default: true
variables: { catalog: dev_sales }
workspace: { host: https://<dev-workspace-url> }
test:
variables: { catalog: test_sales }
workspace: { host: https://<test-workspace-url> }
acc:
mode: production
variables: { catalog: acc_sales }
workspace: { host: https://<acc-workspace-url> }
run_as: { service_principal_name: <acc-service-principal-application-id> }
prd:
mode: production
variables: { catalog: prd_sales }
workspace: { host: https://<prd-workspace-url> }
run_as: { service_principal_name: <prd-service-principal-application-id> }Drie details dragen het ontwerp. De catalog is een variabele, zodat dezelfde pipelinecode in dev naar dev_sales schrijft en in productie naar prd_sales. Resourcedefinities staan in resources/*.yml, waardoor databricks.yml kort blijft. En acc en prd draaien als service principal, nooit als persoon.
De vier omgevingen en vier branches
Onze standaard gebruikt vier omgevingen, dev, test, acc en prd, elk met een eigen workspace, catalogs, Key Vault en service principal. Er zijn vier langlevende branches: dev, test, acc en main, waarbij main naar productie uitrolt.
- Maak een featurebranch vanuit
dev. - Open een pull request naar
dev. De build draait validatie en tests. Een reviewer keurt goed. Squash merge. - De pipeline rolt de bundle uit naar het
dev-target. - Promoveer met een pull request van
devnaartest, dantestnaaracc, danaccnaarmain. Sla nooit een omgeving over. Elke stap rolt uit naar het target van die omgeving. - Acceptatie en productie vragen twee reviewers en een goedkeuringspoort vóór de uitrol.
Maak bij hotfixes een branch vanuit main, rol uit via dezelfde pipeline en merge de fix terug naar beneden.
Ons artikel over declaratieve CI/CD met Asset Bundles loopt een volledige stroom door en dat over SAT uitrollen met bundles door dev, test, acceptatie en productie toont hetzelfde patroon op een echt product.
Wat de pipeline moet controleren
Draai dit bij elke pull request:
- Lint- en formatcontroles en unittests met een coverage-poort.
databricks bundle validatevoor elk gewijzigd target.- Statische analyse, afhankelijkheden- en licentiescan en secret scanning.
- Infrastructuurcontroles als Terraform wijzigde.
Rol alleen uit vanuit de CI/CD-pipeline, met workload identity federation in plaats van opgeslagen geheimen. Draai databricks bundle deploy niet vanaf een laptop naar test, acc of prd. Een uitrol vanaf een laptop slaat elke controle over die je net hebt gebouwd.
Houd logica uit de YAML
Bundles beschrijven waar en wanneer dingen draaien. Zet bedrijfslogica in Python-pakketten of SQL-bestanden en houd notebooks dun: ze roepen de logica aan. Zo kun je de logica unittesten en blijft de bundle leesbaar. Hergebruik gedeelde include-bestanden voor gangbare resources, zoals policies, rechten, meldingen en tags, in plaats van ze tussen bundles te kopiëren.
Veelgemaakte fouten
- "Even" met de hand uitrollen. De omgevingen driften uit elkaar en niemand kan uitleggen waarom.
- Omgevingsnamen in code. Gebruik variabelen en targets.
- Een persoon als
run_as. De uitrol breekt als die persoon vertrekt. - Rechten aan gebruikers. Stel rechten in de bundle in, aan groepen.
- Eén bundle voor alles. Splits per domein, zodat een wijziging een kleine impact heeft.
Samenvatting
Beschrijf jobs en pipelines als bundle, met één target per omgeving en de catalog als variabele. Promoveer via vier branches met pull requests. Rol alleen uit vanuit de pipeline, valideer bij elke pull request en draai als service principal.
Volgende les: datakwaliteit en monitoring zodra de pipelines draaien.
Het idee in één schema
Promotie door vier omgevingen
- featurebranch
- devPull request, validate
- test
- accTwee reviewers, goedkeuring
- main: prd
Kenniscontrole
Beantwoord elke vraag. Je ziet meteen de reden achter elk antwoord.
0 van 3 beantwoord
Praktisch lab
Doel. Maak en valideer een bundle met een job en twee targets met de Databricks CLI.
Waar je het draait
Lokale tooling Draai dit lab met opdrachtregeltools op je eigen computer: de Databricks CLI en, waar de stappen dat zeggen, Terraform.
Stappen
- Installeer de Databricks CLI (versie 0.218.0 of hoger) en verbind hem met je Free Edition-workspace.
- Draai databricks bundle init en kies een standaardtemplate, of begin met het hello-bundle-voorbeeld uit de les.
- Voeg een variabele catalog en twee targets toe, dev en test, met verschillende waarden. Verwijs naar de variabele in je jobparameters.
- Draai databricks bundle validate en los elke melding op. Rol daarna uit naar dev met databricks bundle deploy.
- Schrijf een CONTRIBUTING-notitie van drie regels die stelt: geen handmatige uitrol naar test, acc of prd.
Verwacht resultaat
validate slaagt, de job verschijnt in de workspace onder de dev-uitrol en de notitie beschrijft de pipelineregel.
Verdiepen
Officiële documentatie en aanbevolen cursussen van de aanbieders.
- Databricks
- Betaald examen
- Gevorderd
Databricks Certified Data Engineer Professional
Het gevorderde certificaat voor productiepipelines, streaming, beveiliging en performance.
- docs.databricks.com
Declarative Automation Bundles
Open de documentatie : Declarative Automation Bundles. Opent bij de aanbieder
- docs.databricks.com
Bundleconfiguratie
Open de documentatie : Bundleconfiguratie. Opent bij de aanbieder
Lees bij NexOps
Artikelen uit onze eigen projecten over hetzelfde onderwerp.
Bronnen
Laatst gecontroleerd 2026-11-11
We controleren elke bron aan de hand van de officiële documentatie. Producten veranderen, dus bevestig details daar voordat je bouwt.