Modos de implantação de pacotes de automação declarativa
Este artigo descreve a sintaxe para os modos de implantação de Pacotes de Automação Declarativa. Os pacotes permitem o gerenciamento programático do fluxo de trabalho Databricks . Veja O que são pacotes de automação declarativa?
No fluxo de trabalho CI/CD , os desenvolvedores normalmente codificam, testam, implantam e executam soluções em várias fases ou modos . Por exemplo, o conjunto mais simples de modos inclui um modo de desenvolvimento para validação pré-produção, seguido por um modo de produção para entregas validadas. O Declarative Automation Bundles fornece uma coleção opcional de comportamentos default que correspondem a cada um desses modos. Para usar esses comportamentos para um alvo específico, defina um mode ou configure presets para um alvo no mapeamento de configuração targets . Para obter informações sobre targets, consulte mapeamento de alvos de configuração de pacote configurável.
Modo de desenvolvimento
Para implantar o pacote no modo de desenvolvimento, o senhor deve primeiro adicionar o mapeamento mode, definido como development, ao destino pretendido. Por exemplo, esse alvo chamado dev é tratado como um alvo de desenvolvimento:
targets:
dev:
mode: development
A implantação de um alvo no modo de desenvolvimento por meio da execução do comando databricks bundle deploy -t <target-name> implementa os seguintes comportamentos, que podem ser personalizados com o uso de predefinições:
- Prefixa todos os recursos que não são implantados como arquivos ou Notebook com o prefixo
[dev ${workspace.current_user.short_name}]e marca cada Job implantado e pipeline com uma tagdevDatabricks. - Marca todos os pipelines LakeFlow Spark Declarative implantados relacionados como
development: true. - Habilita o uso do
--cluster-id <cluster-id>em chamadas relacionadas ao comandobundle deploy, que substitui toda e qualquer definição de cluster existente que já esteja especificada no arquivo de configuração do pacote relacionado. Em vez de usar--cluster-id <cluster-id>em chamadas relacionadas ao comandobundle deploy, o senhor pode definir o mapeamentocluster_idaqui, ou como um mapeamento filho do mapeamentobundle, para o ID do clustering a ser usado. - pausa todos os programas e aciona os recursos implantados, como monitores de trabalho ou de qualidade. Para desativar a programação e os acionadores de um trabalho individual, defina
schedule.pause_statuscomoUNPAUSED. - Permite a execução concorrente em todos os trabalhos implantados para uma iteração mais rápida. Para desativar a execução concorrente de um trabalho individual, defina
max_concurrent_runscomo1. - Desativa o bloqueio de implantação para uma iteração mais rápida. Esse bloqueio evita conflitos de implantação que provavelmente não ocorrerão no modo de desenvolvimento. Reative o bloqueio definindo
bundle.deployment.lock.enabledparatrue.
Modo de produção
Para implantar o pacote no modo de produção, o senhor deve primeiro adicionar o mapeamento mode, definido como production, ao destino pretendido. Por exemplo, esse alvo chamado prod é tratado como um alvo de produção:
targets:
prod:
mode: production
A implantação de um alvo no modo de produção por meio da execução do comando databricks bundle deploy -t <target-name> implementa os seguintes comportamentos:
-
Valida se todos os pipelines LakeFlow Spark Declarative implantados relacionados estão marcados como
development: false. -
Valida se o ramo atual do Git é igual ao ramo do Git especificado no destino. A especificação de uma ramificação do Git no destino é opcional e pode ser feita com uma propriedade adicional
gitda seguinte forma:YAMLgit:
branch: mainEssa validação pode ser substituída pela especificação de
--forceenquanto implantado. -
Databricks recomenda que você use entidade de serviço para implantações de produção. Você pode impor isso definindo
run_aspara uma entidade de serviço. Consulte entidade de serviço e Especifique uma identidade de execução para um fluxo de trabalho de Pacotes de Automação Declarativa. Caso não utilize entidade de serviço, observe os seguintes comportamentos adicionais:- Valida se os mapeamentos
artifact_path,file_path,root_pathoustate_pathnão são substituídos por um usuário específico. - Valida se os mapeamentos
run_asepermissionsestão especificados para esclarecer quais identidades têm permissões específicas para implantações.
- Valida se os mapeamentos
-
Diferentemente do comportamento anterior de configuração do mapeamento
modeparadevelopment, a configuração do mapeamentomodeparaproductionnão permite substituir nenhuma definição de agrupamento existente especificada no arquivo de configuração do pacote relacionado, por exemplo, usando a opção--compute-id <cluster-id>ou o mapeamentocompute_id.
Predefinições personalizadas
O Declarative Automation Bundles oferece suporte a predefinições configuráveis para destinos, o que permite personalizar os comportamentos desses destinos. Para obter informações sobre as configurações predefinidas disponíveis, consulte a referência de configuração.
A menos que uma exceção seja especificada para uma predefinição, se ambos mode e presets estiverem definidos, as predefinições substituem o comportamento do modo default e as configurações de recursos individuais substituem as predefinições. Por exemplo:
- Se o
max_concurrent_runspara um Job for 10, mas o presetjobs_max_concurrent_runsestiver definido como 20, o número máximo de execuções simultâneas do Job será 10. - Se um programar estiver definido como
UNPAUSED, mas a predefiniçãotrigger_pause_statusestiver definida comoPAUSED, o programar será despausado.
O exemplo a seguir mostra uma configuração de predefinições personalizadas para o alvo chamada dev:
targets:
dev:
presets:
name_prefix: 'testing_' # prefix all resource names with testing_
pipelines_development: true # set development to true for pipelines
trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
tags:
department: finance