موفر Databricks Terraform

HashiCorp Terraform هي أداة مصدر مفتوح شائعة لإنشاء بنية أساسية سحابية آمنة ويمكن التنبؤ بها عبر العديد من موفري السحابة. يمكنك استخدام موفر Databricks Terraform لإدارة مساحات عمل Azure Databricks والبنية الأساسية السحابية المرتبطة باستخدام أداة مرنة وقوية. الهدف من موفر Databricks Terraform هو دعم جميع واجهات برمجة تطبيقات Databricks REST، ودعم أتمتة الجوانب الأكثر تعقيدا لنشر وإدارة الأنظمة الأساسية للبيانات الخاصة بك. يستخدم عملاء Databricks موفر Databricks Terraform لنشر المجموعات والوظائف وإدارتها وتكوين الوصول إلى البيانات. يمكنك استخدام موفر Azure لتوفير مساحات عمل Azure Databricks.

الشروع في العمل

في هذا القسم، يمكنك تثبيت المتطلبات وتكوينها لاستخدام Terraform وموفر Databricks Terraform على جهاز التطوير المحلي. ثم تقوم بتكوين مصادقة Terraform. بعد هذا القسم، توفر هذه المقالة نموذج تكوين يمكنك تجربته لتوفير دفتر ملاحظات Azure Databricks، نظام مجموعة، ومهمة لتشغيل دفتر الملاحظات على نظام المجموعة في مساحة عمل Azure Databricks موجودة.

المتطلبات

  1. يجب أن يكون لديك Terraform CLI. راجع تنزيل Terraform على موقع Terraform على الويب.

  2. يجب أن يكون لديك مشروع Terraform. في المحطة الطرفية الخاصة بك، قم بإنشاء دليل فارغ ثم قم بالتبديل إليه. (يجب أن تكون كل مجموعة منفصلة من ملفات تكوين Terraform في دليلها الخاص، والذي يسمى مشروع Terraform.) على سبيل المثال: mkdir terraform_demo && cd terraform_demo.

    mkdir terraform_demo && cd terraform_demo
    

    قم بتضمين تكوينات Terraform لمشروعك في ملف تكوين واحد أو أكثر في مشروع Terraform. للحصول على معلومات حول بناء جملة ملف التكوين، راجع وثائق لغة Terraform على موقع Terraform على الويب.

  3. يجب إضافة إلى مشروع Terraform الخاص بك تبعية لموفر Databricks Terraform. أضف ما يلي إلى أحد ملفات التكوين في مشروع Terraform:

    terraform {
      required_providers {
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
  4. يجب تكوين المصادقة لمشروع Terraform الخاص بك. راجع المصادقة في وثائق موفر Databricks Terraform.

عينة التكوين

يوفر هذا القسم نموذج تكوين يمكنك تجربته لتوفير دفتر ملاحظات Azure Databricks، كتلة، ووظيفة لتشغيل دفتر الملاحظات على نظام المجموعة، في مساحة عمل Azure Databricks موجودة. يفترض أنك قمت بالفعل بإعداد المتطلبات، بالإضافة إلى إنشاء مشروع Terraform وتكوين المشروع باستخدام مصادقة Terraform كما هو موضح في القسم السابق.

  1. أنشئ ملفا باسم me.tf في مشروع Terraform، وأضف التعليمات البرمجية التالية. يحصل هذا الملف على معلومات حول المستخدم الحالي (أنت):

    # Retrieve information about the current user.
    data "databricks_current_user" "me" {}
    
  2. أنشئ ملفا آخر باسم notebook.tf، وأضف التعليمات البرمجية التالية. يمثل هذا الملف دفتر الملاحظات.

    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
    }
    
  3. أنشئ ملفا آخر باسم notebook.auto.tfvars، وأضف التعليمات البرمجية التالية. يحدد هذا الملف خصائص دفتر الملاحظات.

    notebook_subdirectory = "Terraform"
    notebook_filename     = "notebook-getting-started.py"
    notebook_language     = "PYTHON"
    
  4. أنشئ ملفا آخر باسم notebook-getting-started.py، وأضف التعليمات البرمجية التالية. يمثل هذا الملف محتويات دفتر الملاحظات.

    display(spark.range(10))
    
  5. أنشئ ملفا آخر باسم cluster.tf، وأضف التعليمات البرمجية التالية. يمثل هذا الملف نظام المجموعة.

    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
    }
    
  6. أنشئ ملفا آخر باسم cluster.auto.tfvars، وأضف التعليمات البرمجية التالية. يحدد هذا الملف خصائص نظام المجموعة.

    cluster_name                    = "My Cluster"
    cluster_autotermination_minutes = 60
    cluster_num_workers             = 1
    
  7. أنشئ ملفا آخر باسم job.tf، وأضف التعليمات البرمجية التالية. يمثل هذا الملف المهمة التي تقوم بتشغيل دفتر الملاحظات على نظام المجموعة.

    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
    }
    
  8. أنشئ ملفا آخر باسم job.auto.tfvars، وأضف التعليمات البرمجية التالية. يحدد هذا الملف خصائص الوظائف.

    job_name = "My Job"
    
  9. شغّل terraform plan. إذا كانت هناك أي أخطاء، فقم بإصلاحها، ثم قم بتشغيل الأمر مرة أخرى.

  10. شغّل terraform apply.

  11. تحقق من إنشاء دفتر الملاحظات والكتلة والمهمة: في إخراج terraform apply الأمر، ابحث عن عناوين URL ل notebook_urlcluster_urlو و job_urlوانتقل إليها.

  12. تشغيل المهمة: في صفحة المهام ، انقر فوق تشغيل الآن. بعد انتهاء المهمة، تحقق من علبة الوارد للبريد الإلكتروني.

  13. عند الانتهاء من هذا النموذج، احذف دفتر الملاحظات والكتلة والمهمة من مساحة عمل Azure Databricks عن طريق تشغيل terraform destroy.

    إشعار

    لمزيد من المعلومات حول terraform planterraform applyالأوامر و وterraform destroy، راجع وثائق Terraform CLI في وثائق Terraform.

  14. تحقق من حذف دفتر الملاحظات والكتلة والمهمة: قم بتحديث صفحات دفتر الملاحظات والمجموعة والوظائف لكل منها بعرض رسالة تفيد بأنه لا يمكن العثور على المورد.

الخطوات التالية

  1. إنشاء مساحة عمل Azure Databricks.
  2. إدارة موارد مساحة العمل لمساحة عمل Azure Databricks.

استكشاف الأخطاء وإصلاحها

إشعار

للحصول على دعم خاص ب Terraform، راجع أحدث مواضيع Terraform على موقع HashiCorp Discuss على الويب. بالنسبة للمشكلات الخاصة بموفر Databricks Terraform، راجع المشكلات في مستودع Databrickslabs/terraform-provider-databricks GitHub.

خطأ: فشل تثبيت الموفر

المشكلة: إذا لم تقم إيداع ملف إلى نظام التحكم بالإصدار terraform.lock.hcl الخاص بك، وقمت بتشغيل terraform init الأمر، فستظهر الرسالة التالية: Failed to install provider. قد يتضمن الإخراج الإضافي رسالة مشابهة للرسالة التالية:

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"

السبب: تشير تكوينات Terraform إلى موفري Databricks Terraform القديمين.

الحل:

  1. استبدل databrickslabs/databricks ب databricks/databricks في جميع ملفاتك .tf .

    لأتمتة هذه الاستبدالات، قم بتشغيل أمر Python التالي من المجلد الأصل الذي يحتوي على الملفات .tf المراد تحديثها:

    python3 -c "$(curl -Ls https://dbricks.co/updtfns)"
    
  2. تشغيل الأمر Terraform التالي ثم الموافقة على التغييرات عند مطالبتك:

    terraform state replace-provider databrickslabs/databricks databricks/databricks
    

    للحصول على معلومات حول هذا الأمر، راجع الأمر: موفر استبدال الحالة في وثائق Terraform.

  3. تحقق من التغييرات عن طريق تشغيل الأمر Terraform التالي:

    terraform init
    

خطأ: فشل الاستعلام عن حزم الموفر المتوفرة

المشكلة: إذا لم تقم إيداع ملف إلى نظام التحكم بالإصدار terraform.lock.hcl الخاص بك، وقمت بتشغيل terraform init الأمر، فستظهر الرسالة التالية: Failed to query available provider packages.

السبب: تشير تكوينات Terraform إلى موفري Databricks Terraform القديمين.

الحل: اتبع إرشادات الحل في الخطأ: فشل تثبيت الموفر.

أمثلة إضافية

الموارد الإضافية