Fournisseur Databricks Terraform
HashiCorp Terraform est un outil open source populaire permettant de créer une infrastructure cloud sécurisée et prévisible sur plusieurs fournisseurs cloud. Vous pouvez utiliser le fournisseur Databricks Terraform pour gérer vos espaces de travail Azure Databricks et l’infrastructure cloud associée à l’aide d’un outil flexible et puissant. Le fournisseur Databricks Terraform a pour objectif de prendre en charge toutes les API REST Databricks, en supportant l’automatisation des aspects les plus complexes du déploiement et de la gestion de vos plateformes de données. Les clients Databricks utilisent le fournisseur Databricks Terraform pour déployer et gérer des clusters et des travaux, ainsi que pour configurer l’accès aux données. Vous utilisez le fournisseur Azure pour provisionner des espaces de travail Azure Databricks.
Bien démarrer
Dans cette section, vous installez et configurez les conditions requises pour utiliser Terraform et le fournisseur Databricks Terraform sur votre ordinateur de développement local. Vous pouvez ensuite configurer l’authentification Terraform. Après cette section, cet article fournit un exemple de configuration que vous pouvez expérimenter pour approvisionner un notebook Azure Databricks, un cluster et un travail pour exécuter le notebook sur le cluster dans un espace de travail Azure Databricks existant.
Spécifications
Vous devez disposer de l’interface CLI Terraform. Consultez Télécharger Terraform sur le site web de Terraform.
Vous devez disposer d’un projet Terraform. Dans votre terminal, créez un répertoire vide, puis basculez vers celui-ci. (Chaque ensemble distinct de fichiers de configuration Terraform doit se trouver dans son propre répertoire, ce qui s’appelle un projet Terraform.) Par exemple :
mkdir terraform_demo && cd terraform_demo
.mkdir terraform_demo && cd terraform_demo
Incluez les configurations Terraform pour votre projet dans un ou plusieurs fichiers de configuration dans votre projet Terraform. Pour plus d’informations sur la syntaxe du fichier de configuration, consultez la documentation du langage Terraform sur le site web de Terraform.
Vous devez ajouter à votre projet Terraform une dépendance pour le fournisseur Databricks Terraform. Ajoutez ce qui suit à l’un des fichiers de configuration de votre projet Terraform :
terraform { required_providers { databricks = { source = "databricks/databricks" } } }
Vous devez configurer l’authentification pour votre projet Terraform. Consultez Authentification dans la documentation du fournisseur Databricks Terraform.
Exemple de configuration
Cette section fournit un échantillon de configuration que vous pouvez tester pour approvisionner un notebook, un cluster et une tâche Azure Databricks. Vous pourrez ainsi exécuter le notebook sur le cluster, dans un espace de travail Azure Databricks existant. Il part du principe que vous avez déjà configuré les exigenceset que vous avez créé un projet Terraform et configuré le projet avec l’authentification Terraform, comme décrit dans la section précédente.
Créez un fichier nommé
me.tf
dans votre projet Terraform et ajoutez le code suivant. Ce fichier obtient des informations sur l’utilisateur actuel (vous) :# Retrieve information about the current user. data "databricks_current_user" "me" {}
Créez un autre fichier nommé
notebook.tf
, puis ajoutez le code suivant. Ce fichier représente le notebook.variable "notebook_subdirectory" { description = "A name for the subdirectory to store the notebook." type = string default = "Terraform" } variable "notebook_filename" { description = "The notebook's filename." type = string } variable "notebook_language" { description = "The language of the notebook." type = string } resource "databricks_notebook" "this" { path = "${data.databricks_current_user.me.home}/${var.notebook_subdirectory}/${var.notebook_filename}" language = var.notebook_language source = "./${var.notebook_filename}" } output "notebook_url" { value = databricks_notebook.this.url }
Créez un autre fichier nommé
notebook.auto.tfvars
, puis ajoutez le code suivant. Ce fichier spécifie les propriétés du notebook.notebook_subdirectory = "Terraform" notebook_filename = "notebook-getting-started.py" notebook_language = "PYTHON"
Créez un autre fichier nommé
notebook-getting-started.py
, puis ajoutez le code suivant. Ce fichier représente le contenu du notebook.display(spark.range(10))
Créez un autre fichier nommé
cluster.tf
, puis ajoutez le code suivant. Ce fichier représente le cluster.variable "cluster_name" { description = "A name for the cluster." type = string default = "My Cluster" } variable "cluster_autotermination_minutes" { description = "How many minutes before automatically terminating due to inactivity." type = number default = 60 } variable "cluster_num_workers" { description = "The number of workers." type = number default = 1 } # Create the cluster with the "smallest" amount # of resources allowed. data "databricks_node_type" "smallest" { local_disk = true } # Use the latest Databricks Runtime # Long Term Support (LTS) version. data "databricks_spark_version" "latest_lts" { long_term_support = true } resource "databricks_cluster" "this" { cluster_name = var.cluster_name node_type_id = data.databricks_node_type.smallest.id spark_version = data.databricks_spark_version.latest_lts.id autotermination_minutes = var.cluster_autotermination_minutes num_workers = var.cluster_num_workers } output "cluster_url" { value = databricks_cluster.this.url }
Créez un autre fichier nommé
cluster.auto.tfvars
, puis ajoutez le code suivant. Ce fichier spécifie les propriétés du cluster.cluster_name = "My Cluster" cluster_autotermination_minutes = 60 cluster_num_workers = 1
Créez un autre fichier nommé
job.tf
, puis ajoutez le code suivant. Ce fichier représente la tâche qui exécute le notebook sur le cluster.variable "job_name" { description = "A name for the job." type = string default = "My Job" } resource "databricks_job" "this" { name = var.job_name existing_cluster_id = databricks_cluster.this.cluster_id notebook_task { notebook_path = databricks_notebook.this.path } email_notifications { on_success = [ data.databricks_current_user.me.user_name ] on_failure = [ data.databricks_current_user.me.user_name ] } } output "job_url" { value = databricks_job.this.url }
Créez un autre fichier nommé
job.auto.tfvars
, puis ajoutez le code suivant. Ce fichier spécifie les propriétés du cluster.job_name = "My Job"
Exécutez
terraform plan
. S’il existe des erreurs, corrigez-les, puis réexécutez la commande.Exécutez
terraform apply
.Vérifiez que le notebook, le cluster et la tâche ont été créés : dans la sortie de la commande
terraform apply
, recherchez les URL pournotebook_url
,cluster_url
,job_url
, puis accédez à celles-ci.Exécutez le travail : dans la page Jobs, cliquez sur Run Now. Une fois le travail terminé, consultez votre messagerie.
Quand vous avez fini d’utiliser cet échantillon, exécutez
terraform destroy
pour supprimer le notebook et la tâche de l’espace de travail Azure Databricks.Remarque
Pour plus d’informations sur les commandes
terraform plan
,terraform apply
etterraform destroy
, consultez la documentation sur l’interface CLI Terraform dans la documentation Terraform.Vérifiez que le notebook, le cluster et la tâche ont été supprimés : actualisez le notebook et les pages Tâches pour afficher un message indiquant que la ressource est introuvable.
Étapes suivantes
- Créez un espace de travail Azure Databricks.
- Gérez les ressources d’espace de travail pour un espace de travail Azure Databricks.
Dépannage
Notes
Pour un support spécifique à Terraform, consultez les dernières rubriques sur Terraform sur le site web Discuss de HashiCorp. Pour les problèmes spécifiques au fournisseur Databricks Terraform, consultez les problèmes dans le dépôt GitHub databrickslabs/terraform-provider-databricks.
Erreur : échec d’installation du fournisseur
Problème : si vous n’avez pas enregistré de fichier terraform.lock.hcl
dans votre système de gestion de version et que vous exécutez la commande terraform init
, le message suivant s’affiche : Failed to install provider
. Une sortie supplémentaire peut indiquer un message de ce type :
Error while installing databrickslabs/databricks: v1.0.0: checksum list has no SHA-256 hash for "https://github.com/databricks/terraform-provider-databricks/releases/download/v1.0.0/terraform-provider-databricks_1.0.0_darwin_amd64.zip"
Cause : vos configurations Terraform référencent des fournisseurs Terraform Databricks obsolètes.
Solution:
Remplacez
databrickslabs/databricks
pardatabricks/databricks
dans tous vos fichiers.tf
.Pour automatiser ces remplacements, exécutez la commande Python suivante à partir du dossier parent qui contient les fichiers
.tf
à mettre à jour :python3 -c "$(curl -Ls https://dbricks.co/updtfns)"
Exécutez la commande Terraform suivante, puis approuvez les changements quand vous y êtes invité :
terraform state replace-provider databrickslabs/databricks databricks/databricks
Pour plus d’informations sur cette commande, consultez Commande : state replace-provider dans la documentation Terraform.
Vérifiez les changements en exécutant la commande Terraform suivante :
terraform init
Erreur : échec d’interrogation des packages de fournisseur disponibles
Problème : si vous n’avez pas enregistré de fichier terraform.lock.hcl
dans votre système de gestion de version et que vous exécutez la commande terraform init
, le message suivant s’affiche : Failed to query available provider packages
.
Cause : vos configurations Terraform référencent des fournisseurs Terraform Databricks obsolètes.
Solution : suivez les instructions de la solution correspondant à Erreur : échec d’installation du fournisseur.
Exemples supplémentaires
Déployer un espace de travail Azure Databricks avec Terraform
Gérer des espaces de travail Databricks à l’aide de Terraform
Ressources supplémentaires
- Documentation sur le fournisseur Databricks sur le site web Registry de Terraform
- Documentation Terraform sur le site web de Terraform
- Dépôt terraform-databricks-examples dans GitHub