Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Эта функция является экспериментальной.
Пакет ресурсов Databricks изначально был создан на основе поставщика Databricks Terraform для управления развертываниями. Однако в попытке уйти от этой зависимости Databricks CLI версии 0.279.0 и более поздней поддерживает два разных ядра развертывания: terraform и direct. Подсистема прямого развертывания не зависит от Terraform и скоро станет стандартной. Модуль развертывания Terraform в конечном итоге будет устаревать.
Каковы преимущества прямого развертывания?
Новый модуль прямого развертывания использует пакет SDK Databricks Go и предоставляет следующие преимущества:
- Нет необходимости скачать Terraform и
terraform-provider-databricksперед развертыванием - Избегает проблем с брандмауэрами, прокси-серверами и пользовательскими реестрами поставщиков
- Подробные изменения в виде diff доступны с помощью
bundle plan -o json - Быстрое развертывание
- Сокращение времени выпуска новых ресурсов пакета, так как нет необходимости проводить синхронизацию с выпуском поставщика Terraform.
Как начать использовать прямое развертывание?
Чтобы начать работу с новым механизмом прямого развертывания, выполните следующие действия.
- Для существующих пакетов переносите их с помощью
databricks bundle deployment migrate. - Для новых пакетов разверните их с помощью переменной среды
DATABRICKS_BUNDLE_ENGINE, установленной вdirect.
Перенос существующего пакета
В подсистеме прямого развертывания используется собственный файл состояния JSON. Схема отличается от файла состояния Terraform JSON.
Команда миграции развертывания пакета преобразует файл состояния Terrform (terraform.tfstate) в файл состояния прямого развертывания (resources.json). Команда читает идентификаторы из существующего развертывания.
Выполните полное развертывание с помощью Terraform:
databricks bundle deploy -t my_targetПеренесите развертывание.
databricks bundle deployment migrate -t my_targetУбедитесь, что миграция выполнена успешно. Команда
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, который поддерживает одно состояние ресурса (сочетание локальной конфигурации и удаленного состояния), новый модуль сохраняет эти отдельные и записывает только локальную конфигурацию в файле состояния.
Вычисление диффа состояния ресурсов выполняется двумя шагами.
- Конфигурация локального пакета сравнивается с конфигурацией моментального снимка, используемой для последнего развертывания. Удаленное состояние не играет никакой роли.
- Удаленное состояние сравнивается с конфигурацией снимка состояния, используемой для последнего развертывания.
Результатом является то, что:
-
databricks.ymlИзменения ресурсов никогда не игнорируются и всегда активируют обновление. - Поля ресурсов, не обрабатываемые реализацией, не вызывают несогласованную ошибку результата. Эти ресурсы успешно развертываются посредством прямого механизма управления, но это может привести к расхождению. Развернутые ресурсы обновляются во время следующего плана или развертывания.
Подстановка и поиск $resources
$resources наиболее часто используется для разрешения идентификаторов подстановки (например, $resources.jobs.my_job.id), что ведет себя одинаково между механизмами Terraform и прямыми механизмами развертывания.
Однако разрешение подстановки $resources в подсистеме прямого развертывания (например, $resources.pipelines.my_pipeline.name) выполняется двумя шагами.
- Ссылки на поля, присутствующие в локальной конфигурации, разрешаются до значений, указанных в локальной конфигурации.
- Ссылки, которые отсутствуют в локальной конфигурации, определяются на основе удаленного состояния. Это состояние, извлекаемое с помощью соответствующего
GETзапроса для данного ресурса.
Схема, используемая для $resource разрешения, доступна в файле out.fields.txt. Поля, помеченные как ALL и STATE могут использоваться для локального разрешения. Поля, помеченные как ALL или REMOTE могут использоваться для удаленного разрешения.