AWS CodeDeploy : Comment Configurer un Pipeline CI/CD pour Déployer des Applications sur EC2 avec GitHub
Déployer des applications manuellement est fastidieux, sujet aux erreurs et inefficace. AWS CodeDeploy simplifie l'automatisation des déploiements, améliorant l'efficacité et minimisant les temps d'arrêt. Dans ce guide, vous apprendrez étape par étape comment configurer un pipeline robuste d'Intégration Continue et de Déploiement Continu (CI/CD) pour déployer vos applications directement depuis GitHub vers une instance Amazon EC2.
Ce dont vous aurez besoin :
- Compte AWS
- Instance EC2 exécutant Amazon Linux
- Dépôt GitHub avec votre application
- AWS CLI installé sur votre machine locale
Étape 1 : Préparer votre Instance EC2
Connectez-vous à votre instance EC2 via SSH :
ssh -i "your-key.pem" ec2-user@your-ec2-instance-public-ip
Installez et démarrez l'agent 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
Remplacez region par votre région AWS, comme us-east-1.
Étape 2 : Créer un Rôle IAM pour CodeDeploy
Dans la console AWS :
- Naviguez vers IAM → Roles → Create Role.
- Choisissez Service AWS, puis sélectionnez CodeDeploy.
- Attachez les politiques : sélectionnez AWSCodeDeployRole.
- Nommez votre rôle (par exemple,
CodeDeployRole) et créez-le.
Étape 3 : Configurer l'Application CodeDeploy
- Allez à AWS CodeDeploy → Applications → Create application.
- Entrez un nom d'application.
- Choisissez la plateforme de calcul : EC2/On-premises.
Créez un groupe de déploiement :
- Nom du groupe de déploiement (par exemple,
Production) - Sélectionnez votre Rôle IAM (
CodeDeployRole) - Sélectionnez les instances EC2 par tag ou sélectionnez manuellement votre instance EC2.
- Type de déploiement : In-place.
Étape 4 : Préparer votre Dépôt GitHub
Créez un fichier appspec.yml à la racine de votre dépôt :
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
hooks:
AfterInstall:
- location: scripts/install_dependencies.sh
timeout: 300
runas: root
Créez les scripts nécessaires, par exemple, scripts/install_dependencies.sh :
#!/bin/bash
sudo yum update -y
sudo yum install -y httpd
sudo service httpd start
sudo chkconfig httpd on
Assurez-vous que vos scripts ont les permissions d'exécution :
chmod +x scripts/*.sh
Validez et poussez les changements vers GitHub :
git add .
git commit -m "Added appspec.yml and deployment scripts"
git push origin main
Étape 5 : Connecter AWS CodeDeploy avec GitHub
- Dans la console CodeDeploy, sélectionnez votre application et groupe de déploiement.
- Cliquez sur Create Deployment.
- Sélectionnez GitHub comme type de dépôt.
- Connectez-vous à GitHub et autorisez AWS.
- Choisissez votre dépôt et la branche de commits (par exemple,
main). - Cliquez sur Deploy.
Étape 6 : Automatiser avec CI/CD en Utilisant GitHub Actions
Créez .github/workflows/deploy.yml dans votre dépôt :
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 }}
Configurez les identifiants AWS comme secrets GitHub :
- Allez dans GitHub → Settings → Secrets and variables → Actions → New repository secret
- Ajoutez votre
AWS_ACCESS_KEY_IDetAWS_SECRET_ACCESS_KEY.
Maintenant, chaque push vers main déclenche des déploiements automatiques.
Étape 7 : Vérifier votre Déploiement
Visitez l'IP publique de votre EC2 dans un navigateur web :
http://your-ec2-instance-public-ip
Vous devriez voir votre application déployée avec succès !
Conclusion
Félicitations ! Vous avez configuré avec succès un pipeline CI/CD AWS CodeDeploy intégré avec GitHub pour déployer automatiquement des applications sur EC2. Cette automatisation optimisera considérablement votre processus de déploiement, réduira les temps d'arrêt et simplifiera les mises à jour.