Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive la sintassi per i file di configurazione del bundle di asset di Databricks, che definiscono i bundle di asset di Databricks. Consulta Che cosa sono i pacchetti di risorse di Databricks?.
Per creare e usare bundle, vedere Sviluppare bundle di asset di Databricks.
databricks.yml
Un bundle deve contenere un file di configurazione (e solo uno) denominato databricks.yml nella radice della cartella del progetto bundle.
databricks.yml è il file di configurazione principale che definisce un bundle, ma può fare riferimento ad altri file di configurazione, ad esempio i file di configurazione delle include risorse, nel mapping. La configurazione del bundle è espressa in YAML. Per altre informazioni su YAML, vedere la specifica YAML ufficiale.
Il più semplice databricks.yml definisce una distribuzione di destinazione e il nome del bundle, che si trova all'interno della mappatura di primo livello obbligatoria bundle.
bundle:
name: my_bundle
targets:
dev:
default: true
Per informazioni dettagliate su tutti i mapping di primo livello, vedere Mapping.
Suggerimento
Il supporto python per i bundle di asset di Databricks consente di definire le risorse in Python. Vedere Configurazione del bundle in Python.
Specificazione
La specifica YAML seguente fornisce chiavi di configurazione di primo livello per i bundle di asset di Databricks. Per informazioni di riferimento sulla configurazione, vedere Informazioni di riferimento sulla configurazione.
# 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 default workspace settings if not otherwise overridden in
# the targets top-level mapping.
workspace:
artifact_path: string
auth_type: string
azure_client_id: string # For Azure Databricks only.
azure_environment: string # For Azure Databricks only.
azure_login_app_id: string # For Azure Databricks only. Reserved for future use.
azure_tenant_id: string # For Azure Databricks only.
azure_use_msi: true | false # For Azure Databricks only.
azure_workspace_resource_id: string # For Azure Databricks only.
client_id: string # For Databricks on AWS only.
file_path: string
google_service_account: string # For Databricks on Google Cloud only.
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:
apps:
<unique-app-name>:
# See the REST API create request payload reference for apps.
clusters:
<unique-cluster-name>:
# See the REST API create request payload reference for clusters.
dashboards:
<unique-dashboard-name>:
# See the REST API create request payload reference for dashboards.
experiments:
<unique-experiment-name>:
# See the REST API create request payload reference for experiments.
jobs:
<unique-job-name>:
# See REST API create request payload reference for jobs.
model_serving_endpoint:
<unique-model-serving-endpoint-name>:
# See the model serving endpoint request payload reference.
models:
<unique-model-name>:
# See the REST API create request payload reference for models (legacy).
pipelines:
<unique-pipeline-name>:
# See the REST API create request payload reference for :re[LDP] (pipelines).
quality_monitors:
<unique-quality-monitor-name>:
# See the quality monitor request payload reference.
registered_models:
<unique-registered-model-name>:
# See the registered model request payload reference.
schemas:
<unique-schema-name>:
# See the Unity Catalog schema request payload reference.
secret_scopes:
<unique-secret-scope-name>:
# See the secret scope request payload reference.
volumes:
<unique-volume-name>:
# See the Unity Catalog volume request payload reference.
# 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:
# See the preceding "artifacts" syntax.
bundle:
# See the preceding "bundle" syntax.
default: boolean
git: Map
mode: string
permissions:
# See the preceding "permissions" syntax.
presets:
<preset>: <value>
resources:
# See the preceding "resources" syntax.
sync:
# See the preceding "sync" syntax.
variables:
<preceding-unique-variable-name>: <non-default-value>
workspace:
# See the preceding "workspace" syntax.
run_as:
# See the preceding "run_as" syntax.
Esempi:
Questa sezione contiene alcuni esempi di base che consentono di comprendere il funzionamento dei bundle e come strutturare la configurazione.
Nota
Per esempi di configurazione che illustrano le funzionalità del bundle e i casi d'uso comuni del bundle, vedere Esempi di configurazione delbundle e il repository di esempi di bundle in GitHub.
La configurazione del bundle di esempio seguente specifica un file locale denominato hello.py che si trova nella stessa directory del file databricks.ymldi configurazione del bundle . Esegue questo notebook come attività utilizzando il cluster remoto con l'ID cluster assegnato. L'URL dell'area di lavoro remota e le credenziali di autenticazione dell'area di lavoro vengono lette dal profilo di configurazione locale del chiamante denominato 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
Nell'esempio seguente viene aggiunta una destinazione con il nome prod che usa un URL dell'area di lavoro remota e credenziali di autenticazione dell'area di lavoro diverse, che vengono lette dalla voce corrispondente del file del .databrickscfghost chiamante con l'URL dell'area di lavoro specificato. Questo processo esegue lo stesso notebook, ma usa un cluster remoto diverso con l'ID cluster specificato.
Nota
Databricks consiglia di usare il mapping host invece del mapping default laddove possibile, in quanto rende i file di configurazione del bundle più portabili. L'impostazione del host mapping indica all'interfaccia della riga di comando di Databricks di trovare un profilo corrispondente nel .databrickscfg file e quindi usare i campi del profilo per determinare il tipo di autenticazione di Databricks da usare. Se esistono più profili con un campo corrispondente host , è necessario usare l'opzione --profile nei comandi bundle per specificare un profilo da usare.
Si noti che non è necessario dichiarare il mapping notebook_taskall'interno del mapping prod, perché esegue il fallback per usare il mapping notebook_task all'interno del mapping di primo livello resources, se il mapping notebook_task non viene sottoposto esplicitamente a override all'interno del mapping 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
Usare i comandi bundle seguenti per convalidare, distribuire ed eseguire questo processo all'interno della dev destinazione. Per informazioni dettagliate sul ciclo di vita di un bundle, vedere Sviluppo dei Bundle di Asset di Databricks.
# 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
Per convalidare, distribuire ed eseguire questo processo all'interno della destinazione prod invece:
# 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
Per una maggiore modularizzazione e un migliore riutilizzo delle definizioni e delle impostazioni tra bundle, suddividere la configurazione del bundle in file separati:
# 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
Mapping
Le sezioni seguenti descrivono le mappature di alto livello della configurazione del bundle. Per informazioni di riferimento sulla configurazione, vedere Informazioni di riferimento sulla configurazione.
- pacchetto
- run_as
- includere
- Script
- Sincronizzazione
- Manufatti
- Variabili
- Workspace
- Autorizzazioni
- risorse
- Obiettivi
pacchetto
Un file di configurazione del bundle deve contenere un solo mapping di primo livello bundle che associa il contenuto del bundle e le impostazioni dell'area di lavoro di Azure Databricks.
Questo mapping bundle deve contenere un mapping name che specifica un nome programmatico (o logico) per il bundle. Nell'esempio seguente viene dichiarato un bundle con il nome programmatico (o logico) hello-bundle.
bundle:
name: hello-bundle
Un bundle mapping può anche essere figlio di una o più destinazioni nella mappatura destinazioni principale. Ognuna di queste mappature figlio bundle specifica eventuali sostituzioni non predefinite al livello di destinazione. Tuttavia, il valore del mapping di primo livello di bundle non può essere sovrascritto a livello di destinazione.
cluster_id
Il mapping bundle può avere un mapping figlio cluster_id. Questo mapping consente di specificare l'ID di un cluster da usare come override per i cluster definiti altrove nel file di configurazione del bundle. Per informazioni su come recuperare l'ID di un cluster, vedere URL e ID della risorsa di calcolo.
L'override cluster_id è destinato agli scenari di solo sviluppo ed è supportato solo per la destinazione con il relativo mapping mode impostato su development. Per altre informazioni sulla mappatura target, vedere destinazioni.
compute_id
Nota
Questa impostazione è deprecata. Usare cluster_id invece.
Il mapping bundle può avere un mapping figlio compute_id. Questo mapping consente di specificare l'ID di un cluster da usare come override per i cluster definiti altrove nel file di configurazione del bundle.
Git
È possibile recuperare ed eseguire l'override dei dettagli del controllo della versione Git associati al bundle, utile per propagare i metadati di distribuzione che possono essere usati in un secondo momento per identificare le risorse. Ad esempio, è possibile tracciare l'origine del repository di un processo distribuito da CI/CD.
Ogni volta che si esegue un bundle comando come validate, deploy o run, il bundle comando popola l'albero di configurazione del comando con le impostazioni predefinite seguenti:
-
bundle.git.origin_url, che rappresenta l'URL di origine del repository. Si tratta dello stesso valore che si otterrebbe se è stato eseguito il comandogit config --get remote.origin.urldal repository clonato. È possibile usare le sostituzioni per fare riferimento a questo valore con i file di configurazione del bundle, come${bundle.git.origin_url}. -
bundle.git.branch, che rappresenta il ramo corrente all'interno del repository. Si tratta dello stesso valore che si otterrebbe se è stato eseguito il comandogit branch --show-currentdal repository clonato. È possibile usare le sostituzioni per fare riferimento a questo valore con i file di configurazione del bundle, come${bundle.git.branch}.
Per recuperare o eseguire l'override delle impostazioni Git, il bundle deve trovarsi all'interno di una directory associata a un repository Git, ad esempio una directory locale inizializzata eseguendo il comando git clone. Se la directory non è associata a un repository Git, queste impostazioni Git sono vuote.
Se necessario, è possibile eseguire l'override delle impostazioni origin_url e branch all’interno del mapping git del mapping di primo livello bundle, come indicato di seguito:
bundle:
git:
origin_url: <some-non-default-origin-url>
branch: <some-non-current-branch-name>
databricks_cli_version
Il mapping bundle può contenere un mapping databricks_cli_version che vincola la versione dell'interfaccia della riga di comando di Databricks richiesta dal bundle. Ciò può impedire problemi causati dall'uso di mapping non supportati in una determinata versione dell'interfaccia della riga di comando di Databricks.
La versione dell'interfaccia della riga di comando di Databricks è conforme al controllo delle versioni semantiche e il databricks_cli_version mapping supporta la specifica dei vincoli di versione. Se il valore corrente databricks --version non rientra nei limiti specificati nel mapping del databricks_cli_version bundle, si verifica un errore quando databricks bundle validate viene eseguito nel bundle. Gli esempi seguenti illustrano una sintassi comune dei vincoli di versione:
bundle:
name: hello-bundle
databricks_cli_version: '0.218.0' # require Databricks CLI 0.218.0
bundle:
name: hello-bundle
databricks_cli_version: '0.218.*' # allow all patch versions of Databricks CLI 0.218
bundle:
name: my-bundle
databricks_cli_version: '>= 0.218.0' # allow any version of Databricks CLI 0.218.0 or higher
bundle:
name: my-bundle
databricks_cli_version: '>= 0.218.0, <= 1.0.0' # allow any Databricks CLI version between 0.218.0 and 1.0.0, inclusive
run_as
L'impostazione run_as specifica il componente user_name o service_principal_name da usare per eseguire il bundle. Consente di separare l'identità usata per distribuire un job bundle o una pipeline da quella usata per eseguire il job o la pipeline.
Consultare Specificare un'identità di esecuzione per un flusso di lavoro dei pacchetti di asset di Databricks.
includere
La matrice include specifica un elenco di GLOB di percorso che contengono file di configurazione da includere all'interno del bundle. Questi glob di percorso sono relativi al percorso del file di configurazione del bundle in cui vengono specificati i glob del percorso.
L'interfaccia della riga di comando di Databricks non include alcun file di configurazione per impostazione predefinita all'interno del bundle. È necessario usare la matrice include per specificare tutti i file di configurazione da includere all'interno del bundle, ad eccezione del file databricks.yml stesso.
Questa matrice include può essere visualizzata solo come mapping di primo livello.
La configurazione di esempio seguente include tre file di configurazione. Questi file si trovano nella stessa cartella del file di configurazione del bundle:
include:
- 'bundle.artifacts.yml'
- 'bundle.resources.yml'
- 'bundle.targets.yml'
La configurazione di esempio seguente include tutti i file con nomi file che iniziano con bundle e terminano con .yml. Questi file si trovano nella stessa cartella del file di configurazione del bundle:
include:
- 'bundle*.yml'
Scripti
L'impostazione scripts specifica gli script che possono essere eseguiti tramite bundle run. Ogni script denominato nel scripts mapping contiene contenuto con i comandi. Per esempio:
scripts:
my_script:
content: uv run pytest -m ${bundle.target}
Per altre informazioni, vedere Eseguire script.
sincronizza
Il mapping sync consente di configurare i file che fanno parte delle distribuzioni di bundle.
include ed escludere
I mapping include e exclude all'interno del mapping sync specificano un elenco di file o cartelle da includere o escludere dalle distribuzioni di bundle, a seconda delle regole seguenti:
- Basato su qualsiasi elenco di file e glob di percorso in un
.gitignorefile posizionato nella radice del bundle, ilincludemapping può contenere un elenco di glob di file, glob di percorso, o entrambi, relativo alla radice del bundle, per includere in modo esplicito. - Basato su qualsiasi elenco di modelli di file e modelli di percorso in un
.gitignorefile nella radice del bundle, oltre all'elenco di modelli di file e modelli di percorso nelincludemapping, ilexcludemapping può contenere un elenco di modelli di file, modelli di percorso o entrambi, rispetto alla radice del bundle, per escludere in modo esplicito.
Tutti i percorsi dei file e delle cartelle specificati sono relativi al percorso del file di configurazione del bundle in cui sono specificati.
La sintassi per i modelli di file include e exclude di percorso segue la sintassi standard del modello .gitignore. Vedere Gitignore Pattern Format( Formato modello gitignore).
Ad esempio, se il seguente file .gitignore contiene le voci seguenti:
.databricks
my_package/dist
Il file di configurazione del bundle contiene la seguente mappatura include:
sync:
include:
- my_package/dist/*.whl
Vengono quindi inclusi tutti i file nella cartella my_package/dist con estensione di file di *.whl. Tutti gli altri file nella cartella my_package/dist non sono inclusi.
Tuttavia, se il file di configurazione del bundle contiene anche la seguente mappatura exclude:
sync:
include:
- my_package/dist/*.whl
exclude:
- my_package/dist/delete-me.whl
Vengono quindi inclusi tutti i file nella cartella my_package/dist con estensione di file di *.whl, ad eccezione del file denominato delete-me.whl. Anche tutti gli altri file nella cartella my_package/dist non sono inclusi.
Il mapping sync può anche essere dichiarato nel mapping targets per una destinazione specifica. Qualsiasi mapping sync dichiarato in una destinazione viene unito a qualsiasi dichiarazione di mapping di primo livello sync. Ad esempio, continuando con l'esempio precedente, il seguente mapping include al livello targets viene unito al mapping include nel mapping di primo livello sync:
targets:
dev:
sync:
include:
- my_package/dist/delete-me.whl
Percorsi
Il mapping sync può contenere un mapping paths che specifica i percorsi locali da sincronizzare con l'area di lavoro. Il mapping paths consente di condividere file comuni tra bundle e può essere usato per sincronizzare i file che si trovano all'esterno della radice del bundle. (La radice del bundle è il percorso del file databricks.yml.) Ciò è particolarmente utile quando si dispone di un singolo repository che ospita più bundle e si vuole condividere librerie, file di codice o configurazione.
I percorsi specificati devono essere relativi a file e directory ancorati nella cartella in cui è impostato il mapping paths. Se uno o più valori di percorso salgono nella directory fino a un antenato della radice del pacchetto, il percorso radice viene determinato in modo dinamico per garantire che la struttura delle cartelle rimanga intatta. Ad esempio, se la cartella radice del bundle è denominata my_bundle, questa configurazione in databricks.yml sincronizza la cartella common che si trova a un livello sopra la radice del bundle e la radice del bundle stessa:
sync:
paths:
- ../common
- .
Una distribuzione di questo bundle comporta la struttura di cartelle seguente nell'area di lavoro:
common/
common_file.txt
my_bundle/
databricks.yml
src/
...
artefatti
Il mapping di primo livello artifacts specifica uno o più artefatti creati automaticamente durante le distribuzioni di *bundle* e che possono essere usati in un secondo momento nelle esecuzioni del *bundle*. Ogni artefatto figlio supporta i mapping seguenti:
-
typeè necessario per le compilazioni con rotellina Python. Per compilare un file wheel Python prima della distribuzione, impostare questo suwhl. Per costruire altri artefatti, questa impostazione non deve essere specificata. -
pathè un percorso facoltativo. I percorsi sono relativi al percorso del file di configurazione del bundle. Per le compilazioni con rotellina Python, si tratta del percorso del file dellasetup.pyrotellina Python. Sepathnon è incluso, il client CLI di Databricks tenta di trovare il file wheel Pythonsetup.pynella radice del bundle. -
filesè un mapping facoltativo che include un mapping figliosource, il quale è possibile utilizzare per specificare gli artefatti costruiti. I percorsi sono relativi al percorso del file di configurazione del bundle. -
buildè un set facoltativo di comandi di compilazione non predefiniti da eseguire in locale prima della distribuzione. Per le compilazioni con il wheel Python, l'interfaccia della riga di comando di Databricks presuppone che sia possibile trovare un'installazione locale del pacchetto Pythonwheelper eseguire le compilazioni ed esegue il comandopython setup.py bdist_wheelper impostazione predefinita durante ogni distribuzione del bundle. Specificare più comandi di compilazione in righe separate. -
dynamic_versionconsente ai bundle di aggiornare la versione del wheel in base al timestamp del file wheel. ** Il nuovo codice può quindi essere distribuito senza dover aggiornare la versione insetup.pyopyproject.toml. Questa impostazione è valida solo setypeè impostata suwhl.
L'esempio di configurazione seguente esegue test e compila una rotellina. Per un'esercitazione completa sull'aggregazione usata artifacts per creare una rotellina, vedere Creare un file con rotellina Python usando i bundle di asset di Databricks.
artifacts:
default:
type: whl
build: |-
# run tests
python -m pytest tests/ -v
# build the actual artifact
python setup.py bdist_wheel
path: .
Per un esempio di configurazione che compila un file JAR e lo carica in Unity Catalog, vedere Bundle che carica un file JAR in Unity Catalog.
Suggerimento
È possibile definire, combinare ed eseguire l'override delle impostazioni per gli artefatti nei bundle, come descritto in Eseguire l'override con le impostazioni di destinazione.
variabili
Il file di impostazioni bundle può contenere un mapping di primo livello variables in cui sono definite variabili personalizzate. Per ogni variabile, impostare una descrizione facoltativa, un valore predefinito, se la variabile personalizzata è un tipo complesso o una ricerca per recuperare un valore ID, usando il formato seguente:
variables:
<variable-name>:
description: <variable-description>
default: <optional-default-value>
type: <optional-type-value> # "complex" is the only valid value
lookup:
<optional-object-type>: <optional-object-name>
Nota
Si presuppone che le variabili siano di tipo string, a meno che non type sia impostato su complex. Vedere Definire una variabile complessa.
Per fare riferimento a una variabile personalizzata all'interno della configurazione del bundle, usare la sostituzione ${var.<variable_name>}.
Per altre informazioni sulle variabili e le sostituzioni personalizzate, vedere Sostituzioni e variabili nei bundle di asset di Databricks.
area di lavoro
Il file di configurazione del bundle può contenere un solo mapping di primo livello workspace per specificare le impostazioni dell'area di lavoro di Azure Databricks non predefinite da usare.
Importante
I percorsi validi dell'area di lavoro di Databricks iniziano con /Workspace, mentre per gli artefatti è supportato anche /Volumes. I percorsi dell'area di lavoro personalizzati sono preceduti automaticamente da /Workspace, quindi se si usa una sostituzione del percorso dell'area di lavoro nel percorso personalizzato, ${workspace.file_path}ad esempio , non è necessario anteporre /Workspace al percorso.
root_path
Questo mapping workspace può contenere un mapping root_path per specificare un percorso radice non predefinito da usare all'interno dell'area di lavoro sia per le distribuzioni che per le esecuzioni del flusso di lavoro, ad esempio:
workspace:
root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
Per impostazione predefinita, per root_path la CLI di Databricks usa il percorso predefinito di /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}, che utilizza sostituzioni.
percorso_artifatto
Questo mapping workspace può contenere anche un mapping artifact_path per specificare un percorso di artefatto non predefinito da usare all'interno dell'area di lavoro per le distribuzioni e le esecuzioni del flusso di lavoro, ad esempio:
workspace:
artifact_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/artifacts
Per impostazione predefinita, per artifact_path la CLI di Databricks usa il percorso predefinito di ${workspace.root}/artifacts, che utilizza sostituzioni.
Nota
Il mapping artifact_path non supporta i percorsi di Databricks File System (DBFS).
percorso del file
Questo mapping workspace può contenere anche un mapping file_path per specificare un percorso di file non predefinito da usare all'interno dell'area di lavoro per le distribuzioni e le esecuzioni del flusso di lavoro, ad esempio:
workspace:
file_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/files
Per impostazione predefinita, per file_path la CLI di Databricks usa il percorso predefinito di ${workspace.root}/files, che utilizza sostituzioni.
stato_percorso
Il mapping state_path predefinito punta al percorso base ${workspace.root}/state e rappresenta il percorso all'interno dell'area di lavoro per archiviare le informazioni sullo stato di Terraform relative alle distribuzioni.
Altri mapping dell'area di lavoro
Il mapping workspace può contenere anche i mapping facoltativi seguenti per specificare il meccanismo di autenticazione di Azure Databricks da usare. Se non vengono specificati all'interno di questo workspace mapping, devono essere specificati in un workspace mapping come figlio di una o più destinazioni nel mapping delle destinazioni di primo livello.
Importante
È necessario codificare a mano i valori per i seguenti mapping workspace per l'autenticazione di Azure Databricks. Ad esempio, non è possibile specificare variabili personalizzate per questi valori di mapping usando la ${var.*} sintassi .
Il mapping
profile(o le opzioni--profileo-pquando si eseguono i comandi del bundle convalida, distribuisci, esegui ed elimina con l'interfaccia della riga di comando di Databricks) specifica il nome di un profilo di configurazione da usare con questa area di lavoro per l'autenticazione di Azure Databricks. Questo profilo di configurazione viene mappato a quello creato durante la configurazione dell'interfaccia della riga di comando di Databricks.Nota
Databricks consiglia di usare il mapping
host(o le--profileopzioni o-pquando si eseguono i comandi del bundle convalida, distribuisci, esegui ed elimina con l'interfaccia della riga di comando di Databricks) anziché il mappingprofile, in quanto rende i file di configurazione del bundle più portatili. L'impostazione delhostmapping indica all'interfaccia della riga di comando di Databricks di trovare un profilo corrispondente nel.databrickscfgfile e quindi usare i campi del profilo per determinare il tipo di autenticazione di Databricks da usare. Se all'interno del filehostesistono più profili con un campo corrispondente.databrickscfg, è necessario usare il mappingprofile(o le opzioni della riga di comando--profileo-p) per indicare all'interfaccia della riga di comando di Databricks il profilo da usare. Per un esempio, vedere la dichiarazione diproddestinazione negli esempi.
Il mapping
hostspecifica l'URL per l'area di lavoro di Azure Databricks. Vedere URL per area di lavoro.Per l'autenticazione da computer a computer (M2M) OAuth, viene usato il mapping
client_id. In alternativa, è possibile impostare questo valore nella variabile di ambiente localeDATABRICKS_CLIENT_ID. In alternativa, è possibile creare un profilo di configurazione con il valoreclient_ide quindi specificare il nome del profilo con il mappingprofileoppure usando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione e eliminazione del bundle con la CLI di Databricks. Vedere Autorizzare l'accesso dell'entità servizio ad Azure Databricks con OAuth.Nota
Non è possibile specificare un valore del segreto OAuth di Azure Databricks nel file di configurazione del bundle. Invece, impostare la variabile di ambiente
DATABRICKS_CLIENT_SECRET. In alternativa, è possibile aggiungere il valoreclient_secreta un profilo di configurazione e quindi specificare il nome del profilo con il mappingprofile, oppure utilizzando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con il CLI di Databricks.Per l'autenticazione con l’interfaccia della riga di comando di Azure, viene usato il mapping
azure_workspace_resource_id. In alternativa, è possibile impostare questo valore nella variabile di ambiente localeDATABRICKS_AZURE_RESOURCE_ID. In alternativa, è possibile creare un profilo di configurazione con il valoreazure_workspace_resource_ide quindi specificare il nome del profilo con il mappingprofileoppure usando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione e eliminazione del bundle con la CLI di Databricks. Vedere Eseguire l'autenticazione con l'interfaccia della riga di comando di Azure.Per l'autenticazione dei segreti client di Azure con le entità servizio, vengono usati i mapping
azure_workspace_resource_id,azure_tenant_ideazure_client_id. In alternativa, è possibile impostare questi valori rispettivamente nelle variabili di ambiente localiDATABRICKS_AZURE_RESOURCE_ID,ARM_TENANT_IDeARM_CLIENT_ID. In alternativa, è possibile creare un profilo di configurazione con i valoriazure_workspace_resource_id,azure_tenant_ideazure_client_id, e quindi specificare il nome del profilo con il mappingprofileoppure utilizzando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks. Consultare Effettuare l'autenticazione con i principali di servizio Microsoft Entra.Nota
Non è possibile specificare un valore del segreto client di Azure nel file di configurazione del bundle. Invece, impostare la variabile di ambiente
ARM_CLIENT_SECRET. In alternativa, è possibile aggiungere il valoreazure_client_secreta un profilo di configurazione e quindi specificare il nome del profilo con il mappingprofile, oppure utilizzando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con il CLI di Databricks.Per l'autenticazione delle identità gestite di Azure, vengono usati i mapping
azure_use_msi,azure_client_ideazure_workspace_resource_id. In alternativa, è possibile impostare questi valori rispettivamente nelle variabili di ambiente localiARM_USE_MSI,ARM_CLIENT_IDeDATABRICKS_AZURE_RESOURCE_ID. In alternativa, è possibile creare un profilo di configurazione con i valoriazure_use_msi,azure_client_ideazure_workspace_resource_id, e quindi specificare il nome del profilo con il mappingprofileoppure utilizzando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks. Vedere Eseguire l'autenticazione con le identità gestite di Azure.Il mapping
azure_environmentspecifica il tipo di ambiente di Azure (ad esempio Public, UsGov, Cina e Germania) per un set specifico di endpoint API. Il valore predefinito èPUBLIC. In alternativa, è possibile impostare questo valore nella variabile di ambiente localeARM_ENVIRONMENT. In alternativa, è possibile aggiungere il valoreazure_environmenta un profilo di configurazione e quindi specificare il nome del profilo con il mappingprofile, oppure utilizzando le opzioni--profileo-pquando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con il CLI di Databricks.Il mapping
azure_login_app_idnon è operativo ed è riservato per l'uso interno.
- Il mapping
auth_typespecifica il tipo di autenticazione di Azure Databricks da usare, in particolare nei casi in cui l'interfaccia della riga di comando di Databricks deduce un tipo di autenticazione imprevisto. Vedere Autorizzare l'accesso alle risorse di Azure Databricks.
autorizzazioni
Il mapping di primo livello permissions specifica uno o più livelli di autorizzazione da applicare a tutte le risorse definite nel bundle. Per applicare autorizzazioni a una risorsa specifica, vedere Definire le autorizzazioni per una risorsa specifica.
I livelli di autorizzazione di primo livello consentiti sono CAN_VIEW, CAN_MANAGE e CAN_RUN.
L'esempio seguente in un file di configurazione del bundle definisce i livelli di autorizzazione per un utente, un gruppo e un'entità servizio, che vengono applicati a tutte le risorse definite nel resources bundle:
permissions:
- level: CAN_VIEW
group_name: test-group
- level: CAN_MANAGE
user_name: someone@example.com
- level: CAN_RUN
service_principal_name: 123456-abcdef
risorse
Il mapping resources specifica informazioni sulle risorse di Azure Databricks usate dal bundle.
Questo mapping resources può essere visualizzato come mapping di primo livello oppure può essere figlio di una o più destinazioni nel mapping di livello superiore e include zero o uno dei tipi di risorse supportati . Ogni mapping dei tipi di risorsa include una o più dichiarazioni di risorse singole, che devono avere un nome univoco. Queste singole dichiarazioni di risorse usano il payload di richiesta dell'operazione di creazione dell'oggetto corrispondente, espresso in YAML, per definire la risorsa. Le proprietà supportate per una risorsa sono i campi supportati dell'oggetto corrispondente.
I payload della richiesta di operazione di creazione sono documentati in Informazioni di riferimento sull'API REST di Databricks e il databricks bundle schema comando restituisce tutti gli schemi di oggetti supportati. Inoltre, il comando databricks bundle validate restituisce avvisi se le proprietà sconosciute delle risorse vengono trovate nei file di configurazione del bundle.
La seguente configurazione di esempio definisce una risorsa attività:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
Per ulteriori informazioni sulle risorse supportate nei bundle, così come configurazioni ed esempi comuni, vedere risorse dei bundle di asset di Databricks e esempi di configurazione del bundle.
obiettivi
Il mapping targets specifica uno o più contesti in cui eseguire i flussi di lavoro di Azure Databricks. Ogni destinazione è una raccolta univoca di artefatti, impostazioni dell'area di lavoro di Azure Databricks e dettagli del processo o della pipeline di Azure Databricks.
Il mapping targets è costituito da uno o più mapping di destinazione, che devono avere un nome univoco a livello di codice (o logico).
Questo mapping targets è facoltativo ma altamente consigliato. Se viene specificato, può essere visualizzato solo come mapping di primo livello.
Le impostazioni nell'area di lavoro di primo livello, gli artefatti e i mapping delle risorse vengono usate se non sono specificate in un targets mapping, ma tutte le impostazioni in conflitto vengono sostituite dalle impostazioni all'interno di una destinazione.
Una destinazione può anche eseguire l'override dei valori di qualsiasi variabile di primo livello.
impostazione predefinita
Per specificare un valore predefinito di destinazione per i comandi bundle, impostare il mapping default su true. Ad esempio, questa destinazione denominata dev è la destinazione predefinita:
targets:
dev:
default: true
Se una destinazione predefinita non è configurata o se si desidera convalidare, distribuire ed eseguire processi o pipeline all'interno di una destinazione specifica, usare l'opzione -t dei comandi bundle.
I comandi seguenti convalidano, distribuiscono ed eseguono my_job nei target dev e prod:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev my_job
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod my_job
Nell'esempio seguente vengono dichiarate due destinazioni. La prima destinazione ha il nome dev ed è la destinazione predefinita usata quando non viene specificata alcuna destinazione per i comandi bundle. La seconda destinazione ha il nome prod e viene usata solo quando questa destinazione viene specificata per i comandi bundle.
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
modalità e set di impostazioni
Per semplificare lo sviluppo e le procedure consigliate per CI/CD, i bundle di asset di Databricks offrono modalità di distribuzione per le destinazioni che impostano comportamenti predefiniti per i flussi di lavoro di pre-produzione e produzione. Alcuni comportamenti sono configurabili anche. Per informazioni dettagliate, vedere Modalità di distribuzione del bundle di asset di Databricks.
Suggerimento
Per impostare le identità di esecuzione per i bundle, è possibile specificare run_as per ogni destinazione, come descritto in Specificare un'identità di esecuzione per un flusso di lavoro dei bundle di asset di Databricks.
Per specificare che una destinazione viene considerata come destinazione di sviluppo, aggiungere il mapping mode impostato su development. Per specificare che una destinazione viene considerata come destinazione di produzione, aggiungere il mapping mode impostato su production. Ad esempio, questa destinazione denominata prod viene considerata come destinazione di produzione:
targets:
prod:
mode: production
È possibile personalizzare alcuni dei comportamenti usando il mapping presets. Per un elenco dei set di impostazioni disponibili, vedere Impostazioni predefinite personalizzate. L'esempio seguente mostra una destinazione di produzione personalizzata che prefissa e contrassegna tutte le risorse di produzione:
targets:
prod:
mode: production
presets:
name_prefix: 'production_' # prefix all resource names with production_
tags:
prod: true
Se mode e presets sono impostati, i set di impostazioni sostituiscono il comportamento della modalità predefinita. Le impostazioni delle singole risorse sostituiscono i set di impostazioni. Ad esempio, se una pianificazione è impostata su UNPAUSED, ma il set di impostazioni trigger_pause_status è impostato su PAUSED, la pianificazione verrà annullata.