Terraform + AWS E Github Actions

Com o passar dos anos mais o profissional de Qualidade de Software necessita de conhecimento sobre diversas partes do desenvolvimento de software, esse conhecimento vai além de conhecimento do produto, camadas de código e divisão arquitetural para questões mais técnicas de infra estrutura, esteiras de CI/CD e microsserviços. Um desses avanços de CI/CD e microsserviços é o conceito de infraestrutura como código (IaC).

Hoje nesse advento há muitas ferramentas (segue alguns nas referências Tabela Periódica DevOps), hoje o que iremos conhecer é o Terraform que integrado com AWS e Github Actions faz com que você levante uma infraestrutura de maneira automática em poucos minutos.

Terraform

Terraform é uma ferramenta de código aberto desenvolvida pela HashiCorp para automação de infraestrutura. Ele permite que os engenheiros de software provisionem e gerenciem recursos de infraestrutura como código, usando uma linguagem declarativa. Com o Terraform, é possível definir a infraestrutura desejada em um arquivo de configuração, descrevendo os recursos e suas configurações. Ao executar o Terraform, ele cria, atualiza ou destrói os recursos necessários para atingir o estado desejado, fornecendo um ambiente previsível e consistente para a infraestrutura. Essa abordagem facilita a implantação e o gerenciamento de infraestrutura em nuvens públicas, privadas ou híbridas.

Seus principais benefícios são:

  1. Infraestrutura como código: O Terraform permite que a infraestrutura seja definida e gerenciada como código, o que traz os benefícios de controle de versão, reprodutibilidade e colaboração. Isso torna mais fácil rastrear e auditar as alterações na infraestrutura, além de facilitar a automação e o gerenciamento em escala.
  2. Planos e validações: Antes de fazer qualquer alteração na infraestrutura, o Terraform permite que você visualize um plano de execução que mostra quais recursos serão criados, atualizados ou destruídos. Isso ajuda a evitar alterações indesejadas e a validar as configurações antes de aplicá-las.
  3. Escalabilidade e reutilização: O Terraform permite que você crie módulos reutilizáveis, o que facilita a criação de padrões e componentes de infraestrutura comuns. Isso torna a gestão de infraestrutura mais escalável e padronizada, promovendo a consistência entre projetos e equipes.
  4. Provisionamento e gerenciamento de recursos: Com o Terraform, é possível provisionar e gerenciar recursos de infraestrutura em várias nuvens e provedores, como AWS, Azure, Google Cloud, entre outros. Isso permite que as equipes de desenvolvimento e operações adotem uma abordagem multi-cloud ou híbrida, sem precisar aprender várias ferramentas específicas de cada provedor.

AWS

A AWS (Amazon Web Services) é uma plataforma de serviços de computação em nuvem oferecida pela Amazon. Ela fornece uma ampla gama de serviços, incluindo armazenamento, computação, banco de dados, rede e muito mais. Com a AWS, as empresas podem implantar e dimensionar recursos de TI de forma rápida e flexível, sem precisar investir em hardware físico. A AWS oferece alta disponibilidade, segurança, escalabilidade e recursos de gerenciamento avançados, permitindo que as organizações desenvolvam e executem aplicativos com eficiência na nuvem. Atualmente a AWS detém o mercado de aproximadamente 32% da nuvem de todo o mundo.

Fonte: Canalys

Fonte: Canalys

Principais Serviços

Seus principais serviços são:

  1. Amazon EC2 (Elastic Compute Cloud): É um serviço de computação em nuvem que oferece capacidade de computação redimensionável na nuvem. Os usuários podem provisionar e gerenciar instâncias de servidores virtuais de acordo com suas necessidades.
  2. Amazon S3 (Simple Storage Service): É um serviço de armazenamento de objetos altamente escalável e durável. Ele permite armazenar e recuperar grandes quantidades de dados, como arquivos, imagens e vídeos, de maneira segura.
  3. Amazon RDS (Relational Database Service): É um serviço de banco de dados relacional gerenciado que oferece suporte a várias opções de banco de dados, como MySQL, PostgreSQL, Oracle, SQL Server e outros. Ele facilita a implantação, a escalabilidade e a administração de bancos de dados.
  4. Amazon Lambda: É um serviço de computação sem servidor que permite executar código de forma escalável e automatizada, sem a necessidade de provisionar ou gerenciar servidores. É ideal para executar tarefas e responder a eventos de forma rápida.

Para esse tutorial nosso foco será o provisionamento de um serviço EC2 com a utilização do Terraform para escrevermos toda nossa infraestrutura e o Github Actions para executar de maneira automática essa infra estrutura

Github Actions

O GitHub Actions é um serviço de automação contínua oferecido pelo GitHub. Ele permite automatizar fluxos de trabalho personalizados dentro do ciclo de desenvolvimento de software. Com o GitHub Actions, é possível criar pipelines automatizados para compilação, teste, implantação e outras tarefas relacionadas ao desenvolvimento de software.

Os fluxos de trabalho do GitHub Actions são definidos em arquivos YAML, que descrevem as etapas a serem executadas, os gatilhos que iniciam o fluxo de trabalho e as dependências entre as etapas. Esses fluxos de trabalho podem ser acionados por eventos, como push de código, criação de pull request, criação de tags ou qualquer outro evento configurável.

Implementação no Github

Para um melhor entendimento do código toda a explicação dos detalhes do código e implementação estão escritas no README do projeto que se encontra no Github, bem como você pode visualizar o actions em utilização neste link.

Caso possua alguma dúvida pode me contactar pelo email ou nos comentários abaixo :), o conceito desse artigo é auxiliar os profissionais QAs terem um conhecimento de áreas dentro do desenvolvimento de código.

Grande abraço e obrigado!

Referências