Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[infra] Configurar o basedosdados a partir de variáveis de ambiente #557

Conversation

gabriel-milan
Copy link
Member

Duplicata de #537

Sua solicitação de recurso está relacionada a um problema? Por favor, descreva.

Em certos ambientes, como jobs lançadas pelo K8sRunLauncher do Dagster, não é possível (até o momento) montar volumes nos containers e nem é viável acessá-los para realizar a configuração do basedosdados. No entanto, ainda é possível configurar variáveis de ambiente, o que poderia permitir a configuração do basedosdados.

Descreva a solução que você gostaria

A implementação aqui submetida parte de uma configuração já realizada do basedosdados em uma máquina qualquer. Sendo assim, para gerar as variáveis de ambiente para os containers pode-se fazer:

export BASEDOSDADOS_CONFIG=$(cat ~/.basedosdados/config.toml | base64)
export BASEDOSDADOS_CREDENTIALS_PROD=$(cat ~/.basedosdados/credentials/prod.json | base64)
export BASEDOSDADOS_CREDENTIALS_STAGING=$(cat ~/.basedosdados/credentials/staging.json | base64)

Dessa forma, pode-se armazenar o valor dessas três variáveis de ambiente, codificados em base64 para maior compatibilidade, replicando-as em quantos containers forem necessários.

Para a implementação no python package, é realizada uma verificação da coexistência das três envs. Caso todas existam, tenta-se gerar os arquivos originais em $HOME/.basedosdados correspondentes a cada uma delas.

Descreva alternativas que você considerou

Foi considerado solicitar também a alteração aos desenvolvedores do Dagster, de forma a permitir volumes nesses containers. No entanto, como esse problema já foi constatado em março (dagster-io/dagster#3871) e até o momento não houve implementação, acredita-se que pode demorar.

@vncsna
Copy link
Contributor

vncsna commented Jul 10, 2021

@gabriel-milan tudo bem? Você estaria disponível para participar da reunião da infra no discord às 19h de segunda-feira? Ou conversar sobre o código em algum horário no período noturno? Tenho algumas dúvidas sobre o mesmo

@gabriel-milan
Copy link
Member Author

gabriel-milan commented Jul 11, 2021

@vncsna boa noite. Claro, posso sim! Se puder me fornecer, por gentileza, o link para o canal, estarei lá!

@vncsna
Copy link
Contributor

vncsna commented Jul 11, 2021

@gabriel-milan segue o link do discord

# Decorator for making immutable attributes on classes


def const(cls):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fix: d6c0290

@vmussa
Copy link
Collaborator

vmussa commented Jul 15, 2021

@gabriel-milan fiz algumas poucas alterações estilísticas (6f0a4a2) tendo em vista tanto à adequação à PEP-8 quanto ao padrão do basedosdados. Se puder, veja o que acha pfv. Peço a você e ao @JoaoCarabetta para verificarem também se a brevíssima documentação (9131c2a) que eu fiz a partir do seu PR basta para outros usuários.

Sobre o diretório em que se encontra o constants.py, ao lado do __init__.py, será que é o ideal/padrão mesmo? Ou será que o colocamos em outro lugar?

Copy link
Collaborator

@vmussa vmussa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Testado localmente e funcionando como esperado.

@JoaoCarabetta JoaoCarabetta merged commit 2f06535 into basedosdados:python-next-patch Jul 19, 2021
JoaoCarabetta added a commit that referenced this pull request Jul 19, 2021
* add table_exists, implement it on table.append

* change order in table.append

* fix default query and path mess (#561)

* add path in folder function

* [dados-revisão] br_seeg_emissoes (#541)

* sobe revisao

* revisao

* dados estão certos no BQ

* [dados-revisão] br_mc_auxilio_emergencial (#553)

* revisao auxilio

* revisao 2

* [dados-bot] br_ms_vacinacao_covid19 (2021-07-07) (#562)

Co-authored-by: terminal_name <github_email>

* [dados-bot] br_ms_vacinacao_covid19 (2021-07-08) (#569)

Co-authored-by: terminal_name <github_email>

* [dados] br_tse_eleicoes & br_tse_filiacao_partidaria (#544)

* Atualiza tudo de eleições e filiação partidária.

* Conserta detalhes_votacao_municipio.

* Conserta probleminhas variados.

* [dados-revisão] br_mapbiomas_estatisticas (#540)

* sobe revisao

* revisao

* revisao

* conserta primary keys

* revisao

* [dados-revisão] br_inep_ideb (#533)

* sobe revisao

* Conserta `organization_id`.

* revisao 2

* revisao 3

* conserta primary keys

* revisao

Co-authored-by: Ricardo Dahis <[email protected]>

* [infra] fix new column name (#571)

* [dados-bot] br_ms_vacinacao_covid19 (2021-07-09) (#572)

Co-authored-by: terminal_name <github_email>

* [dados] br_tse_eleicoes: Conserta tabelas com renomeação nos publish.sql. (#573)

* [dados-revisão] br_mc_indicadores (#575)

* [dados-revisão] br_ms_sim (#577)

* [dados-revisão] br_me_socios (#576)

* [docs] update contribution guidelines

* Update br_novos_dados.md

* Conserta problemas no Ideb. (#581)

* [dados-revisão] br_sp_seduc_inse (#586)

* [dados-revisão] br_sp_seduc_idesp (#585)

* [dados-bot] br_ms_vacinacao_covid19_microdados (2021-07-12) (#579)

Co-authored-by: terminal_name <github_email>

* [dados-bot] br_ms_vacinacao_covid19 (2021-07-14) (#588)

Co-authored-by: terminal_name <github_email>

* [infra] Melhora output das funções list_* e get_* na API do Python (#568)

* Add output_type parameter to list_datasets

* Add output_type parameter to list_dataset_tables

* Add private function to handle list outputs

* Add verbose argument to list_dataset and list_dataset_tables

* Bring back _handle_output, improve verbose docs and tests

* Improve get_* functions output

* Fix test_get_table_size_verbose_false

Co-authored-by: d116626 <[email protected]>

* feat: rascunho do relatorio de coverage

* fix: manter somente o coveralls

* fix: testar debug

* fix: executar testes

* trigger ci

* modulariza a action e exclui a flag de debug

* adiciona a badge ao readme

* extrair setup pro yml principal

* restaurar triggers originais

* restaurar nome original da ci

* Add docstrings to , fix small issues

* [infra] Configurar o basedosdados a partir de variáveis de ambiente (#557)

* add code for acquiring config from envs

* minor fix

* fix json to toml

* change from `const` decorator to python Enum

* Improve code style

* Document environment variables configuration mode

Co-authored-by: Vitor Mussa <[email protected]>

* Update table.py

* Update test_table.py

Co-authored-by: hellcassius <[email protected]>
Co-authored-by: Diego Oliveira <[email protected]>
Co-authored-by: Hevilyn Souza <[email protected]>
Co-authored-by: Matheus Valentim <[email protected]>
Co-authored-by: Ricardo Dahis <[email protected]>
Co-authored-by: Fernanda Scovino <[email protected]>
Co-authored-by: Vítor Mussa <[email protected]>
Co-authored-by: Vinicius <[email protected]>
Co-authored-by: Gabriel Gazola Milan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants