Terraform CDK Databricks Sağlayıcısı
Not
Bu makale, bir üçüncü taraf tarafından geliştirilen Terraform için Bulut Geliştirme Seti'ni (CDKTF) kapsar. Sağlayıcıyla iletişim kurmak için terraform topluluğuna bakın.
Bu makalede, Python'ın Terraform CDK Databricks Sağlayıcısı ve Terraform için Bulut Geliştirme Seti (CDKTF) ile birlikte nasıl kullanılacağı gösterilmektedir. CDKTF, tanıdık programlama dillerini, araçları ve mühendislik uygulamalarını kullanarak Azure Databricks kaynakları oluşturmanızı, dağıtmanızı ve yönetmenizi sağlayan üçüncü taraf bir kod olarak altyapı (IaC) platformudur. Bu makalede Python'ın nasıl kullanılacağı gösterse de CDKTF, TypeScript, Java, C# ve Go gibi ek dilleri destekler.
Terraform CDK Databricks sağlayıcısı Databricks Terraform sağlayıcısını temel alır. Daha fazla bilgi için bkz . Terraform Cloud. CDKTF, AWS Cloud Development Kit'i (AWS CDK) temel alır.
Gereksinimler
Bu makale kaynakları mevcut bir çalışma alanına dağıttığı için bir Azure Databricks çalışma alanınız olmalıdır.
Yerel geliştirme makinenizde aşağıdakilerin yüklü olması gerekir:
Terraform, sürüm 1.1 veya üzeri. Terraform'un yüklü olup olmadığını denetlemek ve yüklü sürümü denetlemek için terminalden veya PowerShell ile komutunu
terraform -v
çalıştırın. Terraform'u henüz yüklemediyseniz yükleyin.terraform -v
Node.js, sürüm 16.13 veya üzeri ve npm. Node.js ve
npm
yüklü olup olmadığınızı denetlemek ve yüklü sürümleri denetlemek için venode -v
komutlarınınpm -v
çalıştırın. Node.js'nin en son sürümleri zaten içerirnpm
. Node.js ve zaten yüklü değilse Node Version Manager (nvm) kullanarak Node.js venpm
npm'yi yükleyin.node -v npm -v
CDKTF CLI. CDKTF CLI yüklü olup olmadığını denetlemek ve yüklü sürümü denetlemek için komutunu
cdktf --version
çalıştırın. CdKTF CLI'yi npm kullanarak yükleyin( henüz yüklü değilse).cdktf --version
İpucu
CdKTF CLI'yi Homebrew ile macOS'a da yükleyebilirsiniz. Bkz . CDKTF'yi yükleme.
Python sürüm 3.7 veya üzeri ve pipenv sürüm 2021.5.29 veya üzeri. Python ve
pipenv
yüklü olup olmadığınızı denetlemek ve yüklü sürümleri denetlemek için vepython --version
komutlarınıpipenv --version
çalıştırın. Python'ı yükleyin ve henüz yüklü değilse pipenv yükleyin.python --version pipenv --version
Kullanmak istediğiniz desteklenen kimlik doğrulama türü için yapılandırılmış Azure Databricks kimlik doğrulaması. Databricks Terraform sağlayıcısı belgelerinde kimlik doğrulaması bölümüne bakın.
1. Adım: CDKTF projesi oluşturma
Bu adımda, yerel geliştirme makinenizde bir CDKTF projesi için gerekli dizin yapısını ayarlarsınız. Ardından CDKTF projenizi bu dizin yapısı içinde oluşturursunuz.
CDKTF projeniz için boş bir dizin oluşturun ve bu dizine geçin. Terminalinizde veya PowerShell ile aşağıdaki komutları çalıştırın:
Unix, Linux ve macOS
mkdir cdktf-demo cd cdktf-demo
Windows
md cdktf-demo cd cdktf-demo
Aşağıdaki komutu çalıştırarak bir CDKTF projesi oluşturun:
cdktf init --template=python --local
Proje Adı istendiğinde, Enter tuşuna basarak varsayılan proje adını
cdktf-demo
kabul edin.Proje Açıklaması istendiğinde, Enter tuşuna basarak varsayılan proje açıklamasını kabul edin.
Mevcut bir Terraform projesinden başlamak istiyor musunuz sorulursa, girin ve Enter tuşuna
N
.CDKTF ekibine kilitlenme raporları göndermek istiyor musunuz sorulursa, girin ve Enter tuşuna
n
.
CDKTF dizininizde cdktf-demo
aşağıdaki dosyaları ve alt dizinleri oluşturur:
-
.gitignore
, bu projeyi uzak bir Git deposuna göndermek istiyorsanız Git'in yoksaydığı dosya ve dizinlerin listesidir. -
cdktf.json
, CDKTF projenizin yapılandırma ayarlarını içerir. Yapılandırma ayarları hakkında daha fazla bilgi için bkz . Yapılandırma Dosyası . -
help
, CDKTF projenizle çalışmak için atabileceğiniz bazı sonraki adımlar hakkında bilgi içerir. -
main-test.py
, CDKTF projeniz için yazabileceğiniz destekleyici birim testlerini içerir. Birim testi hakkında daha fazla bilgi için bkz . Birim Testleri . -
main.py
, CDKTF projeniz için yazdığınız Python kodunu içerir. -
Pipfile
vePipfile.lock
cdktf projeniz için kod bağımlılıklarını yönetir.
2. Adım: Kaynakları tanımlama
Bu adımda Terraform CDK Databricks sağlayıcısını kullanarak bir not defteri ve bu not defterini çalıştıracak bir iş tanımlarsınız.
Proje bağımlılıklarını yükleyin: kullanarak
pipenv
Azure Databricks kaynakları oluşturmak için Terraform CDK Databricks Sağlayıcısı'nıCDKTF projenize yükleyin. Bunu yapmak için aşağıdakileri çalıştırın:pipenv install cdktf-cdktf-provider-databricks
Dosyanın içeriğini
main.py
aşağıdaki kodla değiştirin. Bu kod, Azure Databricks çalışma alanınızla CDKTF'nin kimliğini doğrular, ardından not defterini çalıştırmak için bir iş ile birlikte bir not defteri oluşturur. Bu kodun söz dizimi belgelerini görüntülemek için Bkz. Python için Terraform CDK Databricks sağlayıcı yapısı başvurusu.#!/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()
ile aynı dizinde
vars.py
adlımain.py
bir dosya oluşturun. Çalışan sayısı, Spark çalışma zamanı sürüm dizesi ve düğüm türü gibi bir kaynak ön eki ve küme ayarları belirtmek için aşağıdaki değerleri kendi değerlerinizle değiştirin.#!/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. Adım: Kaynakları dağıtma
Bu adımda, mevcut Azure Databricks çalışma alanınıza, tanımlı not defterine ve bu not defterini çalıştırma işini dağıtmak için CDKTF CLI'sini kullanırsınız.
CDKTF projeniz için terraform kodunun eşdeğerini oluşturun. Bunu yapmak için
cdktf synth
komutunu çalıştırın.cdktf synth
Değişiklik yapmadan önce bekleyen kaynak değişikliklerini gözden geçirebilirsiniz. Aşağıdakileri çalıştırın:
cdktf diff
komutunu çalıştırarak not defterini ve işi dağıtın
cdktf deploy
.cdktf deploy
Onaylamanız istendiğinde Enter tuşuna basın. Terraform, not defterini ve işi oluşturur ve çalışma alanınıza dağıtır.
4. Adım: Kaynaklarla etkileşim kurma
Bu adımda, işi belirtilen not defterini çalıştıran Azure Databricks çalışma alanınızda çalıştırırsınız.
- İşin çalışma alanınızda çalıştırılacağı not defterini görüntülemek için, komutun bağlantısını kopyalayın ve web tarayıcınızın adres çubuğuna yapıştırın.
- Çalışma alanınızda not defterini çalıştıran işi görüntülemek için, komutun bağlantısını kopyalayın ve web tarayıcınızın adres çubuğuna yapıştırın.
- İşi çalıştırmak için iş sayfasındaki Şimdi çalıştır düğmesine tıklayın.
(İsteğe bağlı) 5. Adım: Kaynakta değişiklik yapma
Bu isteğe bağlı adımda not defterinin kodunu değiştirir, değiştirilen not defterini yeniden dağıtıp değiştirilen not defterini yeniden çalıştırmak için işi kullanırsınız.
Not defterinde değişiklik yapmak istemiyorsanız, 6. Adım: Temizleme'ye atlayın.
main.py
dosyasında, değişken bildirimininotebook
aşağıdakilerden değiştirin: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") )
Şu şekilde:
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") )
Not
Üç tırnak işaretiyle (
'''
) arasındaki kod satırlarının gösterildiği gibi kod düzenleyicinizin kenarıyla hizalandığından emin olun. Aksi takdirde Terraform not defterine yeni Python kodunun çalışmamasına neden olabilecek ek boşluk ekler.CDKTF projeniz için Terraform kodu eşdeğerini yeniden üretin. Bunu yapmak için aşağıdakileri çalıştırın:
cdktf synth
Değişiklik yapmadan önce bekleyen kaynak değişikliklerini gözden geçirebilirsiniz. Aşağıdakileri çalıştırın:
cdktf diff
komutunu çalıştırarak not defteri değişikliklerini dağıtın
cdktf deploy
.cdktf deploy
Onaylamanız istendiğinde Enter tuşuna basın. Terraform not defterinin içeriğini değiştirir.
İşin çalışma alanınızda çalıştırılacağı değiştirilmiş not defterini görüntülemek için, daha önce açtığınız not defterini yenileyin veya komutun çıkışında görüntülenen Not Defteri URL'si bağlantısını kopyalayıp web tarayıcınızın
cdk deploy
adres çubuğuna yapıştırın.Çalışma alanınızda değiştirilen not defterini çalıştıran işi görüntülemek için, daha önce açtığınız işi yenileyin veya komutun bağlantısını kopyalayıp web tarayıcınızın adres çubuğuna yapıştırın.
İşi çalıştırmak için iş sayfasındaki Şimdi çalıştır düğmesine tıklayın.
6. Adım: Temizleme
Bu adımda, AZURE Databricks çalışma alanınızdan not defterini ve işi kaldırmak için CDKTF CLI'yi kullanırsınız.
komutunu çalıştırarak
cdktf destroy
kaynakları çalışma alanınızdan kaldırın:cdktf destroy
Onaylamanız istendiğinde Enter tuşuna basın. Terraform kaynakları çalışma alanınızdan kaldırır.
Test Etme
CDKTF projenizi dağıtmadan önce test edebilirsiniz. CDKTF belgelerinde Birim Testleri'ne bakın.
Python tabanlı CDKTF projeleri için, paketin sınıfıyla cdktf
birlikte Python test çerçevesi Testing
kullanarak testler yazabilir ve çalıştırabilirsiniz. adlı test_main.py
aşağıdaki örnek dosya, bu makalenin önceki dosyasındaki CDKTF kodunu test ediyor main.py
. İlk test, projenin not defterinin not defterinin beklenen Base64 kodlu gösterimini içerip içermediğini denetler. İkinci test, projenin işinin beklenen iş adını içerip içermediğini denetler. Bu testleri çalıştırmak için projenin kök dizininden komutunu çalıştırın 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"
}
)
Diğer kaynaklar
- TypeScript, Python, Java, C# ve Go için Terraform CDK Databricks sağlayıcı yapısı başvurusu
- CDKTF uygulamaları için günlüğe kaydetmeyi etkinleştirme