Les 5 van 7 · 55 min · Inclusief lab

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
Ga naar de kenniscontrole

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:

CommandoWat het doet
databricks bundle initMaak een bundle vanuit een standaard- of eigen template
databricks bundle validateControleer de configuratie zonder uit te rollen
databricks bundle deployRol uit naar een target
databricks bundle runDraai 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. name is 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 zoals dev en prod. Precies één mag default: true hebben.
  • workspace: instellingen zoals host en root_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.

yaml
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-fabcd456

Een 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

yaml
# 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.

  1. Maak een featurebranch vanuit dev.
  2. Open een pull request naar dev. De build draait validatie en tests. Een reviewer keurt goed. Squash merge.
  3. De pipeline rolt de bundle uit naar het dev-target.
  4. Promoveer met een pull request van dev naar test, dan test naar acc, dan acc naar main. Sla nooit een omgeving over. Elke stap rolt uit naar het target van die omgeving.
  5. 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 validate voor 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

  1. featurebranch
  2. devPull request, validate
  3. test
  4. accTwee reviewers, goedkeuring
  5. main: prd

Kenniscontrole

Beantwoord elke vraag. Je ziet meteen de reden achter elk antwoord.

0 van 3 beantwoord

  1. Vraag 1 van 3Wat is de actuele gedocumenteerde naam van Databricks Asset Bundles?
  2. Vraag 2 van 3Waarom is de catalog een bundlevariabele?
  3. Vraag 3 van 3Waarom moeten uitrollen naar test, acc en prd uit de pipeline komen?

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.

Installeer de Databricks CLI

Stappen

  1. Installeer de Databricks CLI (versie 0.218.0 of hoger) en verbind hem met je Free Edition-workspace.
  2. Draai databricks bundle init en kies een standaardtemplate, of begin met het hello-bundle-voorbeeld uit de les.
  3. Voeg een variabele catalog en twee targets toe, dev en test, met verschillende waarden. Verwijs naar de variabele in je jobparameters.
  4. Draai databricks bundle validate en los elke melding op. Rol daarna uit naar dev met databricks bundle deploy.
  5. 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.

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.