Databricks Terraform sağlayıcısı

HashiCorp Terraform, çeşitli bulut sağlayıcıları arasında güvenli ve öngörülebilir bulut altyapısı oluşturmaya yönelik popüler bir açık kaynak aracıdır. Esnek ve güçlü bir araç kullanarak Azure Databricks çalışma alanlarınızı ve ilişkili bulut altyapınızı yönetmek için Databricks Terraform sağlayıcısını kullanabilirsiniz. Databricks Terraform sağlayıcısının amacı, tüm Databricks REST API'lerini desteklemek ve veri platformlarınızı dağıtmanın ve yönetmenin en karmaşık yönlerinin otomasyonunu desteklemektir. Databricks müşterileri, kümeleri ve işleri dağıtmak ve yönetmek, Databricks çalışma alanlarını sağlamak ve veri erişimini yapılandırmak için Databricks Terraform sağlayıcısını kullanıyor.

Başlarken

Terraform'un çalışması için gereken komut satırı araçlarını yüklemek ve yapılandırmak için aşağıdaki adımları tamamlayın. Bu araçlar arasında Terraform CLI ve Azure CLI bulunur. Bu araçları ayarladıktan sonra, daha sonra Azure Databricks çalışma alanlarınızı ve ilişkili Azure bulut altyapınızı yönetmek için kullanabileceğiniz temel bir Terraform yapılandırması oluşturma adımlarını tamamlayın.

Not

Bu yordamda, dağıtılmış bir Azure Databricks çalışma alanına Databricks yöneticisi olarak erişiminiz, ilgili Azure aboneliğine erişiminiz ve Terraform'un bu Azure aboneliğinde gerçekleştirmesini istediğiniz eylemler için uygun izinlere sahip olduğunuz varsayılır. Daha fazla bilgi için, aşağıdakilere bakın:

  1. Terraform CLI'yi yükleyin. Ayrıntılar için terraform web sitesinde Terraform'u indirme bölümüne bakın.

  2. Azure CLI'yi yükleyin ve ardından komutunu çalıştırarak Azure'da oturum açmak için Azure CLI'yi az login kullanın. Ayrıntılar için bkz. Azure CLI'yi Microsoft Azure web sitesine yükleme ve Azure Sağlayıcısı: Terraform web sitesinde Azure CLI kullanarak kimlik doğrulama .

    az login
    

    İpucu

    Terraform'un farklı bir oturum açma bağlamı içinde çalışmasını sağlamak için komutunu yeniden çalıştırın az login . Terraform'un çalıştırma az loginçıkışında listelenenden "isDefault": true farklı bir Azure aboneliği kullanmasını sağlayabilirsiniz. Bunu yapmak için komutunu çalıştırın ve <subscription ID> değerini çalıştırma az loginçıkışında istenen aboneliğin özelliğinin değeriyle id değiştirinaz account set --subscription="<subscription ID>".

    Bu yordamda, kimlik doğrulaması için varsayılan abonelikle birlikte Azure CLI kullanılır. Alternatif kimlik doğrulama seçenekleri için Terraform web sitesinde Azure'da kimlik doğrulama bölümüne bakın.

  3. Terminalinizde boş bir dizin oluşturun ve sonra bu dizine geçin. (Her ayrı Terraform yapılandırma dosyası kümesi kendi dizininde olmalıdır.) Örneğin: mkdir terraform_demo && cd terraform_demo.

    mkdir terraform_demo && cd terraform_demo
    
  4. Bu boş dizinde adlı main.tfbir dosya oluşturun. Bu dosyaya aşağıdaki içeriği ekleyin ve dosyayı kaydedin.

    İpucu

    Visual Studio Code kullanıyorsanız, Visual Studio Code için HashiCorp Terraform uzantısı Terraform dosyaları için söz dizimi vurgulama, IntelliSense, kod gezintisi, kod biçimlendirme, modül gezgini ve çok daha fazlası gibi düzenleme özellikleri ekler.

    terraform {
      required_providers {
        azurerm = {
          source = "hashicorp/azurerm"
          version = ">= 2.26"
        }
    
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    provider "databricks" {}
    
  5. komutunu çalıştırarak dosyayı içeren main.tf çalışma dizinini terraform init başlatın. Daha fazla bilgi için Terraform web sitesinde Command: init bölümüne bakın.

    terraform init
    

    Terraform, ve databricks sağlayıcılarını indirir azurerm ve bunları geçerli çalışma dizininizin adlı .terraformgizli bir alt dizinine yükler. Komutu, terraform init sağlayıcıların hangi sürümünün yüklendiğini yazdırır. Terraform, projeniz için kullanılan sağlayıcıları ne zaman güncelleştirmek istediğinizi denetleyebilmeniz için kullanılan sağlayıcı sürümlerini belirten adlı .terraform.lock.hcl bir kilit dosyası da oluşturur.

  6. komutunu çalıştırarak terraform apply yapılandırmanın istenen durumuna ulaşmak için gereken değişiklikleri uygulayın. Daha fazla bilgi için bkz. Terraform web sitesinde Komut: uygulama .

    terraform apply
    

    Dosyada main.tf henüz hiçbir kaynak belirtilmediğinden çıktı da Terraform Apply complete! Resources: 0 added, 0 changed, 0 destroyed. adlı terraform.tfstatebir dosyaya veri yazar. Kaynak oluşturmak için Örnek yapılandırma, Sonraki adımlar veya her ikisi ile devam ederek oluşturulacak istenen kaynakları belirtin ve komutu yeniden çalıştırın terraform apply . Terraform, yönettiği kaynakların kimliklerini ve özelliklerini bu terraform.tfstate dosyada depolar, böylece gelecekte bu kaynakları güncelleştirebilir veya yok edebilir.

Örnek yapılandırma

Mevcut Azure Databricks çalışma alanında bir not defteri ve bu not defterini çalıştırmak için bir iş oluşturan örnek bir Terraform yapılandırması oluşturmak için aşağıdaki yordamı tamamlayın.

  1. main.tfBaşlarken'de oluşturduğunuz dosyada, sağlayıcıyı databricks mevcut Azure Databricks çalışma alanına başvuracak şekilde değiştirin:

    provider "databricks" {
      host = var.databricks_workspace_url
    }
    
  2. Dosyanın sonuna main.tf aşağıdaki kodu ekleyin:

    variable "databricks_workspace_url" {
      description = "The URL to the Azure Databricks workspace (must start with https://)"
      type = string
      default = "<Azure Databricks workspace URL>"
    }
    
    variable "resource_prefix" {
      description = "The prefix to use when naming the notebook and job"
      type = string
      default = "terraform-demo"
    }
    
    variable "email_notifier" {
      description = "The email address to send job status to"
      type = list(string)
      default = ["<Your email address>"]
    }
    
    // Get information about the Databricks user that is calling
    // the Databricks API (the one associated with "databricks_connection_profile").
    data "databricks_current_user" "me" {}
    
    // Create a simple, sample notebook. Store it in a subfolder within
    // the Databricks current user's folder. The notebook contains the
    // following basic Spark code in Python.
    resource "databricks_notebook" "this" {
      path     = "${data.databricks_current_user.me.home}/Terraform/${var.resource_prefix}-notebook.ipynb"
      language = "PYTHON"
      content_base64 = base64encode(<<-EOT
        # created from ${abspath(path.module)}
        display(spark.range(10))
        EOT
      )
    }
    
    // Create a job to run the sample notebook. The job will create
    // a cluster to run on. The cluster will use the smallest available
    // node type and run the latest version of Spark.
    
    // Get the smallest available node type to use for the cluster. Choose
    // only from among available node types with local storage.
    data "databricks_node_type" "smallest" {
      local_disk = true
    }
    
    // Get the latest Spark version to use for the cluster.
    data "databricks_spark_version" "latest" {}
    
    // Create the job, emailing notifiers about job success or failure.
    resource "databricks_job" "this" {
      name = "${var.resource_prefix}-job-${data.databricks_current_user.me.alphanumeric}"
      new_cluster {
        num_workers   = 1
        spark_version = data.databricks_spark_version.latest.id
        node_type_id  = data.databricks_node_type.smallest.id
      }
      notebook_task {
        notebook_path = databricks_notebook.this.path
      }
      email_notifications {
        on_success = var.email_notifier
        on_failure = var.email_notifier
      }
    }
    
    // Print the URL to the notebook.
    output "notebook_url" {
      value = databricks_notebook.this.url
    }
    
    // Print the URL to the job.
    output "job_url" {
      value = databricks_job.this.url
    }
    
  3. Aşağıdaki değerleri değiştirin ve dosyayı kaydedin:

    • değerini Azure Databricks çalışma alanının URL'si ile değiştirin <Azure Databricks workspace URL> .
    • değerini e-posta adresinizle değiştirin <Your email address> .
  4. terraform apply öğesini çalıştırın.

  5. Not defterinin ve işin oluşturulduğunu doğrulayın: komutun terraform apply çıkışında ve url'lerini bulun ve job_url bu URL'lere notebook_url gidin.

  6. İşi çalıştırın: İşler sayfasında Şimdi Çalıştır'a tıklayın. İş tamamlandıktan sonra e-posta gelen kutunuzu denetleyin.

  7. Bu örneği tamamladığınızda komutunu çalıştırarak terraform destroynot defterini ve işi Azure Databricks çalışma alanından silin.

  8. Not defterinin ve işin silindiğini doğrulayın: Kaynakları bulamadığını belirten bir ileti görüntülemek için not defterini ve İşler sayfalarını yenileyin.

Sonraki adımlar

  1. Azure Databricks çalışma alanı oluşturun.
  2. Azure Databricks çalışma alanı için çalışma alanı kaynaklarını yönetme.

Sorun giderme

Not

Terraform'a özgü destek için HashiCorp Tartışma web sitesindeki En son Terraform konularına bakın. Databricks Terraform Sağlayıcısına özgü sorunlar için bkz. databrickslabs/terraform-provider-databricks GitHub deposundaki sorunlar.

Hata: Sağlayıcı yüklenemedi

Sorun: Bir dosyayı sürüm denetim sisteminize iade terraform.lock.hcl etmediyseniz ve komutunu çalıştırırsanız terraform init şu ileti görüntülenir: Failed to install provider. Ek çıktı aşağıdakine benzer bir ileti içerebilir:

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"

Neden: Terraform yapılandırmalarınız güncel olmayan Databricks Terraform sağlayıcılarına başvurur.

Çözüm:

  1. öğesini tüm dosyalarınızda .tf ile databricks/databricks değiştirindatabrickslabs/databricks.

    Bu değiştirmeleri otomatikleştirmek için güncelleştirilecek dosyaları içeren üst klasörden .tf aşağıdaki Python komutunu çalıştırın:

    python3 -c "$(curl -Ls https://dbricks.co/updtfns)"
    
  2. Aşağıdaki Terraform komutunu çalıştırın ve istendiğinde değişiklikleri onaylayın:

    terraform state replace-provider databrickslabs/databricks databricks/databricks
    

    Bu komut hakkında bilgi için Terraform belgelerindeki Command: state replace-provider bölümüne bakın.

  3. Aşağıdaki Terraform komutunu çalıştırarak değişiklikleri doğrulayın:

    terraform init
    

Hata: Kullanılabilir sağlayıcı paketleri sorgulanamadı

Sorun: Bir dosyayı sürüm denetim sisteminize iade terraform.lock.hcl etmediyseniz ve komutunu çalıştırırsanız terraform init şu ileti görüntülenir: Failed to query available provider packages.

Neden: Terraform yapılandırmalarınız güncel olmayan Databricks Terraform sağlayıcılarına başvurur.

Çözüm: Hata: Sağlayıcı yüklenemedi başlığı altında yer alan çözüm yönergelerini izleyin.

Ek örnekler

Ek kaynaklar