Arquitetura =========== A arquitetura do SPB consiste em 7 servidores como representado na figura a seguir. .. image:: arquitetura.png Servidores e Serviços --------------------- Um proxy reverso trata requisições HTTP e as direciona para uma segunda máquina, onde são distribuidas para os serviços solicitados. Todos os bancos de dados relevantes estão concentrados em uma única máquina e todos os emails disparados pelo sistema partem de um mesmo *relay*. O ambiente é composto por 6 máquinas com funções distintas: * **Reverseproxy** * Proxy reverso * **Integration** * Segundo proxy reverso; * Repositórios Git; * Listas de email; * Backend final de email; * **Email** * *Relay* de email; * **Social** * Servidor de rede social Noosfero; * **Database** * Servidor de banco de dados PostgreSQL; * **Monitor** * Monitoramento de informações dos outros serviços; As máquinas **Reverseproxy**, **Email** e **Monitor** possuem IP's externos. **Reverseproxy** recebe requisições HTTP/HTTPS (portas 80 e 443) e possibilita que usuários utilizem os repositórios git (porta 22). **Email** recebe emails (porta 25) e enviar emails para fora da plataforma. **Monitor** recebe requisições HTTP/HTTPS (portas 80 e 443). Os IP's variam de acordo com o ambiente. Conexões na porta 22 da máquina reverseproxy são redirecionadas para integration. Todas as máquinas aceitam conexões **ssh** originadas apenas da máquina integration, ou seja, não é possível realizar conexões **ssh** nas demais máquinas se a conexão não for originada da integration. As máquinas **email**, **social** e **database** aceitam conexão **ssh** vindas da integration na porta 22 e a reverseproxy em uma porta alternativa, especificada no arquivo de configuração do ambiente, `config/$SPB_ENV/config.yaml` pelo valor `alt_ssh_port`. .. image:: ssh.png Note que, como será demonstrado neste manual, existem atalhos definidos no repositório de gestão de configuração para simplificar o acesso por **ssh** às máquinas. Internamente, as máquinas integration e social também rodam web servers para servirem suas aplicações. Por fim, as máquinas integration e social conectam-se em database usando a porta 5432 para acesso aos bancos de dados. Gestão de configuração ---------------------- O repositório de gestão de configuração se encontra em git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git e pode ser obtido a partir do comando: :: $ git clone git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git Note que para tal, é necessário possuir uma conta no Portal do SPB com chaves SSH configuradas. Para mais informações sobre essas configurações, veja a :doc:`/apoio`. Este repositório contém scripts que realizam todos os passos necessários para a instalação, configuração e manutenção do ambiente. Isto é feito através de scripts em linguagem Ruby que utilizam o Chef_ para a automatização de configurações e deploy de ambientes. Os scripts mencionados são gerenciados por uma segunda ferramenta, Chake, que elimina a necessidade de um servidor Chef dedicado para gerenciar as máquinas do ambiente. O Chake_ conecta-se em cada uma das máquinas descritas via **ssh**, copiando scripts e outros arquivos, contendo as diretrizes necessárias para instalar e configurar todo o ambiente. .. _Chef: https://docs.chef.io .. _Chake: https://github.com/terceiro/chake