Konfigurace deklarativních balíčků automation

Tento článek popisuje syntaxi konfiguračních souborů sady, která definuje deklarativní balíčky automatizace (dříve označované jako Sady prostředků Databricks). Podívejte se, co jsou balíčky deklarativní automatizace?

Pokud chcete vytvářet a pracovat se sadami, přečtěte si téma Vývoj deklarativních automatizačních sad.

Referenční informace o konfiguraci sady najdete v tématu Referenční informace o konfiguraci.

databricks.yml

Sada musí obsahovat jeden (a jenom jeden) konfigurační soubor pojmenovaný databricks.yml v kořenové složce projektu sady. databricks.yml je hlavní konfigurační soubor, který definuje balíček, ale může také odkazovat na jiné konfigurační soubory, jako jsou soubory konfigurace prostředků, v mapování include. Konfigurace sady se vyjadřuje v YAML. Další informace o YAML najdete v oficiální specifikaci YAML.

Nejjednodušší databricks.yml definuje název sady, což je požadované mapování nejvyšší úrovně a cílové nasazení.

bundle:
  name: my_bundle

targets:
  dev:
    default: true

Podrobnosti o všech mapováních nejvyšší úrovně najdete v referenčních informacích ke konfiguraci.

Návod

Podpora Pythonu pro balíčky deklarativní automatizace umožňuje definovat prostředky v Pythonu. Viz konfigurace balíčku v Pythonu.

Specifikace

Následující specifikace YAML poskytuje konfigurační klíče nejvyšší úrovně pro deklarativní automatizační sady. Kompletní referenční informace o konfiguraci najdete v referenčních informacích ke konfiguraci a prostředcích deklarativních balíčků automation.

# This is the default bundle configuration if not otherwise overridden in
# the "targets" top-level mapping.
bundle: # Required.
  name: string # Required.
  databricks_cli_version: string
  cluster_id: string
  deployment: Map
  git:
    origin_url: string
    branch: string

# This is the identity to use to run the bundle
run_as:
  - user_name: <user-name>
  - service_principal_name: <service-principal-name>

# These are any additional configuration files to include.
include:
  - '<some-file-or-path-glob-to-include>'
  - '<another-file-or-path-glob-to-include>'

# These are any scripts that can be run.
scripts:
  <some-unique-script-name>:
    content: string

# These are any additional files or paths to include or exclude.
sync:
  include:
    - '<some-file-or-path-glob-to-include>'
    - '<another-file-or-path-glob-to-include>'
  exclude:
    - '<some-file-or-path-glob-to-exclude>'
    - '<another-file-or-path-glob-to-exclude>'
  paths:
    - '<some-file-or-path-to-synchronize>'

# These are the default artifact settings if not otherwise overridden in
# the targets top-level mapping.
artifacts:
  <some-unique-artifact-identifier>:
    build: string
    dynamic_version: boolean
    executable: string
    files:
      - source: string
    path: string
    type: string

# These are for any custom variables for use throughout the bundle.
variables:
  <some-unique-variable-name>:
    description: string
    default: string or complex
    lookup: Map
    type: string # The only valid value is "complex" if the variable is a complex variable, otherwise do not define this key.

# These are the workspace settings if not otherwise overridden in
# the targets top-level mapping.
workspace:
  artifact_path: string
  host: string
  profile: string
  resource_path: string
  root_path: string
  state_path: string

# These are the permissions to apply to resources defined
# in the resources mapping.
permissions:
  - level: <permission-level>
    group_name: <unique-group-name>
  - level: <permission-level>
    user_name: <unique-user-name>
  - level: <permission-level>
    service_principal_name: <unique-principal-name>

# These are the resource settings if not otherwise overridden in
# the targets top-level mapping.
resources:
  alerts:
    <unique-alert-name>:
      # alert settings
  apps:
    <unique-app-name>:
      # app settings
  catalogs:
    <unique-catalog-name>:
      # catalog settings
  clusters:
    <unique-cluster-name>:
      # cluster settings
  dashboards:
    <unique-dashboard-name>:
      # dashboard settings
  database_catalogs:
    <unique-database-catalog-name>:
      # database catalog settings
  database_instances:
    <unique-database-instance-name>:
      # database instance settings
  experiments:
    <unique-experiment-name>:
      # experiment settings
  jobs:
    <unique-job-name>:
      # job settings
  model_serving_endpoints:
    <unique-model-serving-endpoint-name>:
    # model_serving_endpoint settings
  pipelines:
    <unique-pipeline-name>:
      # pipeline settings
  postgres_branches:
    <unique-postgres-branch-name>:
      # postgres branch settings
  postgres_endpoints:
    <unique-postgres-endpoint-name>:
      # postgres endpoint settings
  postgres_projects:
    <unique-postgres-project-name>:
      # postgres project settings
  quality_monitors:
    <unique-quality-monitor-name>:
    # quality monitor settings
  registered_models:
    <unique-registered-model-name>:
    # registered model settings
  schemas:
    <unique-schema-name>:
      # schema settings
  secret_scopes:
    <unique-secret-scope-name>:
      # secret scopes settings
  sql_warehouses:
    <unique-sql-warehouse-name>:
      # sql warehouse settings
  synced_database_tables:
    <unique-synced-database-table-name>:
      # synced database table settings
  volumes:
    <unique-volume-name>:
    # volumes settings

# These are the targets to use for deployments and workflow runs. One and only one of these
# targets can be set to "default: true".
targets:
  <some-unique-programmatic-identifier-for-this-target>:
    artifacts:
      # artifact build settings for this target
    bundle:
      # bundle settings for this target
    default: boolean
    git: Map
    mode: string
    permissions:
      # permissions for this target
    presets:
      <preset>: <value>
    resources:
      # resource settings for this target
    sync:
      # sync settings for this target
    variables:
      <defined-variable-name>: <non-default-value> # value for this target
    workspace:
      # workspace settings for this target
    run_as:
      # run_as settings for this target

Příklady

Tato část obsahuje některé základní příklady, které vám pomůžou pochopit, jak fungují sady prostředků a jak strukturovat konfiguraci.

Poznámka:

Příklady konfigurace, které demonstrují funkce sady prostředků a běžné případy použití sady prostředků, najdete v příkladech konfigurace sady a v úložišti příkladů sady prostředků na GitHubu.

Následující příklad konfigurace svazku určuje místní soubor s názvem hello.py, který je ve stejném adresáři jako konfigurační soubor databricks.yml. Spustí tento poznámkový blok jako úlohu pomocí vzdáleného clusteru se zadaným ID clusteru. Adresa URL vzdáleného pracovního prostoru a přihlašovací údaje pro ověřování pracovního prostoru se čtou z místního konfiguračního profilu volajícího s názvem DEFAULT.

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

Následující příklad přidá cíl s názvemprod, který používá jinou adresu URL vzdáleného pracovního prostoru a přihlašovací údaje pro ověřování pracovního prostoru, které se čtou z odpovídající .databrickscfg položky souboru volajícího host se zadanou adresou URL pracovního prostoru. Tato úloha spouští stejný poznámkový blok, ale používá jiný vzdálený cluster se zadaným ID clusteru.

Poznámka:

Databricks doporučuje, abyste používali host mapování místo default mapování, všude kde je to možné, protože to činí konfigurační soubory přenosnějšími. Nastavení mapování host dává rozhraní příkazového řádku Databricks pokyn vyhledat odpovídající profil v souboru .databrickscfg a poté použít pole tohoto profilu k určení, který typ ověřování Databricks použít. Pokud existuje více profilů s odpovídajícím host polem, musíte použít --profile možnost u příkazů sady k určení profilu, který se má použít.

Všimněte si, že není nutné deklarovat mapování notebook_task v rámci mapování prod, protože se vrátí k použití mapování notebook_task v rámci mapování nejvyšší úrovně resources, pokud mapování notebook_task není explicitně přepsáno v rámci mapování prod.

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

Pomocí následujících příkazů sady prostředků ověřte, nasaďte a spusťte tuto úlohu v rámci dev cíle. Podrobnosti o životním cyklu sady najdete v tématu Vývoj deklarativních automatizačních sad.

# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run hello_job

# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev hello_job

Pokud chcete místo toho ověřit, nasadit a spustit tuto úlohu v prod rámci cíle:

# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod hello_job

Pokud chcete více modularizace a lepší opakované použití definic a nastavení napříč sadami, rozdělte konfiguraci sady do samostatných souborů:

# databricks.yml

bundle:
  name: hello-bundle

include:
  - '*.yml'
# hello-job.yml

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.yml

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

Dodatečné zdroje