Aller au contenu principal

Gérer les dossiers Git Databricks à l'aide de Terraform

Gérez les dossiers Databricks Git dans un environnement entièrement automatisé à l'aide de Terraform et du fournisseur Databricks Terraform.

Authentification avec des jetons d'accès personnels

Cette approche utilise des jetons d'accès personnels Git pour l'authentification du repository avec un Service Principal Databricks.

Terraform évalue les configurations de fournisseur avant de créer des ressources, vous ne pouvez donc pas référencer une valeur de ressource (telle qu'un jeton au nom de (OBO)) dans un bloc de fournisseur au sein de la même configuration Terraform. Pour contourner cette limitation, divisez la configuration en deux configurations distinctes :

  • Partie 1 : Créer le Service Principal : Crée le Service Principal Databricks et génère un jeton OBO.
  • Partie 2 : Configurer les identifiants Git : utilise le jeton OBO pour s'authentifier en tant que Service Principal Databricks, puis configure les identifiants Git et crée le dossier Git.

Partie 1 : Créer le Service Principal Databricks

Créez un répertoire setup/ avec un fichier main.tf.

Étape 1 : Déclarer le fournisseur et les variables

terraform {
required_providers {
databricks = {
source = "databricks/databricks"
}
}
}

variable "databricks_host" {}

variable "databricks_admin_token" {
sensitive = true
}

variable "service_principal_name" {}

provider "databricks" {
host = var.databricks_host
token = var.databricks_admin_token
}

Étape 2 : Créer le Service Principal Databricks

Choisissez un nom d'affichage pour le service principal Databricks. Terraform le crée en utilisant ce nom.

resource "databricks_service_principal" "sp" {
display_name = var.service_principal_name
}

Étape 3 : Créer et exporter le jeton d'autorisation

Générez un jeton OBO pour le Service Principal Databricks et exportez-le pour l'utiliser dans la configuration suivante.

resource "databricks_obo_token" "this" {
application_id = databricks_service_principal.sp.application_id
comment = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
lifetime_seconds = 3600
}

output "obo_token_value" {
value = databricks_obo_token.this.token_value
sensitive = true
}

Étape 4: Appliquer la configuration

Depuis le répertoire setup/, initialisez, appliquez et récupérez le jeton :

Bash
terraform init
terraform apply
terraform output -raw obo_token_value

Étape 5 : Préparer les variables pour la partie 2

Créez un fichier terraform.tfvars dans le répertoire git-credentials/ avec le jeton OBO et les autres valeurs requises :

databricks_host           = "https://<your-workspace>.cloud.databricks.com"
obo_token_value = "<token from previous step>"
git_username = "<your-git-username>"
git_provider = "<gitHub|gitLab|azureDevOpsServices|...>"
git_personal_access_token = "<your-git-PAT>"
repo_url = "https://github.com/<your-org>/<your-repo>.git"
remarque

Ajoutez terraform.tfvars à votre fichier .gitignore pour éviter de commit des valeurs sensibles au contrôle de version. Terraform lit automatiquement ce fichier lorsque vous exécutez terraform apply.

Partie 2 : configurer les identifiants Git

Créez un répertoire git-credentials/ séparé avec son propre fichier main.tf.

Étape 1 : Déclarer le fournisseur et les variables

Transmettez le jeton OBO de la sortie de configuration setup/ comme obo_token_value pour vous authentifier en tant que service principal Databricks.

terraform {
required_providers {
databricks = {
source = "databricks/databricks"
}
}
}

variable "databricks_host" {}

variable "obo_token_value" {
sensitive = true
}

variable "git_username" {}
variable "git_provider" {}

variable "git_personal_access_token" {
sensitive = true
}

variable "repo_url" {}

provider "databricks" {
alias = "sp"
host = var.databricks_host
token = var.obo_token_value
}

Étape 2 : configurer les identifiants Git

Définissez les identifiants Git que le Service Principal Databricks utilisera pour accéder à votre repository Git.

resource "databricks_git_credential" "sp" {
provider = databricks.sp
git_username = var.git_username
git_provider = var.git_provider
personal_access_token = var.git_personal_access_token
}

Étape 3 : Créez le dossier Git

resource "databricks_repo" "this" {
provider = databricks.sp
url = var.repo_url
depends_on = [databricks_git_credential.sp]
}

Étape 4 : Appliquer la configuration des informations d'identification Git

À partir du répertoire git-credentials/, initialisez et appliquez :

Bash
terraform init
terraform apply