Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica es Experimental.
Databricks Asset Bundles se creó originalmente sobre el proveedor de Terraform de Databricks para administrar las implementaciones. Sin embargo, en un esfuerzo por alejarse de esta dependencia, la VERSIÓN 0.279.0 de la CLI de Databricks y versiones posteriores admite dos motores de implementación diferentes: terraform y direct. El motor de implementación directa no depende de Terraform y pronto se convertirá en el valor predeterminado. El motor de implementación de Terraform será obsoleto eventualmente.
¿Cuáles son las ventajas de la implementación directa?
El nuevo motor de implementación directa usa el SDK de Databricks Go y proporciona las siguientes ventajas:
- No es necesario descargar Terraform y
terraform-provider-databricksantes de la implementación - Evita problemas con firewalls, servidores proxy y registros de proveedor personalizados.
- Diferencias detalladas de los cambios disponibles mediante
bundle plan -o json - Implementación más rápida
- Tiempo reducido para liberar nuevos recursos del conjunto, ya que no hay necesidad de alinearse con la versión del proveedor de Terraform.
¿Cómo empiezo a usar la implementación directa?
Para empezar a usar el nuevo motor de implementación directa:
- En el caso de los conjuntos existentes, migrelos mediante
databricks bundle deployment migrate. - En el caso de los nuevos paquetes, impleméntelos con la
DATABRICKS_BUNDLE_ENGINEvariable de entorno establecida adirect.
Migración de una agrupación existente
El motor de implementación directa usa su propio archivo de estado JSON. El esquema es diferente del archivo de estado JSON de Terraform. El comando bundle deployment migrate convierte el archivo de estado Terrform (terraform.tfstate) en el archivo de estado de implementación directa (resources.json). El comando lee los identificadores de la implementación existente.
Realice una implementación completa con Terraform:
databricks bundle deploy -t my_targetMigración de la implementación:
databricks bundle deployment migrate -t my_targetCompruebe que la migración se realizó correctamente. El
databricks bundle plancomando debe realizarse correctamente y no debería mostrar ningún cambio.databricks bundle plan -t my_targetSi se produjo un error en la comprobación, quite el nuevo archivo de estado:
rm .databricks/bundle/my_target/resources.jsonSi la comprobación se realizó correctamente, implemente la agrupación para sincronizar el archivo de estado con el área de trabajo:
databricks bundle deploy -t my_target
Despliegue directo de un nuevo paquete
El bundle migrate comando no funciona en agrupaciones que nunca se han implementado porque no hay ningún archivo de estado. En su lugar, establezca la variable de DATABRICKS_BUNDLE_ENGINE entorno e implemente:
DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
¿Cuáles son los cambios en el motor de implementación directa?
El nuevo motor de implementación directa se comporta principalmente igual que el motor de implementación terrform, pero hay algunas diferencias.
Cálculo de diferencias de estado de recursos
A diferencia de Terraform que mantiene un único estado de recurso (una combinación de configuración local y estado remoto), el nuevo motor mantiene estas configuraciones locales independientes y solo registra la configuración local en su archivo de estado.
El cálculo de diferencias de estado de recursos se realiza en dos pasos:
- La configuración del paquete local se compara con la configuración de instantánea usada para la implementación más reciente. El estado remoto no desempeña ningún rol.
- El estado remoto se compara con la configuración de la imagen instantánea usada para la implementación más reciente.
El resultado es que:
-
databricks.ymllos cambios de recursos nunca se omiten y siempre desencadenarán una actualización. - Los campos de recursos no administrados por la implementación no desencadenan un error de resultado incoherente. El motor directo despliega con éxito estos recursos, pero esto puede derivar en una desviación. Los recursos implementados se actualizan durante el siguiente plan o implementación.
búsqueda de sustitución de $resources
El uso más común de $resources es resolver identificadores de sustitución (por ejemplo, $resources.jobs.my_job.id) que se comportan igual entre Terraform y los motores de implementación directa.
Sin embargo, la resolución de la $resources sustitución en el motor de implementación directa (por ejemplo, $resources.pipelines.my_pipeline.name) se realiza en dos pasos:
- Las referencias que apuntan a campos que están presentes en la configuración local se resuelven en el valor proporcionado en la configuración local.
- Las referencias que no están presentes en la configuración local se resuelven desde el estado remoto. Este es el estado capturado mediante la solicitud adecuada
GETpara un recurso determinado.
El esquema que se usa para la $resource resolución está disponible en el archivo out.fields.txt. Los campos marcados como ALL y STATE se pueden usar para la resolución local. Los campos marcados como ALL o REMOTE se pueden usar para la resolución remota.