AWS CodeDeploy: Como Configurar um Pipeline CI/CD para Implantar Aplicações no EC2 Usando GitHub
Implantar aplicações manualmente é tedioso, propenso a erros e ineficiente. O AWS CodeDeploy simplifica a automação de implantações, melhorando a eficiência e minimizando o tempo de inatividade. Neste guia, você aprenderá passo a passo como configurar um pipeline robusto de Integração Contínua e Implantação Contínua (CI/CD) para implantar suas aplicações diretamente do GitHub para uma instância Amazon EC2.
O que você vai precisar:
- Conta AWS
- Instância EC2 executando Amazon Linux
- Repositório GitHub com sua aplicação
- AWS CLI instalado na sua máquina local
Passo 1: Preparar sua Instância EC2
Conecte-se à sua instância EC2 via SSH:
ssh -i "your-key.pem" ec2-user@your-ec2-instance-public-ip
Instale e inicie o agente do CodeDeploy:
sudo yum update
sudo yum install ruby -y
sudo yum install wget -y
cd /home/ec2-user
wget https://aws-codedeploy-region.s3.region.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent status
Substitua region pela sua região da AWS, como us-east-1.
Passo 2: Criar uma Role IAM para o CodeDeploy
No Console da AWS:
- Navegue até IAM → Roles → Create Role.
- Escolha Serviço AWS, depois selecione CodeDeploy.
- Anexe políticas: selecione AWSCodeDeployRole.
- Nomeie sua role (por exemplo,
CodeDeployRole) e crie-a.
Passo 3: Configurar a Aplicação do CodeDeploy
- Vá para AWS CodeDeploy → Applications → Create application.
- Insira um nome para a aplicação.
- Escolha a plataforma de computação: EC2/On-premises.
Crie um grupo de implantação:
- Nome do grupo de implantação (por exemplo,
Production) - Selecione sua Role IAM (
CodeDeployRole) - Selecione instâncias EC2 por tag ou selecione manualmente sua instância EC2.
- Tipo de implantação: In-place.
Passo 4: Preparar seu Repositório GitHub
Crie um arquivo appspec.yml na raiz do seu repositório:
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
hooks:
AfterInstall:
- location: scripts/install_dependencies.sh
timeout: 300
runas: root
Crie os scripts necessários, por exemplo, scripts/install_dependencies.sh:
#!/bin/bash
sudo yum update -y
sudo yum install -y httpd
sudo service httpd start
sudo chkconfig httpd on
Certifique-se de que seus scripts tenham permissões de execução:
chmod +x scripts/*.sh
Confirme e envie as alterações para o GitHub:
git add .
git commit -m "Added appspec.yml and deployment scripts"
git push origin main
Passo 5: Conectar o AWS CodeDeploy com o GitHub
- No console do CodeDeploy, selecione sua aplicação e grupo de implantação.
- Clique em Create Deployment.
- Selecione GitHub como tipo de repositório.
- Conecte-se ao GitHub e autorize a AWS.
- Escolha seu repositório e a branch de commits (por exemplo,
main). - Clique em Deploy.
Passo 6: Automatizar com CI/CD Usando GitHub Actions
Crie .github/workflows/deploy.yml no seu repositório:
name: AWS Deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: AWS CodeDeploy
uses: aws-actions/aws-codedeploy@v1
with:
application-name: your-codedeploy-app-name
deployment-group-name: your-deployment-group
region: your-region
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Configure as credenciais da AWS como secrets do GitHub:
- Vá para GitHub → Settings → Secrets and variables → Actions → New repository secret
- Adicione seu
AWS_ACCESS_KEY_IDeAWS_SECRET_ACCESS_KEY.
Agora, cada push para main aciona implantações automáticas.
Passo 7: Verificar sua Implantação
Visite o IP público do seu EC2 em um navegador web:
http://your-ec2-instance-public-ip
Você deverá ver sua aplicação implantada com sucesso!
Conclusão
Parabéns! Você configurou com sucesso um pipeline CI/CD do AWS CodeDeploy integrado com o GitHub para implantar automaticamente aplicações no EC2. Essa automação otimizará significativamente seu processo de implantação, reduzirá o tempo de inatividade e simplificará as atualizações.