Este repositório contém o projeto CloudMart, onde utilizamos Terraform para provisionar infraestrutura na AWS, focando em Multicloud, DevOps e IA.
📦 MULTICLOUD-DEVOPS-AI
├── 📂 application
│ ├── 📂 backend # Código e Dockerfile do backend
│ ├── 📂 frontend # Código e Dockerfile do frontend
│
├── 📂 database # Infraestrutura do DynamoDB
│ ├── .terraform/ # Arquivos do Terraform
│ ├── .terraform.lock.hcl
│ ├── terraform.tfstate
│ ├── main.tf # Código Terraform para criar o DynamoDB
│
├── 📂 server # Infraestrutura da EC2
│ ├── main.tf # Código Terraform para criar EC2
│ ├── README.md # Documentação do projeto
✅ Instalamos e configuramos AWS CLI e Terraform
✅ Criamos um DynamoDB via código Terraform
✅ Provisionamos uma instância EC2 com Terraform
✅ Instalamos e configuramos Docker na EC2
✅ Criamos containers Docker para backend e frontend
✅ Configuramos regras de segurança para acesso remoto
Antes de começar, você precisa ter instalado:
📌 No Ubuntu/Debian, execute:
sudo apt install awscli -y📌 No MacOS, use:
brew install awscli📌 No Windows, baixe o instalador aqui.
Verifique a instalação:
aws --versionaws configureInforme:
- AWS Access Key ID: 🔑 Sua chave de acesso
- AWS Secret Access Key: 🔒 Chave secreta
- Região Padrão: Ex:
us-east-1 - Formato de saída: Pode ser
json
Para testar:
aws s3 ls📌 No Ubuntu/Debian:
sudo apt update && sudo apt install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform -y📌 No MacOS:
brew tap hashicorp/tap
brew install hashicorp/tap/terraform📌 No Windows, baixe aqui.
Verifique:
terraform -vcd database
terraform init
terraform apply -auto-approvecd ../server
terraform init
terraform apply -auto-approveaws ec2 describe-instances --query "Reservations[*].Instances[*].PublicIpAddress" --output textAcesse via SSH:
ssh -i chave-ssh.pem ec2-user@<IP-PUBLICO-EC2>Instale o Docker:
sudo yum update -y
sudo yum install docker -y
sudo systemctl enable --now docker
docker --versioncd application/backend
wget https://tcb-public-events.s3.amazonaws.com/mdac/resources/day2/cloudmart-backend.zip
unzip cloudmart-backend.zip
nano .env📌 Adicione ao .env:
PORT=5000
AWS_REGION=us-east-1📌 Construir e rodar o container:
docker build -t cloudmart-backend .
docker run -d -p 5000:5000 --env-file .env cloudmart-backendcd ../frontend
wget https://tcb-public-events.s3.amazonaws.com/mdac/resources/day2/cloudmart-frontend.zip
unzip cloudmart-frontend.zip
nano .env📌 Adicione ao .env:
VITE_API_BASE_URL=http://<IP-PUBLICO-EC2>:5000/api📌 Construir e rodar o container:
docker build -t cloudmart-frontend .
docker run -d -p 5001:5001 cloudmart-frontend📌 Abrir portas no grupo de segurança da EC2:
aws ec2 authorize-security-group-ingress --group-id <seu-sg-id> --protocol tcp --port 5000 --cidr 0.0.0.0/0
aws ec2 authorize-security-group-ingress --group-id <seu-sg-id> --protocol tcp --port 5001 --cidr 0.0.0.0/0📌 Acesse no navegador:
- Backend:
http://<IP-PUBLICO-EC2>:5000 - Frontend:
http://<IP-PUBLICO-EC2>:5001
✅ Implementar CI/CD para deploy automatizado
✅ Monitoramento e logs via CloudWatch
✅ Deploy em Kubernetes (EKS)
📢 Vamos juntos nessa jornada! 🚀
#DevOps #Multicloud #Terraform #AWS #Docker #InfraAsCode