CKAN no Docker: instalando o ambiente de desenvolvimento e iniciando a criação de um plugin

CKAN (Comprehensive Knowledge Archive Network) é uma aplicação web de código aberto para gerenciamento de dados. Tem como algumas das funcionalidade: armazenamento de dados, uso de metadados para catalogação e API para consumo dos dados publicados. Esse sistema é mantido pela Open Knowledge Foundation e possui uma comunidade de código aberto muito ativa, a qual disponibiliza uma quantidade importante de plugins úteis.

Atualmente é o principal sistema usado em portais de dados abertos governamentais, sendo alguns exemplos: Datos Argentina, Open Africa, Data Singapore e Portal Brasileiro de Dados Abertos.

Existem três caminhos para fazer a instalação do CKAN, via:

Nesse artigo focaremos na instalação do ambiente de desenvolvimento usando Docker. Caso você não vá desenvolver nenhum plugin, nem mexer no código fonte do CKAN, sugiro que você instale usando o tutorial Como instalar e configurar o CKAN 2.9.0 usando o Docker escrito por Augusto Herrmann. Faço essa sugestão porque a documentação oficial de instalação do CKAN via Docker não está das melhores.

No meu caso, estou desenvolvendo um plugin, então fazia falta algumas facilidades que um ambiente de desenvolvimento pode oferecer.

Tutorial

O CKAN possui um repositório que está sendo desenvolvido para conter a nova instalação do CKAN via Docker. O ambiente de desenvolvimento deste respositório é muito útil para visualizar em tempo de execução dos containers as modificações realizadas.

Esse tutorial abrange a instalação do CKAN e de todos os requisitos necessários para o uso do Docker.

A partir daqui todas as instruções pressupõe que você está usando o sistema operacional Ubuntu 20.04 ou mais recente.

Sumário

Instalando o Git

No terminal execute os seguintes comandos:

  • Instale o Git
    1
    
    sudo apt-get install git-all
    
  • Configure o nome e e-mail que identificarão teus commits. Isso só é necessário 1 vez
    1
    2
    
    git config --global user.name "<nome>"
    git config --global user.email "<e-mail>"
    

GitLab: configurando a chave SSH

Esse passo é opcional, ele será útil para você versionar o código do plugin que você irá desenvolver.

No terminal execute os seguintes comandos:

  • Gere uma par de chave SSH
    1
    
    ssh-keygen -t rsa -b 2048 -C "<comentário que identifique sua chave, ex.: pc-trabalho-dell"
    

Obs.: Nesse passo será solicitado um local para armazenamento da chave e uma senha. Não é necessário que você forneça essas informações. Caso você deseje guardar a chave no local padrão (recomendado) e não informar uma senha, basta deixar o espaço vazio e teclar “enter”.

  • Copie sua chave pública
    1
    
    xclip -sel clip < ~/.ssh/id_rsa.pub
    
  • Logue no seu GitLab e navegue até a página da Foto de perfil > Settings > SSH Keys
  • Na janela destinada a chave, tecle Ctrl + V ou clique no botão direito do mouse e selecione “colar”
  • Dê um título a sua chave. Sugiro que seja algo que identifique a qual computador ela está atrelada
  • Clique em “Adicionar nova chave”

Instalando o Docker

No terminal execute os seguintes comandos:

  • Atualize o comando apt-get
    1
    
    sudo apt-get update
    
  • Remova as versões antigas do Docker (execute, ainda que seu computador seja novo):
    1
    
    sudo apt-get remove docker-engine docker.io
    
  • Instale o Docker
    1
    
    sudo apt install docker.io
    
  • Inicie o Docker
    1
    
    sudo systemctl start docker
    
  • Verifique o status do docker
    1
    
    sudo systemctl status docker
    

    A saída esperada é: Active: active (running)

  • Configure a sua usuária do sistema operacional como a superusuária no Docker
    1
    
    sudo usermod -aG docker ${USER} 
    

    Caso você deseje inserir outra superusuária no Docker, além da que está logada, troque ${USER} pelo usuária.

  • Aplique a nova usuária no grupo de permissões
    1
    
    su - ${USER}
    
  • Por fim, verifique se a instalação foi feita com sucesso
    1
    2
    
    docker --version
    docker run hello-world
    

Instalando o Docker Compose

  • No terminal, execute o seguinte comando
    1
    
    sudo apt install docker-compose
    

Instalando o CKAN (ambiente de desenvolvimento)

No terminal, navegue até a pasta desejada para armazenar o repositório e execute os seguintes comandos:

  • Clone o repositório
    1
    
    git clone https://github.com/okfn/docker-ckan
    
  • Entre na pasta do repositório
    1
    
    cd ckan-docker/
    

Abra o editor de código da sua preferência e realize as próximas etapas:

  • Duplique o arquivo “.env.example” e renomeie a cópia para “.env”
  • No arquivo “.env” , atualize as seguintes variáveis de ambiente:
    1
    2
    3
    
    CKAN_SITE_URL=http://localhost:5000
    CKAN__DATAPUSHER__CALLBACK_URL_BASE=http://localhost:5000
    DATAPUSHER_REWRITE_URL=http://localhost:5000  
    

Volte para o terminal e execute:

  • Construa as imagens com o ambiente de desenvolvimento (você só precisa realizar isso uma vez)
    1
    
    docker-compose -f docker-compose.dev.yml build
    

Nesse passo há o seguinte erro conhecido:

OpenSSL SSL_connect: Connection reset by peer in connection to github.com:443

Caso ele ocorra, atualize seus gerenciadores de pacotes do Ubuntu executando:

1
sudo apt-get update && sudo apt-get upgrade
  • Inicie as imagens (esse comando você usará sempre que precisar iniciar seu trabalho no CKAN)
    1
    
    docker-compose -f docker-compose.dev.yml up
    
  • Comprove que o CKAN está rodando no seu computador. Acesse: http://localhost:5000

  • Nesse ambiente já existe uma usuária master. Faça login usando as credenciais: login: ckan_admin senha: test1234

Plugin

Nesse capítulo mostrarei como testar um plugin já existente e como iniciar o seu próprio plugin.

Testando plugin existente

Nessa imagem você pode testar plugins sem precisar exatamente instalá-los, basta seguir os passos:

  • No terminal, navegue até a pasta “src/” e clone o repositório:
    1
    
    git clone <link do repositório que deseja testar>
    

    ** Caso você deseje fazer modificações nele e não seja mantenedora do plugin, é necessário que você crie um fork e clone a partir dele.

  • Crie sua branch para salvar suas modificações, caso deseje fazê-las:
    1
    
    git checkout -b <seu-nome-branch>
    

Abra o editor de código da sua preferência e realize as próximas etapas para ativar o plugin:

  • No arquivo “.env”, atualize as seguintes variáveis de ambiente:
    1
    2
    3
    4
    
    CKAN_SITE_URL=http://localhost:5000
    CKAN__DATAPUSHER__CALLBACK_URL_BASE=http://localhost:5000
    DATAPUSHER_REWRITE_URL=http://localhost:5000
    CKAN__PLUGINS=envvars image_view text_view recline_view datastore datapusher <titulo-sua-extensao>
    
  • Comprove se a sua aplicação está ativada. Acesse: http://localhost:5000/api/action/status_show. Nesse link deve aparecer, entre outras informações, a lista dos plugins ativos.

Iniciando a criação de um plugin

No terminal execute os seguintes comandos:

  • Crie um plugin
    1
    
    docker-compose -f docker-compose.dev.yml exec ckan-dev /bin/bash -c "ckan generate extension --output-dir /srv/app/src_extensions"
    

    Será solicitado o título para a extensão, seu nome, nome da sua instituição e e-mail. No título para a extensão, use “_” no lugar de espaço em branco.

    Após fornecer esses dados, será criada uma pasta com os arquivos iniciais da sua extensão. Ela estará localizada em: src/ckanext-<titulo-sua-extensao>

    Para que você tenha permissão para editar essa pasta e, assim, desenvolver o seu plugin, é necessário editar sua permissão. Para isso, execute:

    1
    2
    
    sudo chown -R ${USER} <caminho completo para a pasta /src/ckanext-<título-plugin>
    sudo chmod -R u+rwx <caminho completo para a pasta /src/ckanext-<título-plugin>
    

Abra o editor de código da sua preferência e realize as próximas etapas para ativar o plugin:

  • No arquivo “.env”, atualize as seguintes variáveis de ambiente:
    1
    2
    3
    4
    
    CKAN_SITE_URL=http://localhost:5000
    CKAN__DATAPUSHER__CALLBACK_URL_BASE=http://localhost:5000
    DATAPUSHER_REWRITE_URL=http://localhost:5000
    CKAN__PLUGINS=envvars image_view text_view recline_view datastore datapusher <titulo-sua-extensao>
    
  • Comprove se a sua aplicação está ativada. Acesse: http://localhost:5000/api/action/status_show. Nesse link deve aparecer, entre outras informações, a lista dos plugins ativos.
  • (Etapa opcional) Crie um repositório git para guardar o seu código e, no terminal, execute:
    1
    2
    3
    4
    
    git init
    git remote add origin <link do repositório>
    git checkout -b main
    git pull
    

Referências

Esse artigo foi escrito em parceria com Lucas Gois. Atualizado em: 01 set. 2022

Ana Cecília Vieira Analista de dados especializada em qualidade de dados. Entusiasta em dados abertos, código aberto e comunidades autogestinadas como instrumento para transformação social. Embaixadora do programa 'Ciência de Dados para Inovação Cívica' da Open Knowledge Brasil e podcaster no Pizza de Dados.

-----

Leia também: