🚀 CI/CD para Terraform com ações GitHub: implantando um aplicativo Node.js + Redis na AWS
Um guia prático para automatizar o provisionamento de infraestrutura e a implantação de aplicativos em contêiner com ações do GitHub e Terraform. 💡 Introdução Bem -vindo ao mundo dos pipelines e automação 🚀. Neste guia, descobriremos um projeto emocionante, onde implantamos um aplicativo Node.js + Redis Web na AWS usando ações Terraform e GitHub para integração perfeita. Este passo a passo foi projetado com iniciantes em mente – então, mesmo que você esteja apenas começando com o DevOps ou a Cloud Automation, poderá acompanhar passo a passo. O aplicativo em si é simples, mas prático: um aplicativo de contador de solicitação que rastreia o número de visitas e armazena os dados no Redis. Mas a verdadeira mágica não é o aplicativo – é a maneira como configuraremos a infraestrutura como código (IAC) com o Terraform, integrará -o ao GitHub Actions CI/CD e veja como tudo se une. Portanto, sem mais delongas, vamos arregaçar as mangas e ter um pouco de conhecimento prático. 🛠 Pré-requisitos Antes de mergulhar no projeto, vamos garantir que nosso sistema host esteja pronto com todos os itens essenciais. Aqui está o que você precisará: conta do AWS + usuário IAM com acesso administrador (apenas para fins de teste, no Prod, sempre use Plop). Como estaremos aumentando a infraestrutura na AWS, você precisa de um usuário do IAM com permissões adequadas e a AWS CLI configurada localmente. 👉 Se você é novo nisso, não se preocupe-expliquei todo o processo de configuração (usuário do IAM, AWS CLI e Terraform Installation) em um dos meus blogs anteriores: aprenda a implantar um aplicativo de três camadas no AWS EKS usando o Terraform com as melhores práticas Docker & Docker Compose: um aplicativo Runs. Você pode instalá -los facilmente a partir da documentação oficial: Instale o Docker ✅ Depois de configurar, estamos todos prontos para começar a criar e automatizar este projeto! 🚀 Introdução ao projeto O código completo deste projeto está disponível no meu repositório GitHub: 👉 👉 Nginx-node-Redis para começar, bifurque este repositório sob seu próprio nome de usuário do github e, em seguida, cloná-lo localmente usando os comandos abaixo: o Modo de CLONS de clone Git NGATEN O MODO DE ESCRANÇA FURAL EXTERCOTEM DO MODO DE ESCRELA FELIOTEM ⚡ ⚡ ⚡ Porquê, o REDISTE FULLING INDERS MODE ALVERSCELCARE, por que o Recare FullsCoque é o Modo FullsCrectrecsecret. É um aplicativo Node.JS + Redis Solicy de Node.js + Redis com um balanceador de carga Nginx na frente. Toda vez que você atualiza a página, os contadores incrementos e você também vê o nome do host (Web1 ou Web2) que serviu sua solicitação. Eu peguei esse projeto base e nivelei-o para torná-lo mais atraente e favorável à produção. 🔑 Os principais destaques do projeto Web/Server.JS → Basic Node.js App que se conecta ao Redis na porta 6379 e retorna: o número de visitas (incrementos a cada refrigeração) o nome do host (Web1 ou Web2) que a solicitação é executada na porta 5000 agora aprimorada com uma bela ui hcon em vez de texto 🎨 ngin. Ponting para Web1: 5000 e Web2: 5000 Proxy passam regras para distribuir uniformemente o tráfego DockerFile que substitui a configuração padrão NGINX por nosso Docker-Compose.yml → colas de colo de um nó de balaço REDIS (Atuação) MILHERIR (Atualmente, Mirev Recurters Atue Mybase BeliTer (Web1 e Web1 e Web) NGATER (Atualmente, o Balão), o Baltero-Balorer (Web1 e Web1 e Web1) NGATER (Atualmente, o Balão), o Balteroer Mystring Balorer (Web1 e Web1 e Web1) NGATER (Atualmente, o Balão) o Balor. Na Web/Server.js 📦 Adicionado Configuração do Terraform (Terra-Config/) para implantar o aplicativo no AWS ⚡ Adicionado Ações do GitHub Fluxo de trabalho (.github/workflows/main.yml) Para automação de CI/CD com essas alterações, o projeto não é mais uma demonstração-é um sistema de mini produção que você pode ser um sistema de grade de um mini-produção que você pode ser um sistema de manutenção. 🐳 Testando localmente com o Docker compor antes de implantar este aplicativo na AWS com a Terraform, vamos testá -lo localmente para garantir que tudo funcione conforme o esperado. Navegue até o diretório raiz do projeto e execute o seguinte comando: Docker-Compomponde Up-Build Digite o modo de saída de tela cheia de tela cheia ✅ Isto será: construir imagens do docker para redis, node.js servidores da web e o nginx é iniciado de forma correta, você verá que todos os contêineres estão em que os logs do Loges, que o Nginx, o Nginx, o Nginx, está em execução. Mais importante, procure esta mensagem no seu terminal: o servidor da web está ouvindo na porta 5000. Digite o modo de saída de tela cheia agora, abra seu navegador e vá para 👉 🎉 Você deve ver o aplicativo ao vivo! Toda vez que você atualiza a página, o contador incrementará em +1 o nome do host mudará entre o Web1 e o Web2, mostrando que o balanceamento de carga está funcionando perfeitamente, esta etapa confirma que a configuração Docker + Nginx + Redis é sólida antes de passarmos para a implantação da nuvem. ⚡ Integrando as ações do GitHub e o Terraform agora que nosso aplicativo funciona localmente, vamos automatizar a implantação com ações do GitHub + Terraform. Isso nos permitirá: Fornecer a infraestrutura da AWS implantando automaticamente o aplicativo em uma instância do EC2 Exectar verificações de saúde A redução de recursos após o teste (para salvar 💰 em contas da AWS) 🔑 Etapa 1: Adicione segredos AWS 🏗 Etapa 2: Terraform Configuration dentro do Terra-Config/Main.TF ARQUIVO A AMPIA A AMRAFUST AMBRAB A AMRAB AMBIA AMRAB A AMRAB A AMBIOT AMBIO (Http) Disposições abertas Uma instância T2.Micro EC2 usando que SG e AMI inclui um script de dados de usuário que instala o Docker, o Docker Compõe e executa nosso aplicativo 📌 Em resumo: a Terraform lida com toda a criação de infra e inicializa uma instância EC2 que executa nosso aplicativo de contador de solicitações. Mudança importante: Na seção User_Data do main.tf, atualize o URL do repo do github para apontar para o seu repo bifurcado: clone Git Digite o modo de saída da tela completa Modo de tela cheia ⚙️ Etapa 3: Ações do GitHub O fluxo de trabalho dos fluxos de trabalho. Here’s what happens step by step: ✅ Checkout the repository ⚙️ Setup Terraform 📂 Run terraform init, terraform validate, terraform plan 🚀 Apply infrastructure with terraform apply ⏳ Wait 90 seconds → allows user-data to finish setting up Docker + app 🌍 Fetch the Public IP of the EC2 instance 🔎 Health check → ensure the app is live ⏱ Keep the application running for 5 minutes 🧹 Auto teardown with terraform destroy → ensures no unused AWS resources are left behind ▶️ Step 4: Trigger the Workflow Once you’ve updated your repo URL in main.tf, commit and push changes: git status git add terra-config/main.tf git commit -m “Updated GitHub repo URL” git push origin main Enter fullscreen mode Exit fullscreen mode This push will trigger the GitHub Actions workflow, automatically deploying your app para aws. 🚀 Testando a implantação na AWS Depois que tudo estiver configurado, é hora de assistir a mágica acontecer ✨. Encontre seu compromisso recente – por exemplo: “URL do GitHub atualizado” Abra o fluxo de trabalho Run → Você verá o trabalho da Terraform executando passo a passo. 🟢 Espere até que o fluxo de trabalho atinja o “Keep App Running Stage”. Nesse ponto, a Terraform já criou sua instância do EC2, instalou o Docker & Docker Compose e iniciou o aplicativo. 👉 Clique no URL público mostrado nos troncos e … viola! Seu aplicativo de contador de solicitação agora está ao vivo em uma instância do AWS EC2 🚀. Você pode interagir com o aplicativo por 5 minutos, todos os incrementos de atualização. 🔄 Cenário da vida real: Atualizando seu aplicativo rapidamente agora que nosso aplicativo está ao vivo, vamos simular uma mudança real de produção. Imagine que seu gerente diz: “Ei, você pode atualizar o cabeçalho do Welcome to Solictor Counter para receber o meu incrível balcão de solicitação?” Veja como é simples com as ações do GitHub + Terraform: Abra o arquivo web/server.js em seu projeto Encontre a tag HTML e atualize -o: Bem -vindo ao meu incrível contador de solicitações 🎉 É isso! As ações do GitHub receberão as alterações, acionarão o fluxo de trabalho e, em 5 minutos, seu cabeçalho atualizado estará ao vivo na instância do EC2. ⚡ Este é o verdadeiro poder dos pipelines de CI/CD – nenhum SSH manual nos servidores, sem reimplementar manualmente. Basta empurrar seu código e deixar o Terraform + as ações do GitHub lidar com o resto 🚀. 🏁 Conclusão Neste blog, pegamos um aplicativo Node.JS + Redis Counter simples e a sobrecarregamos com ações Nginx, Docker, Terraform e Github. What started as a local demo quickly transformed into a cloud-ready, automated CI/CD pipeline: 🚀 Docker + Docker Compose handled local testing and containerization ⚡ Terraform provisioned AWS infrastructure seamlessly 🔄 GitHub Actions automated deployments and teardown, giving us a clean, cost-effective workflow 🎯 And most importantly — we saw how easy it is to make real-time changes that go live with just a git push. Este projeto prova como a infraestrutura como código + automação pode salvar os desenvolvedores horas de trabalho repetitivo e tornar os fluxos de trabalho prontos para produção mais confiáveis. Obrigado por seguir – Espero que isso o inspire a construir seus próprios pipelines Terraform + Github Actions! 📬 Vamos nos conectar:
Fonte