Automatisation du déploiement de code avec AWS CodeCommit et CodeDeploy
Publié: 2022-03-25En tant que développeur Web, votre travail peut inclure plusieurs tâches complexes telles que l'automatisation du déploiement de code sur des serveurs de production ou si vous travaillez en groupe et rencontrez des problèmes lors du téléchargement de votre code sur un site Web en direct, alors cet article de blog est une solution pour surmonter tous ces problèmes. problèmes.
Lorsque vous utilisez FTP, vous devez avoir écrasé le code de votre co-développeur, un problème assez courant et qui se produit avec la plupart d'entre nous. Ce guide vous montrera l'automatisation du déploiement de code avec les services AWS CodeCommit, CodeDeploy et Pipeline.
L'aperçu technologique :
- AWS CodeCommit : nous utiliserons CodeCommit pour maintenir nos référentiels (contenu Web/fichiers de code) qui contiendront tous les fichiers de projet et les journaux de validation.
- Serveur EC2 : Nous utiliserons EC2 comme serveur de production, il contiendra le site en direct et le code pour les visiteurs de votre site Web.
- AWS CodeDeploy : Il contiendra l'application pour publier votre code sur le serveur EC2. Nous allons également créer un groupe de déploiement qui contiendra le nom/tag de l'instance EC2 ciblée sur laquelle nous souhaitons publier notre code.
- Pipeline : nous sélectionnerons CodeCommit comme source et CodeDeploy comme étape de déploiement. Par conséquent, chaque fois que des modifications de code sont détectées dans CodeCommit, le pipeline s'exécute et transmet ces modifications de code à CodeDeploy (instance EC2).
Automatisation du déploiement de code : expliqué en détail :
Création d'un utilisateur IAM et Git pour l'automatisation du déploiement de code
Nous devrons d'abord créer un utilisateur IAM et un utilisateur Git qui effectueront les modifications de code et les publieront sur le serveur de déploiement.
- Créer un utilisateur IAM
- Autoriser l'accès à : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Vous trouverez cette option dans l'onglet "Attacher directement les stratégies existantes".
- Maintenant, connectez-vous avec cet utilisateur IAM.
- Cliquez sur Identifiants de sécurité dans le coin supérieur droit.
- Cliquez sur l' onglet Informations d'identification AWS CodeCommit .
- Dans la section « Informations d'identification HTTPS Git pour AWS CodeCommit », cliquez sur le bouton Générer les informations d'identification .
- Maintenant, copiez ce nom d'utilisateur et ce mot de passe dans un endroit sûr. Ce sera le nom d'utilisateur et le mot de passe principaux de votre Git pour pousser/extraire les changements de code.
Création d'un référentiel dans CodeCommit
Maintenant, créons un référentiel qui contiendra votre code exact.
- Accédez au tableau de bord CodeCommit à partir de l'utilisateur IAM.
- Dans le coin supérieur droit, sélectionnez la région dans laquelle vous souhaitez créer votre référentiel.
- Cliquez sur Créer un référentiel, donnez-lui un nom, une description et cliquez sur créer.
- Sous la section " Cloner le référentiel ", vous verrez une URL de votre référentiel. Conservez-le dans un endroit sûr. Cela ressemblera à : https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
Télécharger votre fichier de projet pour la première fois
- Ouvrez l' invite de commande de votre système local où réside votre code d'origine.
- Dans l'invite de commande, accédez au chemin où réside votre code.
- Maintenant, exécutez les commandes suivantes pour pousser votre code vers le référentiel AWS pour la première fois :
git init
git config –local init.defaultBranch main
git config –global init.defaultBranch principal
git add . ## cela validera tous les fichiers du projet
git commit –m "Commit initial"
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- Créer une instance EC2 et installer l'agent CodeDeploy
- Créer un rôle d'instance
- Ouvrez votre console AWS IAM.
- Accédez à l'onglet Rôles >> Créer un rôle.
- Sous Sélectionner le type d'entité approuvée, sélectionnez Service AWS . Sous "Choisir un cas d'utilisation", sélectionnez EC2 . Sous "Sélectionnez votre cas d'utilisation", choisissez EC2. Choisissez Suivant : Autorisations .
- Recherchez et sélectionnez la stratégie nommée AmazonEC2RoleforAWSCodeDeploy , puis choisissez Next: Tags .
- Choisissez Suivant : Réviser. Saisissez un nom pour le rôle (par exemple, EC2InstanceRole ) et cliquez sur Créer .
- Créer une instance EC2
- Accédez à la console EC2. Cliquez sur Lancer l'instance.
- Choisissez une Amazon Machine Image (AMI), localisez Amazon Linux 2 AMI (HVM), SSD Volume Type , puis choisissez Select. (Cette AMI est étiquetée "Éligible au niveau gratuit" et se trouve en haut de la liste.)
- Choisissez une page Type d'instance, choisissez le type t2.micro éligible à l'offre gratuite comme configuration matérielle pour votre instance, puis choisissez Suivant : Configurer les détails de l'instance .
- Sur la page Configurer les détails de l'instance, procédez comme suit :
- Dans Nombre d'instances, saisissez 1 .
- Dans Affecter automatiquement l'adresse IP publique, choisissez Activer .
- Dans le rôle IAM, choisissez le rôle IAM que vous avez créé dans la procédure précédente (par exemple, EC2InstanceRole ).
- Développez Détails avancés et dans le champ Données utilisateur, saisissez ce qui suit :
#!/bin/bash
miam-y mise à jour
miam installer -y ruby
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./installer
./installer automatiquement
- Laissez les autres éléments de l'Étape 3 : Configurer la page Détails de l'instance inchangés. Choisissez Suivant : Ajouter un stockage .
- Laissez la page Étape 4 : Ajouter un stockage inchangée, puis choisissez Suivant : Ajouter des balises.
- Choisissez Ajouter une balise . Dans Clé, entrez Nom et dans Valeur, entrez MyCodePipelineDemo . Choisissez Suivant : Configurer le groupe de sécurité. Ultérieurement, vous créez une application CodeDeploy qui déploie l'exemple d'application sur cette instance. CodeDeploy sélectionne les instances à déployer en fonction des balises attachées aux instances.
- Sur la page Configurer le groupe de sécurité, procédez comme suit :
- À côté de Attribuer un groupe de sécurité , sélectionnez Créer un nouveau groupe de sécurité .
- Dans la ligne pour SSH , sous Source , choisissez Mon IP .
- Choisissez Ajouter une règle , choisissez HTTP , puis sous Source , choisissez Mon adresse IP
- Choisissez Réviser et lancer.
- Sur la page Examiner le lancement de l'instance , choisissez Lancer. Lorsque vous êtes invité à entrer une paire de clés, sélectionnez « Continuer sans paire de clés » .
- Choisissez Afficher les instances pour fermer la page de confirmation et revenir à la console.
- Vous pouvez afficher l'état du lancement sur la page Instances . Lorsque vous lancez une instance, son état initial est "en attente". Une fois l'instance démarrée, son état passe à "en cours d'exécution" et elle reçoit un nom DNS public. (Si la colonne DNS public n'est pas affichée, choisissez l' icône Afficher/Masquer , puis sélectionnez DNS public .)
- Cela peut prendre quelques minutes avant que l'instance soit prête pour que vous vous y connectiez. Affichez les informations dans la colonne Vérifications d' état pour voir si votre instance a réussi ses vérifications d'état.
Créer une application dans CodeDeploy
- Créer un rôle de service CodeDeploy
- Ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/
- Dans le tableau de bord de la console, choisissez Rôles .
- Choisissez de Créer un rôle .
- Sous Sélectionner le type d'entité approuvée, sélectionnez Service AWS . Sous Choisir un cas d'utilisation , sélectionnez CodeDeploy . Sous Sélectionnez votre cas d'utilisation, choisissez CodeDeploy. Choisissez Suivant : Autorisations. La stratégie gérée AWSCodeDeployRole est déjà attachée au rôle.
- Choisissez Suivant : Balises, puis Suivant : Révision.
- Entrez un nom pour le rôle (par exemple, CodeDeployRole), puis choisissez Créer un rôle.
- Créer une application dans CodeDeploy
- Ouvrez la console CodeDeploy à l'adresse https://console.aws.amazon.com/codedeploy
- Si la page Applications n'apparaît pas, dans le menu, choisissez Applications .
- Choisissez de créer une application .
- Dans le nom de l'application, entrez MyDemoApplication .
- Dans Compute Platform, choisissez EC2/On-premises .
- Choisissez de Créer une application.
- Créer un groupe de déploiement dans CodeDeploy
- Sur la page qui affiche votre application, choisissez de créer un groupe de déploiement .
- Dans le nom du groupe de déploiement, entrez MyDemoDeploymentGroup .
- Rôle en service, choisissez le rôle de service que vous avez créé précédemment (par exemple, CodeDeployRole ).
- Sous Type de déploiement, choisissez Sur place .
- Sous Configuration de l'environnement , choisissez Instances Amazon EC2 . Dans le champ Clé, entrez Nom . Dans le champ Valeur, entrez le nom que vous avez utilisé pour baliser l'instance (par exemple, MyCodePipelineDemo ).
- Sous Configuration de déploiement, choisissez CodeDeployDefault.OneAtaTime .
- Sous Équilibreur de charge, assurez-vous que l'option Activer l'équilibrage de charge n'est pas sélectionnée . Vous n'avez pas besoin de configurer un équilibreur de charge ou de choisir un groupe cible pour cet exemple.
- Développez la section Avancé. Sous Alarmes, si des alarmes sont répertoriées, choisissez Ignorer la configuration des alarmes.
- Choisissez de créer un groupe de déploiement.
Créer un pipeline
- Créer un pipeline
- Connectez-vous à AWS Management Console et ouvrez la console CodePipeline à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home
- Ouvrez la console CodePipeline à l'adresse https://console.aws.amazon.com/codepipeline/
- Sélectionnez Créer un pipeline .
- À l' Étape 1 : sélectionnez les paramètres du pipeline, dans le nom du pipeline, saisissez MyFirstPipeline .
- Dans le rôle de service, choisissez le nouveau rôle de service pour permettre à CodePipeline de créer un rôle de service dans IAM.
- Laissez les paramètres sous Paramètres avancés à leurs valeurs par défaut, puis sélectionnez Suivant.
- Dans Étape 2 : Ajouter une étape source, dans Fournisseur source, sélectionnez CodeCommit .
Dans Nom du référentiel, sélectionnez le nom du référentiel CodeCommit que vous avez créé à l'étape 1 : Créer un référentiel CodeCommit. Dans Nom de la branche, choisissez principal, puis sélectionnez Étape suivante. - Une fois que vous avez sélectionné le nom et la branche du référentiel, un message affiche la règle Amazon CloudWatch Events à créer pour ce pipeline.
- Sous les options "Modifier la détection", laissez les valeurs par défaut. Cela permet à CodePipeline d'utiliser Amazon CloudWatch Events pour détecter les modifications dans votre référentiel source.
- Sélectionnez Suivant .
- À l'Étape 3 : Ajouter une étape de génération, sélectionnez Ignorer l'étape de génération , puis acceptez le message d'avertissement en sélectionnant Ignorer à nouveau . Sélectionnez Suivant .
Remarque : Dans ce didacticiel, vous déployez du code qui nécessite un service sans génération, vous pouvez donc ignorer cette étape. Toutefois, si votre code source doit être généré avant d'être déployé sur des instances, vous pouvez configurer CodeBuild à cette étape.
- À l'Étape 4 : Ajouter une étape de déploiement, dans Déployer le fournisseur, sélectionnez CodeDeploy .
Dans le nom de l'application, sélectionnez MyDemoApplication . Dans le groupe Déploiement, sélectionnez MyDemoDeploymentGroup , puis sélectionnez Étape suivante . - À l'Étape 5 : Vérifiez les informations, puis sélectionnez Créer un pipeline .
- Le pipeline commence à s'exécuter après sa création. Il télécharge le code à partir de votre référentiel CodeCommit et crée un déploiement CodeDeploy sur votre instance EC2. Vous pouvez afficher les messages de progression, de « réussite » et d'« échec » lorsque l'exemple CodePipeline déploie la page Web sur l'instance Amazon EC2 dans le déploiement CodeDeploy.
Vous êtes prêt maintenant ! Allez dans Déployer ⇒ Déploiements. Vous verrez les journaux de tous les déploiements réussis et de ceux qui ont échoué.
Pour vérifier les modifications sur le site, ouvrez votre instance EC2, recherchez votre DNS public, qui apparaîtra comme : http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .
Une fois que vous le parcourez, vous verrez vos pages en direct.
Vous avez terminé avec succès l'automatisation du déploiement de code. Vous pouvez désormais envoyer de nouvelles modifications de code à votre référentiel et les publier automatiquement sur votre site. Si vous rencontrez toujours des problèmes, n'hésitez pas à commenter ici.