موفر Terraform CDK Databricks
إشعار
تتناول هذه المقالة مجموعة أدوات تطوير السحابة ل Terraform (CDKTF)، والتي لا يتم توفيرها أو دعمها من قبل Databricks. للاتصال بالموفر، راجع مجتمع Terraform.
توضح هذه المقالة كيفية استخدام Python جنبا إلى جنب مع موفر Terraform CDK Databricks ومجموعة تطوير السحابة ل Terraform (CDKTF). CDKTF هو نظام أساسي تابع لجهة خارجية كبنية أساسية للتعليمات البرمجية (IaC) يمكنك من إنشاء موارد Azure Databricks ونشرها وإدارتها باستخدام لغات البرمجة والأدوات والممارسات الهندسية المألوفة. على الرغم من أن هذه المقالة توضح لك كيفية استخدام Python، فإن CDKTF يدعم لغات إضافية مثل TypeScript وJava وC#وGo.
يعتمد موفر Terraform CDK Databricks على موفر Databricks Terraform. لمزيد من المعلومات، راجع Terraform Cloud. يستند CDKTF إلى AWS Cloud Development Kit (AWS CDK).
المتطلبات
يجب أن يكون لديك مساحة عمل Azure Databricks، حيث تنشر هذه المقالة الموارد في مساحة عمل موجودة.
على جهاز التطوير المحلي، يجب أن يكون لديك ما يلي مثبتا:
Terraform، الإصدار 1.1 أو أعلى. للتحقق مما إذا كان Terraform مثبتا لديك، وللتحقق من الإصدار المثبت، قم بتشغيل الأمر
terraform -v
من المحطة الطرفية أو باستخدام PowerShell. قم بتثبيت Terraform، إذا لم يكن مثبتا لديك بالفعل.terraform -v
Node.js، الإصدار 16.13 أو أعلى، وnpm. للتحقق مما إذا كان لديك Node.js وتثبيتها
npm
، وللتحقق من الإصدارات المثبتة، قم بتشغيل الأوامرnode -v
وnpm -v
. تتضمنnpm
أحدث إصدارات Node.js بالفعل . قم بتثبيت Node.js وnpm باستخدام Node Version Manager (nvm)، إذا لم يكن لديك Node.js وثبتتnpm
بالفعل.node -v npm -v
CDKTF CLI. للتحقق مما إذا كان لديك CDKTF CLI مثبتا، وللتحقق من الإصدار المثبت، قم بتشغيل الأمر
cdktf --version
. قم بتثبيت CDKTF CLI باستخدام npm، إذا لم يكن مثبتا لديك بالفعل.cdktf --version
تلميح
يمكنك أيضا تثبيت CDKTF CLI على macOS مع Homebrew. راجع تثبيت CDKTF.
إصدار Python 3.7 أو أعلى وإصدار pipenv 2021.5.29 أو أعلى. للتحقق مما إذا كان لديك Python وتثبيته
pipenv
، وللتحقق من الإصدارات المثبتة، قم بتشغيل الأوامرpython --version
وpipenv --version
. تثبيت Python وتثبيت pipenv، إذا لم تكن مثبتة بالفعل.python --version pipenv --version
تم تكوين مصادقة Azure Databricks لنوع المصادقة المدعوم الذي تريد استخدامه. راجع المصادقة في وثائق موفر Databricks Terraform.
الخطوة 1: إنشاء مشروع CDKTF
في هذه الخطوة، على جهاز التطوير المحلي الخاص بك، قمت بإعداد بنية الدليل الضرورية لمشروع CDKTF. ثم إنشاء مشروع CDKTF داخل بنية الدليل هذه.
أنشئ دليلا فارغا لمشروع CDKTF، ثم قم بالتبديل إليه. قم بتشغيل الأوامر التالية في المحطة الطرفية أو باستخدام PowerShell:
Unix وLinux وmacOS
mkdir cdktf-demo cd cdktf-demo
Windows
md cdktf-demo cd cdktf-demo
إنشاء مشروع CDKTF عن طريق تشغيل الأمر التالي:
cdktf init --template=python --local
عند مطالبتك باسم مشروع، اقبل اسم المشروع الافتراضي للضغط
cdktf-demo
على Enter.عند مطالبتك بوصف المشروع، اقبل وصف المشروع الافتراضي بالضغط على Enter.
إذا طلب منك ذلك هل تريد البدء من مشروع Terraform موجود، أدخل
N
واضغط على Enter.إذا تمت مطالبتك بذلك، هل تريد إرسال تقارير الأعطال إلى فريق CDKTF، أدخل
n
واضغط على Enter.
ينشئ CDKTF الملفات والدلائل الفرعية التالية في الدليل الخاص بك cdktf-demo
:
.gitignore
، وهي قائمة بالملفات والدلائل التي يتجاهلها Git إذا كنت تريد دفع هذا المشروع إلى مستودع Git بعيد.cdktf.json
، الذي يحتوي على إعدادات التكوين لمشروع CDKTF الخاص بك. راجع ملف التكوين لمزيد من المعلومات حول إعدادات التكوين.help
، الذي يحتوي على معلومات حول بعض الخطوات التالية التي يمكنك اتخاذها للعمل مع مشروع CDKTF.main-test.py
، الذي يحتوي على اختبارات الوحدة الداعمة التي يمكنك كتابتها لمشروع CDKTF. راجع اختبارات الوحدة لمزيد من المعلومات حول اختبار الوحدة.main.py
، الذي يحتوي على التعليمات البرمجية Python التي تكتبها لمشروع CDKTF الخاص بك.Pipfile
وPipfile.lock
، التي تدير تبعيات التعليمات البرمجية لمشروع CDKTF الخاص بك.
الخطوة 2: تحديد الموارد
في هذه الخطوة، يمكنك استخدام موفر Terraform CDK Databricks لتعريف دفتر ملاحظات ووظيفة لتشغيل دفتر الملاحظات هذا.
تثبيت تبعيات المشروع: باستخدام
pipenv
، ثبت في مشروع CDKTF موفر Terraform CDK Databricks لإنشاء موارد Azure Databricks. للقيام بذلك، قم بتشغيل ما يلي:pipenv install cdktf-cdktf-provider-databricks
استبدل محتويات
main.py
الملف بالتعليمات البرمجية التالية. تصادق هذه التعليمة البرمجية CDKTF مع مساحة عمل Azure Databricks، ثم تنشئ دفتر ملاحظات مع مهمة لتشغيل دفتر الملاحظات. لعرض وثائق بناء الجملة لهذه التعليمات البرمجية، راجع مرجع إنشاء موفر Terraform CDK Databricks ل Python.#!/usr/bin/env python from constructs import Construct from cdktf import ( App, TerraformStack, TerraformOutput ) from cdktf_cdktf_provider_databricks import ( data_databricks_current_user, job, notebook, provider ) import vars from base64 import b64encode class MyStack(TerraformStack): def __init__(self, scope: Construct, ns: str): super().__init__(scope, ns) provider.DatabricksProvider( scope = self, id = "databricksAuth" ) current_user = data_databricks_current_user.DataDatabricksCurrentUser( scope = self, id_ = "currentUser" ) # Define the notebook. my_notebook = notebook.Notebook( scope = self, id_ = "notebook", path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py", language = "PYTHON", content_base64 = b64encode(b"display(spark.range(10))").decode("UTF-8") ) # Define the job to run the notebook. my_job = job.Job( scope = self, id_ = "job", name = f"{vars.resource_prefix}-job", task = [ job.JobTask( task_key = f"{vars.resource_prefix}-task", new_cluster = job.JobTaskNewCluster( num_workers = vars.num_workers, spark_version = vars.spark_version, node_type_id = vars.node_type_id ), notebook_task = job.JobTaskNotebookTask( notebook_path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py" ), email_notifications = job.JobTaskEmailNotifications( on_success = [ current_user.user_name ], on_failure = [ current_user.user_name ] ) ) ] ) # Output the notebook and job URLs. TerraformOutput( scope = self, id = "Notebook URL", value = my_notebook.url ) TerraformOutput( scope = self, id = "Job URL", value = my_job.url ) app = App() MyStack(app, "cdktf-demo") app.synth()
إنشاء ملف باسم
vars.py
في نفس الدليل مثلmain.py
. استبدل القيم التالية بالقيم الخاصة بك لتحديد بادئة مورد وإعدادات نظام المجموعة مثل عدد العمال وسلسلة إصدار وقت تشغيل Spark ونوع العقدة.#!/usr/bin/env python resource_prefix = "cdktf-demo" num_workers = 1 spark_version = "14.3.x-scala2.12" node_type_id = "Standard_D3_v2"
الخطوة 3: نشر الموارد
في هذه الخطوة، يمكنك استخدام CDKTF CLI لنشر، في مساحة عمل Azure Databricks الحالية، دفتر الملاحظات المحدد والمهمة لتشغيل دفتر الملاحظات هذا.
إنشاء رمز Terraform المكافئ لمشروع CDKTF الخاص بك. للقيام بذلك، قم بتشغيل
cdktf synth
الأمر .cdktf synth
قبل إجراء التغييرات، يمكنك مراجعة تغييرات الموارد المعلقة. قم بإجراء ما يلي:
cdktf diff
انشر دفتر الملاحظات والمهمة
cdktf deploy
عن طريق تشغيل الأمر .cdktf deploy
عند مطالبتك بالموافقة، اضغط على مفتاح الإدخال Enter. ينشئ Terraform دفتر الملاحظات والمهمة وينشرهما في مساحة العمل الخاصة بك.
الخطوة 4: التفاعل مع الموارد
في هذه الخطوة، يمكنك تشغيل المهمة في مساحة عمل Azure Databricks، التي تقوم بتشغيل دفتر الملاحظات المحدد.
- لعرض دفتر الملاحظات الذي سيتم تشغيل المهمة فيه في مساحة العمل، انسخ ارتباط عنوان URL لدفتر الملاحظات الذي يظهر في إخراج
cdk deploy
الأمر والصقه في شريط عناوين مستعرض الويب. - لعرض المهمة التي تقوم بتشغيل دفتر الملاحظات في مساحة العمل الخاصة بك، انسخ ارتباط Job URL الذي يظهر في إخراج
cdk deploy
الأمر والصقه في شريط عناوين مستعرض الويب الخاص بك. - لتشغيل المهمة، انقر فوق الزر تشغيل الآن في صفحة المهمة.
(اختياري) الخطوة 5: إجراء تغييرات على مورد
في هذه الخطوة الاختيارية، يمكنك تغيير التعليمات البرمجية لدفتر الملاحظات، وإعادة نشر دفتر الملاحظات الذي تم تغييره، ثم استخدام المهمة لإعادة تشغيل دفتر الملاحظات الذي تم تغييره.
إذا كنت لا تريد إجراء أي تغييرات على دفتر الملاحظات، فانتقل إلى الخطوة 6: التنظيف.
في
main.py
الملف، قم بتغييرnotebook
إعلان المتغير من ما يلي:my_notebook = notebook.Notebook( scope = self, id_ = "notebook", path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py", language = "PYTHON", content_base64 = b64encode(b"display(spark.range(10))").decode("UTF-8") )
إلى ما يلي:
my_notebook = notebook.Notebook( scope = self, id_ = "notebook", path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py", language = "PYTHON", content_base64 = b64encode(b''' data = [ { "Category": 'A', "ID": 1, "Value": 121.44 }, { "Category": 'B', "ID": 2, "Value": 300.01 }, { "Category": 'C', "ID": 3, "Value": 10.99 }, { "Category": 'E', "ID": 4, "Value": 33.87} ] df = spark.createDataFrame(data) display(df) ''').decode("UTF-8") )
إشعار
تأكد من محاذاة أسطر التعليمات البرمجية بين علامات الاقتباس الثلاثية (
'''
) مع حافة محرر التعليمات البرمجية، كما هو موضح. وإلا، سيدرج Terraform مسافة بيضاء إضافية في دفتر الملاحظات مما قد يؤدي إلى فشل تشغيل التعليمات البرمجية الجديدة ل Python.إعادة إنشاء رمز Terraform المكافئ لمشروع CDKTF الخاص بك. للقيام بذلك، قم بتشغيل ما يلي:
cdktf synth
قبل إجراء التغييرات، يمكنك مراجعة تغييرات الموارد المعلقة. قم بإجراء ما يلي:
cdktf diff
انشر تغييرات دفتر الملاحظات عن طريق تشغيل
cdktf deploy
الأمر .cdktf deploy
عند مطالبتك بالموافقة، اضغط على مفتاح الإدخال Enter. يغير Terraform محتويات دفتر الملاحظات.
لعرض دفتر الملاحظات الذي تم تغييره الذي سيتم تشغيل المهمة فيه في مساحة العمل، قم بتحديث دفتر الملاحظات الذي فتحته سابقا، أو انسخ ارتباط عنوان URL لدفتر الملاحظات الذي يظهر في إخراج
cdk deploy
الأمر والصقه في شريط عناوين مستعرض الويب.لعرض المهمة التي تقوم بتشغيل دفتر الملاحظات الذي تم تغييره في مساحة العمل، قم بتحديث المهمة التي فتحتها سابقا، أو انسخ ارتباط Job URL الذي يظهر في إخراج
cdk deploy
الأمر والصقه في شريط عناوين مستعرض الويب.لتشغيل المهمة، انقر فوق الزر تشغيل الآن في صفحة المهمة.
الخطوة 6: التنظيف
في هذه الخطوة، يمكنك استخدام CDKTF CLI لإزالة دفتر الملاحظات والوظيفة من مساحة عمل Azure Databricks.
قم بإزالة الموارد من مساحة العمل الخاصة بك عن طريق تشغيل
cdktf destroy
الأمر :cdktf destroy
عند مطالبتك بالموافقة، اضغط على مفتاح الإدخال Enter. يزيل Terraform الموارد من مساحة العمل الخاصة بك.
الاختبار
يمكنك اختبار مشروع CDKTF قبل نشره. راجع اختبارات الوحدة في وثائق CDKTF.
بالنسبة لمشاريع CDKTF المستندة إلى Python، يمكنك كتابة الاختبارات وتشغيلها باستخدام Pytest إطار عمل اختبار Python مع cdktf
فئة الحزمةTesting
. يختبر ملف المثال التالي المسمى test_main.py
التعليمات البرمجية CDKTF في الملف السابق main.py
لهذه المقالة. يتحقق الاختبار الأول مما إذا كان دفتر ملاحظات المشروع سيحتوي على التمثيل المتوقع بترميز Base64 لمحتوى دفتر الملاحظات. يتحقق الاختبار الثاني ما إذا كانت مهمة المشروع ستحتوي على اسم المهمة المتوقع. لتشغيل هذه الاختبارات، قم بتشغيل pytest
الأمر من الدليل الجذر للمشروع.
from cdktf import App, Testing
from cdktf_cdktf_provider_databricks import job, notebook
from main import MyStack
class TestMain:
app = App()
stack = MyStack(app, "cdktf-demo")
synthesized = Testing.synth(stack)
def test_notebook_should_have_expected_base64_content(self):
assert Testing.to_have_resource_with_properties(
received = self.synthesized,
resource_type = notebook.Notebook.TF_RESOURCE_TYPE,
properties = {
"content_base64": "ZGlzcGxheShzcGFyay5yYW5nZSgxMCkp"
}
)
def test_job_should_have_expected_job_name(self):
assert Testing.to_have_resource_with_properties(
received = self.synthesized,
resource_type = job.Job.TF_RESOURCE_TYPE,
properties = {
"name": "cdktf-demo-job"
}
)
المزيد من الموارد
- مرجع إنشاء موفر Terraform CDK Databricks ل TypeScript وPython وJava وC#وGo
- تمكين التسجيل لتطبيقات CDKTF