ID-DEB-005 - Configuração Do Clipping Diário Do Ro-DOU

ID: KB-ID-DEB-005

Responsável: Thiago Amaral, TI

Status: Publicado

Última Atualização: 19/09/2025


Propósito

Orientar o time de Suporte TI Nível 1 na instalação das dependências, configuração inicial e automação de rotinas do projeto Ro-dou para monitoramento e clipping do Diário Oficial da União (D.O.U).

Aplica-se a

  • Time de Suporte TI Nível 1 da Fictor.

  • Servidores Linux (Debian 11 ou NixOS) designados para hospedar o projeto.

Pré-requisitos

  • Acesso com privilégios sudo ou root a um servidor Linux.

  • Acesso de administrador ao portal Azure para configurar Serviços de Comunicação, Microsoft Entra ID e regras de firewall (NSG).

  • Git instalado no servidor para clonar o repositório do projeto.


Instruções

O processo é dividido em quatro partes: preparação do ambiente, configuração do serviço de e-mail no Azure, integração do SMTP com o projeto e, por fim, a configuração das rotinas de pesquisa.

Parte 1: Preparação do Ambiente no Servidor

1. Instalar Pacotes Necessários

Escolha o procedimento correspondente ao sistema operacional do seu servidor.

  • Para Debian 11:

    # Instalar dependências básicas
    sudo apt-get update
    sudo apt-get install make python3 python3-pip ca-certificates curl -y
    
    # Adicionar o repositório oficial do Docker
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL [https://download.docker.com/linux/debian/gpg](https://download.docker.com/linux/debian/gpg) -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] [https://download.docker.com/linux/debian](https://download.docker.com/linux/debian) $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # Instalar Docker e Docker Compose
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
    
    # Instalar Apache Airflow via pip
    pip install 'apache-airflow==2.10.3' --constraint "[https://raw.githubusercontent.com/apache/airflow/constraints-2.10.3/constraints-3.9.txt](https://raw.githubusercontent.com/apache/airflow/constraints-2.10.3/constraints-3.9.txt)"
  • Para NixOS: Adicione o seguinte ao seu arquivo configuration.nix:

    environment.systemPackages = with pkgs; [
      docker
      docker-compose
      apache-airflow
      make
    ];
    
    virtualisation.docker.enable = true;
    # Permite pacotes "unfree" se necessário para algum componente
    nixpkgs.config.allowUnfree = true;

```

2. Clonar e Iniciar o Projeto

  1. Clone o repositório do projeto para a pasta do usuário que irá gerenciá-lo:

    git clone [https://github.com/ThiagoFictor/Ro-dou-consig](https://github.com/ThiagoFictor/Ro-dou-consig)
  2. Navegue até a pasta do projeto:

    cd Ro-dou-consig
  3. Inicie os serviços Docker usando o comando `make`:

    sudo make run

4. Acesse a interface do Apache Airflow em http://localhost:8080.

* Login: airflow

* Senha: airflow

3. Configurar Acesso Remoto à VM (Azure)

Para acessar a interface do Airflow de fora do servidor, crie uma regra de firewall no Azure.

  1. Navegue até a sua Máquina Virtual no Portal Azure.

  2. Vá para Rede e adicione uma regra de porta de entrada.

  3. Configure a regra com as seguintes propriedades: * Intervalos de portas de destino: 8080 * Protocolo: TCP * Ação: Permitir * Nome: Allow-Airflow-8080

Parte 2: Configuração do Serviço de E-mail (SMTP no Azure)

4. Criar o Serviço de Comunicação e E-mail

  1. No Portal Azure, procure e crie um recurso do tipo Communication Services. Dê a ele um nome (ex: FCC-SMTP).

  2. Dentro do recurso, navegue até Email e clique em Conectar um domínio.

  3. Será necessário criar um Serviço de Comunicação por Email.

  4. Dentro deste novo serviço, vá em Provisionar domínios para adicionar e verificar seu domínio customizado (ex: fictorconsig.com.br). Siga as instruções para adicionar os registros DNS necessários para a verificação.

5. Criar um Registro de Aplicação (Microsoft Entra ID)

  1. Navegue até Microsoft Entra ID > Registros de aplicativo.

  2. Crie um Novo registro. * Nome: SMTP-RO-DOU-APP * Tipos de conta suportados: Contas em qualquer diretório organizacional (Multilocatário).

  3. Após registrar, vá para Certificados e segredos e crie um Novo segredo do cliente. Anote o Valor do segredo, pois ele não será exibido novamente.

6. Configurar Permissões de Acesso (IAM)

  1. Volte para o seu recurso Communication Services (FCC-SMTP).

  2. Vá para Controle de Acesso (IAM).

  3. Crie uma função personalizada: * Clone a função Leitor (Reader). * Nome: SMTP-RO-DOU-ROLE * Permissões: Adicione as seguintes permissões de "Ações" (Actions): * Microsoft.Communication/RegisteredSubscriptions/Read * Microsoft.Communication/EmailServices/Write

  4. Ainda em Controle de Acesso (IAM), adicione uma atribuição de função. * Função: Selecione a função SMTP-RO-DOU-ROLE que você acabou de criar. * Membros: Selecione o registro de aplicativo SMTP-RO-DOU-APP.

Parte 3: Integração e Configuração das Rotinas

7. Adicionar Variáveis de SMTP ao Docker Compose

Com as credenciais do Azure em mãos, configure o Airflow para usá-las.

  1. Na pasta do projeto (Ro-dou-consig), crie um arquivo chamado .env.

  2. Popule o arquivo .env com as suas credenciais:

    AIRFLOW_SMTP_HOST=smtp.azurecomm.net
    AIRFLOW_SMTP_PORT=587
    AIRFLOW_SMTP_USER=FCC-SMTP.<Application-Client-ID>.<Directory-Tenant-ID>
    AIRFLOW_SMTP_PASSWORD=<Client-Secret-Value>
    [email protected]
  3. Edite o arquivo docker-compose.yml. Na seção environment dos serviços do Airflow, adicione:

    environment:
      &airflow-common-env
      AIRFLOW__SMTP__SMTP_HOST: " {AIRFLOW_SMTP_MAIL_FROM}"
      AIRFLOW__SMTP__SMTP_PORT: " {AIRFLOW_SMTP_USER}"
      AIRFLOW__SMTP__SMTP_PASSWORD: "${AIRFLOW_SMTP_PASSWORD}"
      AIRFLOW__SMTP__SMTP_STARTTLS: 'true'

4. Reinicie o projeto para aplicar as novas variáveis: sudo make run.

8. Configurar as Rotinas de Pesquisa (DAGs)

Crie arquivos .yaml na pasta dag_confs para definir as pesquisas agendadas. Cada arquivo representa uma DAG (Directed Acyclic Graph) no Airflow.

  • Exemplo (**general_parameters.yaml**):

    dag:
      id: general_parameters
      description: DAG com palavras gerais do Consignado.
      schedule: 0 8 * * MON # Toda segunda-feira às 8:00
      search:
        terms:
          - margem consignável
          - consignação
          - consignado
      report:
        emails:
          - [email protected]

9. Criar a Caixa de Correio Compartilhada

No seu provedor de e-mail (ex: Microsoft 365), crie a caixa de correio compartilhada que receberá os relatórios, como [email protected].

Parte 4: Execução e Teste

  1. Para testar, navegue até dag_confs/examples_and_tests no projeto.

  2. Edite o arquivo all_parameters_example.yaml, inserindo um e-mail real no campo emails:.

  3. Na interface do Airflow, ative e execute a DAG all_parameters_example.

  4. Verifique a caixa de entrada do e-mail configurado para confirmar o recebimento do relatório.


Resultado Esperado

O projeto Ro-dou rodando em um servidor, com o Apache Airflow acessível remotamente. As rotinas (DAGs) estão configuradas para buscar termos específicos no Diário Oficial da União e enviar os relatórios por e-mail automaticamente através do serviço SMTP do Azure.

Solução de Problemas

  • Problema/Erro: Os e-mails não estão sendo enviados. * Solução: Verifique as variáveis de ambiente no arquivo .env e no docker-compose.yml. Confirme se o segredo do cliente no Azure não expirou e se as permissões IAM estão corretas. Use docker compose logs airflow-worker para inspecionar erros de conexão SMTP.

  • Problema/Erro: A DAG não aparece na interface do Airflow. * Solução: Verifique se há erros de sintaxe no seu arquivo .yaml de configuração da DAG. Certifique-se de que o Airflow Scheduler está rodando e verifique os logs dele (docker compose logs airflow-scheduler) para erros de parsing de arquivos.

Artigos Relacionados

Referências

Histórico de Revisões

Data
Versão
Responsável
Mudança

24/10/2024

v1.0

Thiago Thalisson

Confecção do documento.

09/12/2024

v1.1

Thiago Thalisson

Adicionado instruções de instalação dos pacotes no Debian 11.

28/01/2025

v2.0

Thiago Thalisson

Atualizados requisitos e local do repositório.

Last updated