Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Cette fonctionnalité est expérimentale.
Databricks Asset Bundles a été initialement basé sur le fournisseur Databricks Terraform pour gérer les déploiements. Toutefois, dans un effort de déplacement de cette dépendance, Databricks CLI version 0.279.0 et ultérieure prend en charge deux moteurs de déploiement différents : terraform et direct. Le moteur de déploiement direct ne dépend pas de Terraform et deviendra bientôt la valeur par défaut. Le moteur de déploiement Terraform sera ultérieurement abandonné.
Quels sont les avantages du déploiement direct ?
Le nouveau moteur de déploiement direct utilise le Kit de développement logiciel (SDK) Databricks Go et offre les avantages suivants :
- Aucune exigence de télécharger Terraform et
terraform-provider-databricksavant le déploiement - Évite les problèmes liés aux pare-feu, aux proxys et aux registres de fournisseurs personnalisés
- Différences détaillées des modifications disponibles à l’aide de
bundle plan -o json - Déploiement plus rapide
- Temps réduit pour libérer de nouvelles ressources groupées, car il n’est pas nécessaire de s’aligner sur la version du fournisseur Terraform
Comment commencer à utiliser le déploiement direct ?
Pour commencer à utiliser le nouveau moteur de déploiement direct :
- Pour les offres groupées existantes, migrez-les à l’aide de
databricks bundle deployment migrate. - Pour les nouveaux bundles, déployez-les avec la variable d’environnement
DATABRICKS_BUNDLE_ENGINEdéfinie surdirect.
Migrer un bundle existant
Le moteur de déploiement direct utilise son propre fichier d’état JSON. Le schéma est différent du fichier d’état JSON Terraform. La commande de migration de déploiement groupé convertit le fichier d’état Terrform (terraform.tfstate) en fichier d’état de déploiement direct (resources.json). La commande lit les identifiants du déploiement existant.
Effectuez un déploiement complet avec Terraform :
databricks bundle deploy -t my_targetMigrez le déploiement :
databricks bundle deployment migrate -t my_targetVérifiez que la migration a réussi. La
databricks bundle plancommande doit réussir et elle ne doit pas afficher de modifications.databricks bundle plan -t my_targetSi la vérification a échoué, supprimez le nouveau fichier d’état :
rm .databricks/bundle/my_target/resources.jsonSi la vérification a réussi, déployez le bundle pour synchroniser le fichier d’état sur l’espace de travail :
databricks bundle deploy -t my_target
Déployer directement un nouveau bundle
La bundle migrate commande ne fonctionne pas sur les bundles qui n’ont jamais été déployés, car il n’existe aucun fichier d’état. Au lieu de cela, définissez la variable d’environnement DATABRICKS_BUNDLE_ENGINE et déployez :
DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
Quelles sont les modifications apportées au moteur de déploiement direct ?
Le nouveau moteur de déploiement direct se comporte principalement comme le moteur de déploiement Terrform, mais il existe des différences.
Calcul des différences d’état des ressources
Contrairement à Terraform qui conserve un état de ressource unique (une combinaison de configuration locale et d’état distant), le nouveau moteur conserve ces paramètres distincts et enregistre uniquement la configuration locale dans son fichier d’état.
Le calcul des différences d’état des ressources est effectué en deux étapes :
- La configuration du bundle local est comparée à la configuration d’instantané utilisée pour le déploiement le plus récent. L’état distant ne joue aucun rôle.
- L’état distant est comparé à la configuration d'état instantané utilisée pour le déploiement le plus récent.
Le résultat est que :
-
databricks.ymlles modifications de ressources ne sont jamais ignorées et déclenchent toujours une mise à jour. - Les champs de ressource non gérés par l’implémentation ne déclenchent pas d’erreur de résultat incohérent. Ces ressources sont déployées avec succès par le moteur direct, mais cela peut entraîner une dérive. Les ressources déployées sont mises à jour pendant le plan ou le déploiement suivant.
recherche de valeurs de substitution de $resources
L’utilisation la plus courante de substitution $resources consiste à résoudre les ID (par exemple, $resources.jobs.my_job.id), qui se comportent de façon identique entre le moteur de déploiement Terraform et le moteur de déploiement direct.
Toutefois, la résolution de la $resources substitution dans le moteur de déploiement direct (par exemple, $resources.pipelines.my_pipeline.name) est effectuée en deux étapes :
- Les références pointant vers des champs présents dans la configuration locale sont résolues à la valeur fournie dans la configuration locale.
- Les références qui ne sont pas présentes dans la configuration locale sont résolues à partir de l’état distant. Il s’agit de l’état récupéré à l’aide de la requête appropriée
GETpour une ressource donnée.
Le schéma de résolution utilisé est disponible dans le fichier out.fields.txt. Les champs marqués comme ALL et STATE peuvent être utilisés pour la résolution locale. Les champs marqués comme ALL ou REMOTE peuvent être utilisés pour la résolution à distance.