Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Dieses Feature ist experimentell.
Databricks Asset Bundles wurde ursprünglich auf dem Databricks Terraform-Anbieter aufgebaut, um Bereitstellungen zu verwalten. Allerdings unterstützt Databricks CLI ab Version 0.279.0 zwei verschiedene Bereitstellungs-Engines: terraform und direct. Das direkte Bereitstellungsmodul hängt nicht von Terraform ab und wird bald zum Standard. Die Terraform-Bereitstellungsmaschine wird schließlich veraltet sein.
Was sind die Vorteile der direkten Bereitstellung?
Das neue direkte Bereitstellungsmodul verwendet das Databricks Go SDK und bietet die folgenden Vorteile:
- Keine Anforderung zum Herunterladen von Terraform und
terraform-provider-databricksvor der Bereitstellung - Vermeiden von Problemen mit Firewalls, Proxys und benutzerdefinierten Anbieterregistrierungen
- Detaillierte Diffs der verfügbaren Änderungsversionen mithilfe von
bundle plan -o json - Schnellere Bereitstellung
- Reduzierte Zeit zum Freigeben neuer Bündelressourcen, da keine Anpassung an die Terraform-Anbieterversion erforderlich ist
Wie beginne ich mit der direkten Bereitstellung?
So verwenden Sie das neue direkte Bereitstellungsmodul:
- Migrieren Sie vorhandene Bündel mithilfe von
databricks bundle deployment migrate. - Stellen Sie neue Bündel bereit, indem Sie die Umgebungsvariable
DATABRICKS_BUNDLE_ENGINEaufdirectfestlegen.
Migrieren eines vorhandenen Bundles
Das direkte Bereitstellungsmodul verwendet eine eigene JSON-Zustandsdatei. Das Schema unterscheidet sich von der Terraform JSON-Zustandsdatei. Der Befehl zum Migrieren des Bundles konvertiert die Terrform-Zustandsdatei (terraform.tfstate) in die Direkte Bereitstellungsstatusdatei (resources.json). Der Befehl liest IDs aus einer bestehenden Bereitstellung.
Durchführen einer vollständigen Bereitstellung mit Terraform:
databricks bundle deploy -t my_targetMigrieren Sie die Bereitstellung:
databricks bundle deployment migrate -t my_targetÜberprüfen Sie, ob die Migration erfolgreich war. Der
databricks bundle planBefehl sollte erfolgreich sein, und er sollte keine Änderungen anzeigen.databricks bundle plan -t my_targetWenn die Überprüfung fehlgeschlagen ist, entfernen Sie die neue Statusdatei:
rm .databricks/bundle/my_target/resources.jsonWenn die Überprüfung erfolgreich war, stellen Sie das Bundle bereit, um die Statusdatei mit dem Arbeitsbereich zu synchronisieren:
databricks bundle deploy -t my_target
Direkte Bereitstellung eines neuen Bundles
Der bundle migrate Befehl funktioniert nicht für Bundles, die noch nie bereitgestellt wurden, da keine Zustandsdatei vorhanden ist. Legen Sie stattdessen die Umgebungsvariable DATABRICKS_BUNDLE_ENGINE fest, und stellen Sie Folgendes bereit:
DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
Was sind die Änderungen im direkten Bereitstellungsmodul?
Das neue direkte Bereitstellungsmodul verhält sich meist genauso wie das Terrform-Bereitstellungsmodul, aber es gibt einige Unterschiede.
Ressourcenzustands-Differenzberechnung
Im Gegensatz zu Terraform, die einen einzelnen Ressourcenzustand (eine Mischung aus lokaler Konfiguration und Remotezustand) verwaltet, behält das neue Modul diese getrennt und zeichnet nur die lokale Konfiguration in der Zustandsdatei auf.
Die Ressourcenstatus-Diff-Berechnung erfolgt in zwei Schritten:
- Die Konfiguration des lokalen Bundles wird mit der Schnappschusskonfiguration verglichen, die für die jüngste Bereitstellung verwendet wurde. Der Remotestatus spielt keine Rolle.
- Der Status des entfernten Systems wird mit der Konfiguration des Snapshots verglichen, die für die jüngste Bereitstellung verwendet wurde.
Das Ergebnis ist:
-
databricks.ymlRessourcenänderungen werden nie ignoriert und lösen immer eine Aktualisierung aus. - Ressourcenfelder, die von der Implementierung nicht behandelt werden, lösen keinen inkonsistenten Ergebnisfehler aus. Diese Ressourcen werden erfolgreich von der Direkt-Engine bereitgestellt. Dies kann allerdings zu einer Abweichung führen. Die bereitgestellten Ressourcen werden während des nächsten Plans oder der Bereitstellung aktualisiert.
$resources Ersetzungssuche
Die häufigste Verwendung von $resources besteht darin, Ersetzungs-IDs (z. B. $resources.jobs.my_job.id) aufzulösen, die sich identisch zwischen den Terraform- und direkten Bereitstellungsengines verhalten.
Die Auflösung der $resources Substitution in der direkten Deployment-Engine (z. B. $resources.pipelines.my_pipeline.name) wird jedoch in zwei Schritten durchgeführt:
- Verweise, die auf Felder verweisen, die in der lokalen Konfiguration vorhanden sind, werden in den in der lokalen Konfiguration angegebenen Wert aufgelöst.
- Verweise, die in der lokalen Konfiguration nicht vorhanden sind, werden aus dem Remotezustand aufgelöst. Dies ist der Zustand, der mithilfe der entsprechenden
GETAnforderung für eine bestimmte Ressource abgerufen wird.
Das Schema, das für die $resource-Auflösung verwendet wird, ist in der Datei out.fields.txt verfügbar. Die Als gekennzeichneten ALL Felder und STATE können für die lokale Auflösung verwendet werden. Die Felder, die als ALL oder REMOTE markiert sind, können für die Remoteauflösung verwendet werden.