다음을 통해 공유


직접 배포 엔진으로 마이그레이션

중요합니다

이 기능은 실험적 기능입니다.

Databricks Asset Bundles는 원래 배포를 관리하기 위해 Databricks Terraform 공급자를 기반으로 빌드되었습니다. 그러나 이 종속성에서 벗어나기 위해 Databricks CLI 버전 0.279.0 이상은 terraformdirect의 두 가지 배포 엔진을 지원합니다. 직접 배포 엔진은 Terraform에 의존하지 않으며 곧 기본값이 됩니다. Terraform 배포 엔진은 결국 더 이상 사용되지 않습니다.

직접 배포의 장점은 무엇인가요?

새 직접 배포 엔진은 Databricks Go SDK를 사용하며 다음과 같은 이점을 제공합니다.

  • Terraform 및 terraform-provider-databricks 배포 전에 다운로드할 필요가 없습니다.
  • 방화벽, 프록시 및 사용자 지정 공급자 레지스트리와 관련된 문제를 방지합니다.
  • 사용 bundle plan -o json하여 변경 내용의 자세한 차이를 확인할 수 있습니다.
  • 더 빠른 배포
  • Terraform 공급자 릴리스에 맞출 필요가 없으므로 새 번들 리소스를 릴리스하는 데 걸리는 시간이 단축되었습니다.

직접 배포를 사용하려면 어떻게 해야 하나요?

새 직접 배포 엔진 사용을 시작하려면 다음을 수행합니다.

  • 기존 번들을 databricks bundle deployment migrate을 사용하여 마이그레이션하십시오.
  • 새 번들을 배포할 때는 DATABRICKS_BUNDLE_ENGINE 환경 변수를 direct로 설정하십시오.

기존 번들 마이그레이션

직접 배포 엔진은 자체 JSON 상태 파일을 사용합니다. 스키마는 Terraform JSON 상태 파일과 다릅니다. 번들 배포 마이그레이션 명령은 Terrform 상태 파일(terraform.tfstate)을 직접 배포 상태 파일(resources.json)로 변환합니다. 이 명령은 기존 배포에서 ID를 읽습니다.

  1. Terraform을 사용하여 전체 배포를 수행합니다.

    databricks bundle deploy -t my_target
    
  2. 배포를 마이그레이션하십시오.

    databricks bundle deployment migrate -t my_target
    
  3. 마이그레이션에 성공했는지 확인합니다. databricks bundle plan 명령은 성공해야 하며 변경 내용을 표시하지 않아야 합니다.

    databricks bundle plan -t my_target
    
    • 확인에 실패한 경우 새 상태 파일을 제거합니다.

      rm .databricks/bundle/my_target/resources.json
      
    • 확인에 성공하면 번들을 배포하여 상태 파일을 작업 영역에 동기화합니다.

      databricks bundle deploy -t my_target
      

새 번들 직접 배포

bundle migrate 이 명령은 상태 파일이 없기 때문에 배포되지 않은 번들에서 작동하지 않습니다. 대신 DATABRICKS_BUNDLE_ENGINE 환경 변수를 설정하고 배포합니다.

DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target

직접 배포 엔진의 변경 내용은 무엇인가요?

새 직접 배포 엔진은 대부분 Terrform 배포 엔진과 동일하게 작동하지만 몇 가지 차이점이 있습니다.

리소스 상태 차이 계산

단일 리소스 상태(로컬 구성 및 원격 상태의 혼합)를 유지하는 Terraform과 달리 새 엔진은 이러한 개별 상태를 유지하고 로컬 구성만 해당 상태 파일에 기록합니다.

리소스 상태 차이 계산은 다음 두 단계로 수행됩니다.

  1. 로컬 번들 구성은 최신 배포에 사용되는 스냅샷 구성과 비교됩니다. 원격 상태는 아무 역할도 하지 않습니다.
  2. 원격 상태는 가장 최근 배포에 사용되는 스냅샷 구성과 비교됩니다.

결과는 다음과 같습니다.

  • databricks.yml 리소스 변경 내용은 무시되지 않으며 항상 업데이트를 트리거합니다.
  • 구현에서 처리되지 않는 리소스 필드는 일관되지 않은 결과 오류를 트리거하지 않습니다. 이러한 리소스는 직접 엔진에 의해 성공적으로 배포되지만 이로 인해 드리프트가 발생할 수 있습니다. 배포된 리소스는 다음 계획 또는 배포 중에 업데이트됩니다.

$resources 리소스 할당 검색

가장 일반적인 $resources의 용도는 Terraform과 직접 디플로이먼트 엔진 간에 동일하게 동작하는 대체 ID(예: $resources.jobs.my_job.id)를 해결하는 것입니다.

그러나 직접 배포 엔진에서 대체 해결 $resources는 두 단계로 이루어집니다. 예를 들어 $resources.pipelines.my_pipeline.name:

  1. 로컬 구성에 있는 필드를 가리키는 참조는 로컬 구성에 제공된 값으로 확인됩니다.
  2. 로컬 구성에 없는 참조는 원격 상태에서 확인됩니다. 지정된 리소스에 대한 적절한 GET 요청을 사용하여 페치된 상태입니다.

해결에 $resource 사용되는 스키마는 파일 out.fields.txt에서 사용할 수 있습니다. 로컬 해상도로 ALL 표시되고 STATE 사용할 수 있는 필드입니다. 원격 해상도로 사용할 수 있는 필드는 ALL 또는 REMOTE로 표시됩니다.