working aws codedeploy devops tool
Tutoriel sur le déploiement automatisé à l'aide d'AWS CodeDeploy:
Dans Partie 2 des outils AWS DevOps , nous avons vu comment le service CodeBuild a été utilisé pour construire le projet J2EE à l'aide de Maven.
Dans ce didacticiel, nous verrons comment le fichier WAR d'artefact stocké dans le compartiment S3 peut être utilisé pour le déploiement sur le serveur d'applications Tomcat à l'aide du service CodeDeploy.
Départ => Guide idéal sur la formation DevOps
AWS CodeDeploy est le service de déploiement qui automatise le déploiement de l'application sur les instances Amazon EC2 Linux ou Windows.
Ce didacticiel explique également comment Jenkins peut être intégré à CodeDeploy.
Prérequis:
- Compte avec AWS, de préférence un niveau gratuit.
- Connexion Internet bonne et rapide.
- Région AWS utilisée - Asie-Pacifique (Singapour).
- Instance Amazon Linux ou RHEL EC2.
- Tomcat installé sur l'instance EC2.
Remarque: Afin de déployer le contenu, le référentiel AWS CodeCommit n'est pas pris en charge pour le service CodeDeploy. Seuls S3 et GitHub sont pris en charge.
Ce que vous apprendrez:
- Code de configurationDeploy
- Lancer l'instance Amazon Linux EC2
- Intégration d'AWS CodeDeploy à S3
- Créer une application CodeDeploy
- Intégration de Jenkins avec AWS CodeDeploy
- Conclusion
- lecture recommandée
Code de configurationDeploy
AWS CodeDeploy devra fonctionner notamment avec deux entités pour accéder à l'instance EC2 et au compartiment S3 où les artefacts (fichier WAR) sont stockés pour le déploiement. Afin de permettre au service CodeDeploy d'accéder à ces IAM, des rôles devront être configurés. Les rôles IAM ne sont pas définis pour les utilisateurs IAM, mais ils ont uniquement accès aux entités.
#1) Créer le premier rôle pour que le service CodeDeploy accède à l'instance EC2.
Lancez IAM et cliquez sur Rôles-> Créer un rôle.
VPN gratuit netflix Japon
Sous Service AWS cliquer sur EC2 -> Sélectionnez votre cas d'utilisation -> EC2 et cliquez sur Suivant-> Autorisations.
Sélectionnez le AWSCodeDeployRole sous Nom de la politique et cliquez sur Suivant-> Examen.
Entrez un nom de rôle et cliquez sur Créer un rôle.
Enfin, modifiez la relation d'approbation pour ce rôle pour vous assurer que le service CodeDeploy est accessible globalement ou dans des régions / points de terminaison spécifiques.
Cliquez sur le rôle et mettez à jour la relation de confiance comme indiqué ci-dessous.
Dans la politique, changez EC2 en Codedeploy et cliquez sur Mettre à jour la stratégie de confiance.
deux) Créer le deuxième rôle pour l'instance EC2 utilisant le service CodeDeploy pour accéder au compartiment S3.
Répétez les étapes ci-dessus pour ce rôle et entrez comme ci-dessous:
- Aller à IAM -> Rôles -> Créer un rôle.
- Sous AWS Service, sélectionnez EC2.
- Sous cela, sélectionnez à nouveau votre cas d'utilisation et cliquez sur EC2 et cliquez sur le bouton Suivant-> Autorisations.
- Dans l'écran de stratégie d'autorisation de pièce jointe, sélectionnez AmazonS3ReadOnlyAccess et cliquez sur le bouton Suivant-> Examen.
- Nommez le rôle HW-Codedeploy-EC2-S3 et cliquez sur le Créer un rôle.
Les deux rôles devraient maintenant être disponibles.
Lancer l'instance Amazon Linux EC2
Dans cette section, nous fournissons maintenant l'instance EC2.
Lors du provisionnement de l'instance, assurez-vous de sélectionner le rôle HW-Codedeploy-EC2-S3 pendant Configurer les détails de l'instance étape. Veillez également à ouvrir le port 8080.
Parallèlement à cela, nous devrons également installer Agent CodeDeploy et Tomcat en tant que serveur d'application qui sera utilisé pour le déploiement de notre application.
# 1) Installez et configurez l'agent CodeDeploy sur l'instance Amazon Linux
L'agent CodeDeploy aide dans les déploiements et doit être installé dans chaque instance (environnements) où le déploiement sera effectué.
Connectez-vous à l'instance Linux et téléchargez l'agent en fonction de la région utilisée. Dans notre cas, c'est la région de Singapour où l'identifiant est ap-sud-est-1.
La commande pour télécharger l'agent serait au format:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Installez Tomcat sur l'instance EC2
- Pour installer et exécuter Tomcat, procédez comme suit dans l'ordre.
miam installer tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Activez l'utilisateur tomcat pour le gestionnaire d'applications. Effectuez les modifications comme indiqué dans le fichier /etc/tomcat7/tomcat-users.xml
- Enfin, démarrez le service Tomcat.
service tomcat7 démarrer
- Lancer Gestionnaire d'applications Web Tomcat et vérifiez si cela fonctionne en utilisant l'URL http: //: 8080 / manager
Intégration d'AWS CodeDeploy à S3
Comme mentionné dans la partie 2, CodeDeploy prend en charge uniquement S3 et GitHub en tant que référentiel de code qui est utilisé pour déployer les dernières versions de l'application. Étant donné que notre fichier WAR d'application est stocké dans le compartiment S3, nous devons nous assurer que le format conservé est un fichier ZIP.
Cela signifie que le fichier WAR doit être dans un fichier ZIP, ce qui est pris en charge par le processus de déploiement à l'aide de CodeDeploy.
- L'AWS CLI (interface de ligne de commande) doit également être installée sur l'instance Linux. Veuillez vous référer au URL à installer.
- Exécutez les étapes suivantes dans l'instance Linux pour télécharger le WAR à partir du compartiment S3. Les étapes suivantes doivent normalement être effectuées sur la machine de construction.
définir AWS_ACCESS_KEY_ID =
définir AWS_SECRET_ACCESS_KEY =
définir AWS_DEFAULT_REGION = ap-sud-est-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy utilise un appspec.yml fichier contenant les instructions de déploiement sur les instances EC2. Ce fichier doit se trouver à la racine d'un dossier dans lequel le fichier WAR de l'application est téléchargé.
Créez le fichier appspec.yml et le dossier scripts comme indiqué ci-dessous:
Les événements s'exécutent dans l'ordre suivant lors du déploiement.
# 1) ApplicationStop
# 2) Avant d'installer
# 3) Installer (la section des fichiers est appelée et le fichier WAR copié)
# 4) Démarrage de l'application
- La hiérarchie de dossiers utilisée est
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
scripts
start_application
stop_application
uninstall_war_file
- Contenu des scripts
stop_application:
curl - utilisateur tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/stop?path=/AWS-HelloWorld-1.0.0
start_application:
curl - utilisateur tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
uninstall_war_file
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- ZIP le contenu et téléchargez le fichier ZIP dans le compartiment S3. Assurez-vous que VERSIONING est activé sur le bucket.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war scripts appspec.yml
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Le fichier ZIP téléchargé dans le compartiment S3 est comme indiqué dans l'écran ci-dessous:
Au lieu d'exécuter les commandes une par une, vous pouvez créer un script exécutable et y ajouter les commandes ci-dessus et l'exécuter à chaque fois qu'un nouveau fichier WAR d'application est disponible à partir de la construction.
Créer une application CodeDeploy
L'application CodeDeploy est créée pour garantir que la révision appropriée du fichier WAR est déployée dans l'environnement approprié qui est l'instance EC2.
Lancez le service CodeDeploy et cliquez sur le Créer une application bouton.
Entrez le nom de l'application, le groupe de déploiement ( Exemple: QA-Env) et sélectionnez les instances EC2 en cours d'exécution.
À la fin du formulaire, sélectionnez le rôle de service. Il s'agit de l'autre rôle créé précédemment dans le didacticiel.
Clique sur le Créer une application bouton.
Sélectionnez le groupe de déploiement (QA-Env) et sélectionnez Actions -> Déployer une nouvelle révision.
Étant donné que le fichier ZIP se trouve dans le compartiment S3, entrez l'emplacement de la révision comme suit:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Clique sur le Déployer bouton. Le déploiement est réussi comme indiqué ci-dessous.
Le fichier WAR est copié avec succès dans le répertoire tomcat webapps.
Parcourez l'URL de l'application pour vous assurer que l'application est déployée avec succès.
Intégration de Jenkins avec AWS CodeDeploy
Comme nous l'avons vu dans les 2 tutoriels précédents, Jenkins s'intègre très bien aux outils AWS DevOps. Pour intégrer Jenkins à CodeDeploy, le plugin doit être installé. Cliquez sur ici pour télécharger et installer le plugin CodeDeploy.
Saisissez d'abord la clé d'accès et la clé secrète de l'utilisateur IAM dans Jenkins -> Configuration .
Conclusion
Jusqu'à présent, nous avons vu comment CodeDeploy peut être utilisé pour automatiser le déploiement d'un fichier WAR d'application J2EE stocké dans le compartiment S3 vers l'instance EC2 qui exécute le serveur d'applications tomcat.
La série de ces trois outils, à savoir CodeCommit, CodeBuild et CodeDeploy, aide dans les aspects d'intégration continue et de livraison continue de DevOps. En plus de ces 3 outils, AWS CodePipeline est un autre outil qui aide à la visualisation de bout en bout de la livraison de l'application.
Restez à l'écoute de notre prochain didacticiel pour en savoir plus sur le déploiement d'applications Web .NET sur AWS à l'aide d'Elastic Beanstalk.
Tutoriel PREV | Tutoriel SUIVANT
lecture recommandée
- Principaux outils AWS DevOps pour la création et le déploiement dans le cloud
- Déploiement continu dans DevOps
- Tutoriel AWS CodeCommit pour l'implémentation de DevOps dans le cloud
- Livraison continue dans DevOps
- Tests continus dans DevOps
- Importance de petits incréments de livraisons dans DevOps
- Didacticiel AWS CodeBuild: extraction de code à partir de Maven Build
- Automatisation DevOps: comment l'automatisation est-elle appliquée dans la pratique DevOps