Liberar um acesso fácil para a comunidade realizar sua dúvida através de um fórum, para que nós do dev-es possamos sanar dúvidas sobre programação.
Buscamos a solução através do discourse e colocamos em uma máquina simples EC2 da amazon, onde futuramente iremos distribuir os serviços de forma que escale conforme a demanda da comunidade e recursos que tivermos disponíveis para o projeto.
As tecnologias envolvidas são:
O packer é responsável por criação de imagens na nuves conforme nossa personalização através de linhas de comando:
- Ao invés de ficarmos colocando comandos na mão um a um depois que pegar uma máquina ubuntu ...
comando 1
comando 2
comando 3
Que tal colocar esses comandos em um programa que executa e grava uma máquina persinalizada na amazon ou onde eu quiser?
- Que tal ao invés de ficar fazendo bash maroto, eu automatizar instalações e procedimentos em "receitas" feitas através do ansible?
- name: Adding user ubuntu to group docker
user: name=ubuntu
groups=docker
append=yes
- Que tal se ao invés de entrar no console da aws e criar a máquina com a imagem que criei, eu
rodar o terraform e deixar ele criar pra mim?
terraform apply
- Personalize suas opções para rodar o discourse em um arquivo .env:
SECRET_TOKEN=<chave >
DISCOURSE_HOSTNAME=<host e porta onde será publicado o serviço>
DISCOURSE_SMTP_ADDRESS=<endereço do serviço de smtp>
DISCOURSE_SMTP_PORT=<porta do serviço, utilize a 587 porque algumas opções deles estão "fixadas e não dá pra usar a 465 por questão de falta de opções sobre o tls">
DISCOURSE_SMTP_USER_NAME=<usuário do smtp>
DISCOURSE_SMTP_PASSWORD=<senha do smtp>
DISCOURSE_DEVELOPER_EMAILS=<email dos administradores separado por virgulas>
POSTGRES_PASSWORD=<senha do usuario discourse do banco de dados>
DISCOURSE_DB_PASSWORD=<embora redundante segui a documentação e repeti a linha anterior na resposta>
- Copie o conteúdo dentro da
role
do discord que será incorporado pelo ansible:
cp .env ./images/playbook/discourse/files/
- Gere a ami na amazon usando packer:
no diretório ./images/aws/ e com packer instalado
packer build -var-file=variables.json ubuntu-standard.json
- Produza a instancia usando terraform:
no diretório ./terraform e com terraform instalado (também deve ter cli da AWS instalado corretamente)
AWS_PROFILE=<nome-do-profile-configurado-aws-cli> terraform init
AWS_PROFILE=<nome-do-profile-configurado-aws-cli> terraform apply
Não automatizamos a associação do ip publico com dns, mas futuramente iremos colocar uma automação de ponta a ponta, que inclui serviços de backup usando AWS lambda.
Entre em nosso canal de #mentoria no slack, teremos prazer em tirar sua dúvida :D