Simplificando a Entrega de Serviços em Nuvem com Cookiecutter e Terraform
Tags: devops, aws, cloud, github
Published: 2024-02-27 22:13:40

Olá pessoal, Paulo Alves aqui compartilhando conhecimento e apresentando duas ferramentas poderosas que podem facilitar bastante o nosso dia a dia: Cookiecutter e Terraform.

E quando falo em facilitar nossa vida, é para não ficamos inventando a roda, começando tudo do zero. E neste caso vamos criar um template e podemos reutilizar ele quantas vezes forem necessário para garantir a entrega do ambiente para os time de desenvolvimentos ou até mesmo serviços que os time de DevOps, Cloud, Security, etc irão utilizar também.

## Agilizando a Criação com Templates Personalizados utilizando Cookiecutter

1. O ***Cookiecutter*** é uma ferramenta incrível para a criação de templates personalizados. A prévia definição de um template traz benefícios notáveis, oferecendo estruturas base para documentos, designs e outros tipos de conteúdo. Suas funcionalidades principais incluem:

2. **Criação de Templates:** Possibilita a criação de modelos personalizados conforme as necessidades específicas de projetos.

3. **Edição Simples:** Facilita a modificação intuitiva de templates, tornando o processo acessível mesmo para usuários sem conhecimento avançado, já que tudo gira em torno de um simples json no processo básico.

4. **Organização:** Oferece recursos para organizar e categorizar templates, facilitando a busca e seleção do modelo desejado.

5. **Compatibilidade:** Pode ser integrado a diferentes plataformas ou softwares, garantindo compatibilidade e utilização eficiente dos templates.

6. **Colaboração:** Possibilita a colaboração entre usuários na criação e edição de templates, promovendo um fluxo de trabalho colaborativo, até mesmo pelo fato de ter que manter esses templates atualizados.

7. **Versatilidade:** Adapta-se a diversos tipos de templates, desde documentos de texto até designs gráficos, proporcionando versatilidade de uso.

## Automatizando a Infraestrutura como Código utilizando Terraform
A segunda ferramenta é o Terraform, uma criação da HashiCorp, que automatiza a infraestrutura como código (IaC), proporcionando uma gestão eficiente da infraestrutura mantendo sempre o padrão inicial do projeto. Suas características e conceitos principais incluem:

1. **Código Declarativo:** Utiliza uma linguagem declarativa para descrever a infraestrutura desejada.

2. **Provisionamento Multi-Cloud:** Suporta provisionamento em várias nuvens, além de outros serviços como datadog, cloudflare, elastic, etc.

3. **Controle de Estado:** Mantém um arquivo de estado que registra o estado atual da infraestrutura.

4. **Módulos Reutilizáveis:** Organiza o código em módulos, possibilitando a reutilização de configurações em diferentes partes do projeto, promovendo modularidade e consistência.

5. **Planejamento Prévio:** Antes de efetuar qualquer alteração na infraestrutura, o Terraform fornece um plano detalhado das mudanças propostas.

6. **Versionamento:** Permite o versionamento do código de infraestrutura, facilitando o rastreamento de mudanças ao longo do tempo e a colaboração em equipe.

## Criando uma VPC na AWS usando Terraform e Cookiecutter
{% embed https://www.youtube.com/watch?v=3NmyKHfg4q4 %}