Skip to content

dss-provisioner

Terraform-style resource-as-code for Dataiku DSS


Define Dataiku DSS resources as YAML, then plan and apply changes with a familiar CLI workflow.

# dss-provisioner.yaml
provider:
  host: https://dss.company.com
  project: ANALYTICS

datasets:
  - name: customers_raw
    type: snowflake
    connection: snowflake_prod
    schema_name: RAW
    table: CUSTOMERS

  - name: customers_clean
    type: filesystem
    connection: filesystem_managed
    path: "${projectKey}/clean/customers"
    managed: true
    format_type: parquet

recipes:
  - name: clean_customers
    type: python
    inputs: customers_raw
    outputs: customers_clean
    code_file: ./recipes/clean_customers.py
$ dss-provisioner plan

  # dss_snowflake_dataset.customers_raw will be created
  + resource "dss_snowflake_dataset" "customers_raw" {
      + name        = "customers_raw"
      + connection  = "snowflake_prod"
      + schema_name = "RAW"
      + table       = "CUSTOMERS"
    }

  # dss_filesystem_dataset.customers_clean will be created
  + resource "dss_filesystem_dataset" "customers_clean" { ... }

  # dss_python_recipe.clean_customers will be created
  + resource "dss_python_recipe" "clean_customers" { ... }

Plan: 3 to add, 0 to change, 0 to destroy.

$ dss-provisioner apply --auto-approve

  dss_snowflake_dataset.customers_raw: Creation complete
  dss_filesystem_dataset.customers_clean: Creation complete
  dss_python_recipe.clean_customers: Creation complete

Apply complete! Resources: 3 added, 0 changed, 0 destroyed.

Why?

  • Version control — Track pipeline changes in git, review in PRs
  • Reproducibility — Spin up identical DSS resources across dev/staging/prod
  • Automation — Deploy DSS changes in CI/CD without UI clicks
  • Visibility — See exactly what will change before applying

Next steps