Infraestrutura como Código da Águia Pescadora (a evolução do cplp-aiops) com playbooks de Ansible especialmente preparado para pessoas com menor experiência em infraestrutura ou acesso a recursos financeiros possam replicar. Trabalho (tanto códigos como documentação) dedicados ao domínio público.
O link para lista completa dos servidores da Etica.AI pode ser vista no painel da organização em Etica.AI Infrastructure: Clusters & VPS inglês.
Ubuntu Server 18.04, 1vCPU, 512MB RAM, 10GB disco
git clone -b v2.0-alpha --single-branch https://github.com/EticaAI/aguia-pescadora-ansible-playbooks.git .
ansible-playbook tldr.yml -e paas_host=example.com -e paas_ip=123.123.123.123
# Senha do Admin do tsuru: tsuru-initialization-configs/tsuru-install.log
# Senha do Minio: example.com:/usr/local/share/minio/.minio.sys/config/config.json
Exemplo de execução do início ao fim dos passos acima:
Sem configurações extras, uma implementação baseada na versão acima teria uma estrutura de URLs semelhante a esta:
- Tsuru URLs:
- Minio:
- Apps URLs (app.{paas_host}):
Note que a 2.0.x alpha não usa Kubernetes ou K3S e é uma versão de apenas 1 nó, porém automatizada do que antes era documentado em EticaAI/aguia-pescadora/diario-de-bordo e que é mais flexível (porém exige conhecimento mais avançado pra testes rapidos e ler o passo a passo).
Uma das formas de instalar a versão 2.0.x alpha é a seguinte:
git clone -b v2.0-alpha --single-branch https://github.com/EticaAI/aguia-pescadora-ansible-playbooks.git .
ansible-playbook tldr.yml -e paas_host=example.com -e paas_ip=123.123.123.123
# Senha do Admin do tsuru: tsuru-initialization-configs/tsuru-install.log
# Senha do Minio: example.com:/usr/local/share/minio/.minio.sys/config/config.json
- PaaS 1 nó (master e workers na mesma VPS)
- Recomendamos Ubuntu 18.04
- Hardware mínimo: 1vCPU, 512MB RAM, 10GB disco
- OpenResty (fork do NGinx) com GUI/lua-resty-auto-ssl
- Função:
- faz terminação TLS (isto é, servir o primeiro acesso HTTPS) que chegam no servidor.
- Note: ele obtem SSL para qualquer domínio que aponte para seu servidor sem invervenção manual de administrador o que pode ser extremamente interessante e prático para quem está vindo de outros ambinetes que oferecem let's encript de graça; porém pode exigir ajustes extras para quem não precisa disto
- Função:
- Minio
- Tsuru Server com core components (via tsuru Installer), em especial:
- Tsuru Dashboard / Tsuru API
- Database para o Tsuru (MongoDB, é usado apenas pelo próprio Tsuru)
- Queue/Cache para o Tsuru (Redis, é usado apenas pelo próprio Tsuru)
- Docker Registry
- PlanB (Usado apelas pelo Tsuru, não serve HTTP ou HTTPS para fora do cluster)
- Docker
A versão 2.0.x alpha é uma implementação mais reduzida (porém automatizada) do EticaAI/aguia-pescadora/diario-de-bordo documenta ser possível. Em vez de dar "todas as opções" e exigir que o usuário tenha que ler outras dezenas de referências extenas ela procura ser primeira versão pública da Etica.AI de um PaaS "Faça-você-mesmo" que consiga ser compatível caso você queira aproveitar apenas a documentação e experiência com pilha de soluções da Águia Pescadora sem usar a hospedagem gratuita.
Para quem tem conhecimento técnico prévio mais avançado você talvez pode usar o EticaAI/aguia-pescadora/diario-de-bordo ou tomar como ponto de partida a instalação do Tsuru em https://docs.tsuru.io/stable/installing/index.html. Como o número de pessoas desenvolvedores realmente criando uma PaaS é reduzida ainda assim você pode se beneficiar de partes do que é testamos e como documentação/código são liberados não apenas como código aberto, mas como dedicados ao domínio publico você pode reaproveitar em outros projetos. Porém note que não temos como dar suporte nem fazer garantias além da que nosso trabalho é feito em boa fé e que de fazemos isso como estratégias para projetos como o https://cplp.etica.ai/.
Pontos de melhoria (isto é, o que NÃO é configurado automaticamente):
- Não expõe como configurar mais de um nó (porém isso pode simplificar não apenas custos, mas trabalho do administrador que não requer alta disponibilidade)
- Não usa Kubernetes ou K3S (o que não necessariamente é ponto negativo)
- Tsuru Gandalf (isto é, permitir por em produção usando
git push
em vez detsuru app-deploy --app meuapp .
) - Tsuru MySQL As A Service (alternativa: usar MySQL via app com Docker)
- Tsuru PostgreSQL As A Service (alternativa: usar PostgreSQL via app com docker)
- Tsuru volumes
A versão do 2.0.x alpha lançaca mesmo apelidada de tldr.yml
ainda requer que
a pessoa tenha que resolver alguns Requisitos. Porém tenha em
mente que ao menos ela não tem aprisionamento tecnológico de forçar que use
um provedor específico de infraestrutura (que geralmente são mais caros). E
nosso público alvo não teria tais recursos financeiros. Porém no futuro talvez
consigamos simplificar ainda mais.
Veja tarefa/ansible-install.
Note que o nível de automação que aguia-pescadora-ansible-playbooks fornece pode ser suficiente para ter uma versão de Águia Pescadora aceitavelmente ok e economizar pelo menos 80% de trabalho. Isto é, ao usar estas rotinas o(s) servidores remotos estarão com pacotes instalados e prontos para uso inicial.
- Ubuntu Server 18.04 LTS
- Versão mais testada. Você pode tentar em outras com alterações nestes playbooks.
- Autenticação por chave privada
- Caso opte por instalar com o tldr.yml o
tsuru-client
requer que a chave privada usada no momento da instalação seja sem senha.
- Caso opte por instalar com o tldr.yml o
Veja pasta tarefa
⚠️ Muito cuidado ao executar automações dateste/
⚠️
Veja pasta teste.
Na medida do possível segundo a lei, Etica.AI renunciou a todos os direitos autorais e direitos conexos ou vizinhos a este trabalho para o Domínio Público.