Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Este recurso é Experimental.
O Databricks Asset Bundles foi originalmente construído sobre o fornecedor Databricks Terraform para gerir implementações. No entanto, numa tentativa de se afastar desta dependência, a versão 0.279.0 e superior do Databricks CLI suporta dois motores de implementação diferentes: terraform e direct. O motor de implementação direta não depende do Terraform e em breve tornar-se-á o padrão. O motor de implementação do Terraform será eventualmente obsoleto.
Quais são as vantagens do destacamento direto?
O novo motor de implementação direta utiliza o SDK Databricks Go e oferece os seguintes benefícios:
- Não é obrigatório descarregar o Terraform e
terraform-provider-databricksantes da implementação. - Evita problemas com firewalls, proxies e registos personalizados de fornecedores
- Diferenciais detalhadas das alterações disponíveis usando
bundle plan -o json - Implantação mais rápida
- Redução do tempo para lançar novos recursos do conjunto, pois não é necessário alinhar com a versão do provedor Terraform.
Como começo a usar a implementação direta?
Para começar a usar o novo motor de implementação direta:
- Para bundles existentes, migre-os usando
databricks bundle deployment migrate. - Para novos bundles, implemente-os com a
DATABRICKS_BUNDLE_ENGINEvariável de ambiente definida paradirect.
Migrar um pacote existente
O motor de implementação direta utiliza o seu próprio ficheiro de estado JSON. O esquema é diferente do ficheiro de estado JSON do Terraform. O comando de migração de bundle deployment converte o ficheiro de estado Terraform (terraform.tfstate) no ficheiro de estado de implementação direta (resources.json). O comando lê IDs da implementação existente.
Realize uma implementação completa com o Terraform:
databricks bundle deploy -t my_targetMigrar a implementação:
databricks bundle deployment migrate -t my_targetVerifique se a migração foi bem-sucedida. O
databricks bundle plancomando deve ter sucesso e não deve mostrar alterações.databricks bundle plan -t my_targetSe a verificação falhou, remova o novo ficheiro de estado:
rm .databricks/bundle/my_target/resources.jsonSe a verificação for bem-sucedida, implemente o bundle para sincronizar o ficheiro de estado com o workspace:
databricks bundle deploy -t my_target
Implantar diretamente um novo pacote
O bundle migrate comando não funciona em bundles que nunca foram implementados porque não existe ficheiro de estado. Em vez disso, defina a DATABRICKS_BUNDLE_ENGINE variável de ambiente e implemente:
DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
Quais são as alterações no motor de implementação direta?
O novo motor de implantação direta comporta-se maioritariamente da mesma forma que o motor de implantação Terrform, mas existem algumas diferenças.
Cálculo da diferença de estado dos recursos
Ao contrário do Terraform, que mantém um único estado de recurso (uma mistura de configuração local e estado remoto), o novo motor mantém estes estados separados e regista apenas a configuração local no seu ficheiro de estado.
O cálculo da diferença de estado dos recursos é feito em dois passos:
- A configuração local do bundle é comparada com a configuração snapshot usada na implementação mais recente. O estado remoto não tem qualquer papel.
- O estado remoto é comparado com a configuração snapshot usada na implementação mais recente.
O resultado é que:
-
databricks.ymlAs alterações de recursos nunca são ignoradas e vão sempre desencadear uma atualização. - Campos de recurso não tratados pela implementação não desencadeiam um erro de resultado inconsistente. Estes recursos são implementados com sucesso pelo motor direto, mas isso pode resultar numa deriva. Os recursos destacados são atualizados durante o próximo plano ou implementação.
$resources consulta de substituição
O uso mais comum de $resources é resolver IDs de substituição (por exemplo, $resources.jobs.my_job.id), que se comportam de forma idêntica entre o Terraform e os motores de implementação direta.
No entanto, a resolução da $resources substituição no motor de implementação direta (por exemplo, $resources.pipelines.my_pipeline.name) é realizada em dois passos:
- As referências que apontam para campos presentes na configuração local são resolvidas para o valor fornecido na configuração local.
- Referências que não estão presentes na configuração local são resolvidas a partir do estado remoto. Este é o estado obtido usando o pedido apropriado
GETpara um dado recurso.
O esquema utilizado para $resource resolução está disponível no ficheiro out.fields.txt. Os campos marcados como ALL e STATE podem ser usados para resolução local. Os campos marcados como ALL ou REMOTE podem ser usados para resolução remota.