Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 -vNode.js, sürüm 16.13 veya üzeri ve npm. Node.js ve
npmyüklü olup olmadığınızı denetlemek ve yüklü sürümleri denetlemek için venode -vkomutları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 venpmnpm'yi yükleyin.node -v npm -vCDKTF 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
pipenvyüklü olup olmadığınızı denetlemek ve yüklü sürümleri denetlemek için vepython --versionkomutlarınıpipenv --versionçalıştırın. Python'ı yükleyin ve henüz yüklü değilse pipenv yükleyin.python --version pipenv --versionKullanmak 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-demoWindows
md cdktf-demo cd cdktf-demoAşağıdaki komutu çalıştırarak bir CDKTF projesi oluşturun:
cdktf init --template=python --localProje Adı istendiğinde, Enter tuşuna basarak varsayılan proje adını
cdktf-demokabul 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. -
PipfilevePipfile.lockcdktf 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
pipenvAzure 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-databricksDosyanın içeriğini
main.pyaş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.pyadlımain.pybir 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 synthkomutunu çalıştırın.cdktf synthDeğişiklik yapmadan önce bekleyen kaynak değişikliklerini gözden geçirebilirsiniz. Aşağıdakileri çalıştırın:
cdktf diffkomutunu çalıştırarak not defterini ve işi dağıtın
cdktf deploy.cdktf deployOnaylamanı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 çıkışında görüntülenen
cdk deploybağ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 çıkışında görüntülenen
cdk deploybağ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ır ve ardından değiştirilen not defterini yeniden çalıştırmak için işlemi kullanırsınız.
Not defterinde değişiklik yapmak istemiyorsanız, 6. Adım: Temizleme'ye atlayın.
main.pydosyasında, değişken bildirimininotebookaş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 synthDeğişiklik yapmadan önce bekleyen kaynak değişikliklerini gözden geçirebilirsiniz. Aşağıdakileri çalıştırın:
cdktf diffkomutunu çalıştırarak not defteri değişikliklerini dağıtın
cdktf deploy.cdktf deployOnaylamanı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 deployadres ç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 çıkışında görüntülenen
cdk deploybağ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 destroykaynakları çalışma alanınızdan kaldırın:cdktf destroyOnaylamanı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. Aşağıdaki test_main.py adlı örnek dosya, bu makalenin önceki main.py dosyasındaki CDKTF kodunu test eder. İ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