Assim que migrei da carreira de DBA para infraestrutura, naturalmente comecei a direcionar meus estudos a ferramentas da minha nova área de atuação, e dentre muitas, uma particularmente me chama atenção, terraform (carinhosamente chamado de TF).
A ideia de construir toda uma infraestrutura e provisionar recursos por código é uma atividade bem empolgante para mim. No começo da minha carreira tive a oportunidade de acompanhar de perto a construção de uma infraestrutura, e com o surgimento e crescimento da computação em nuvem essa época não traz saudades.
Nesse artigo quero compartilhar um código TF de um LAB que criei recentemente mostrando o provisionamento de uma infraestrutura, assim como alguns recursos. Para ilustrar o que efetivamente é provisionado criei o diagrama abaixo:
Recursos
Para esse LAB criei contas AWS (free tier) e DataDog (trial), então vale ressaltar que, se você quiser executar o LAB fique a vontade, mas tome cuidado com os eventuais custos.
Resumo
https://github.com/brunosantosnet/lab-tf-serverless-infrastructure
O que o código TF provisiona:
Infraestrutura (VPC, subnets públicas e privadas, internet gateway, NAT gateway, route tables): sem reinventar a roda, usei o módulo do repositório oficial da hashcorp.
API Gateway: com apenas uma rota integrando com o lambda.
Lambda (Runtime Python): também sem reinventar a roda, usei módulo do repositório oficial da hashcorp.
RDS: e mais uma vez um módulo, viva o repositório da hashicorp. \o/
Dashboard no DataDog: eu diria que é a cereja do bolo, após provisionar tudo, podemos usar um provider para criar um dashboard e monitorar nossos recursos.
Assim que o código TF é executado, o output será um curl onde o resultado é uma consulta a partir do lambda ao RDS mostrando qual a versão do postgres.
Output
Abaixo, parte do output durante a execução do código
Próximos Passos
A ideia é que tudo isso seja provisionado via github actions, espero em breve compartilhar o resultado em outro artigo.