working aws codedeploy devops tool
Lernprogramm zur automatisierten Bereitstellung mit AWS CodeDeploy:
Im Teil 2 der AWS DevOps-Tools Wir haben gesehen, wie der CodeBuild-Dienst zum Erstellen des J2EE-Projekts mit Maven verwendet wurde.
In diesem Lernprogramm erfahren Sie, wie die im S3-Bucket gespeicherte Artefakt-WAR-Datei für die Bereitstellung auf dem Tomcat-Anwendungsserver mithilfe des CodeDeploy-Dienstes verwendet werden kann.
Auschecken => Idealer Leitfaden für das DevOps-Training
AWS CodeDeploy ist der Bereitstellungsdienst, der die Bereitstellung der Anwendung auf Amazon EC2 Linux- oder Windows-Instanzen automatisiert.
In diesem Tutorial wird auch erklärt, wie Jenkins in CodeDeploy integriert werden kann.
Voraussetzung:
- Konto bei AWS vorzugsweise eine kostenlose Stufe.
- Gute und schnelle Internetverbindung.
- Verwendete AWS-Region - Asien-Pazifik (Singapur).
- Amazon Linux- oder RHEL EC2-Instanz.
- Tomcat auf der EC2-Instanz installiert.
Hinweis: Zum Bereitstellen des Inhalts wird das AWS CodeCommit-Repository für den CodeDeploy-Dienst nicht unterstützt. Es werden nur S3 und GitHub unterstützt.
Was du lernen wirst:
- CodeDeploy einrichten
- Starten Sie die Amazon Linux EC2-Instanz
- Integration von AWS CodeDeploy in S3
- Erstellen Sie eine CodeDeploy-Anwendung
- Jenkins-Integration mit AWS CodeDeploy
- Fazit
- Literatur-Empfehlungen
CodeDeploy einrichten
AWS CodeDeploy muss nämlich mit zwei Entitäten zusammenarbeiten, um auf die EC2-Instanz und den S3-Bucket zuzugreifen, in dem die Artefakte (WAR-Datei) für die Bereitstellung gespeichert sind. Um dem CodeDeploy-Dienst die Berechtigung zum Zugriff auf diese IAM zu erteilen, müssen Rollen eingerichtet werden. Die IAM-Rollen sind nicht für IAM-Benutzer definiert, sie haben jedoch nur Zugriff auf die Entitäten.
# 1) Erstellen Sie die erste Rolle Damit der CodeDeploy-Dienst auf die EC2-Instanz zugreifen kann.
Starten Sie IAM und klicken Sie auf Rollen-> Rolle erstellen.
Unter AWS Service klicke auf EC2 -> Wählen Sie Ihren Anwendungsfall -> EC2 und klicken Sie auf Weiter-> Berechtigungen.
Wähle aus AWSCodeDeployRole Klicken Sie unter Richtlinienname auf Weiter-> Überprüfen.
Geben Sie einen Rollennamen ein und klicken Sie auf Rolle erstellen.
Zuletzt bearbeiten Sie die Vertrauensstellung für diese Rolle, um sicherzustellen, dass auf den CodeDeploy-Dienst insgesamt oder auf bestimmte Regionen / Endpunkte zugegriffen werden kann.
wie man Array-Index außerhalb der Grenzen Ausnahme in Java löst
Klicken Sie auf die Rolle und aktualisieren Sie die Vertrauensstellung wie unten gezeigt.
Ändern Sie in der Richtlinie EC2 in Codedeploy und klicken Sie auf Vertrauensrichtlinie aktualisieren.
2) Erstellen Sie die zweite Rolle für die EC2-Instanz, die den CodeDeploy-Dienst verwendet, um auf den S3-Bucket zuzugreifen.
Wiederholen Sie die obigen Schritte für diese Rolle und geben Sie Folgendes ein:
- Gehe zu IAM -> Rollen -> Rolle erstellen.
- Wählen Sie unter AWS Service die Option EC2 aus.
- Wählen Sie darunter erneut Ihren Anwendungsfall aus, klicken Sie auf EC2 und dann auf die Schaltfläche Weiter-> Berechtigungen.
- Wählen Sie im Bildschirm Richtlinien zum Anhängen von Berechtigungen aus AmazonS3ReadOnlyAccess und klicken Sie auf die Schaltfläche Weiter-> Überprüfen.
- Nennen Sie die Rolle HW-Codedeploy-EC2-S3 und klicken Sie auf die Rolle erstellen.
Beide Rollen sollten jetzt verfügbar sein.
Starten Sie die Amazon Linux EC2-Instanz
In diesem Abschnitt stellen wir jetzt die EC2-Instanz bereit.
Stellen Sie beim Bereitstellen der Instanz sicher, dass Sie die Rolle auswählen HW-Codedeploy-EC2-S3 während Instanzdetails konfigurieren Schritt. Stellen Sie außerdem sicher, dass der Port 8080 offen ist.
Zusammen mit diesem müssen wir auch installieren CodeDeploy-Agent und Tomcat als Anwendungsserver, der für die Bereitstellung unserer Anwendung verwendet wird.
# 1) Installieren und konfigurieren Sie den CodeDeploy Agent auf der Amazon Linux-Instanz
Der CodeDeploy-Agent hilft bei Bereitstellungen und muss in jeder Instanz (Umgebung) installiert werden, in der die Bereitstellung durchgeführt wird.
Melden Sie sich bei der Linux-Instanz an und laden Sie den Agenten gemäß der verwendeten Region herunter. In unserem Fall ist es die Region Singapur, in der sich die Kennung befindet ap-südost-1.
Der Befehl zum Herunterladen des Agenten hat das folgende Format:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Installieren Sie Tomcat auf der EC2-Instanz
- Führen Sie die folgenden Schritte in der Reihenfolge aus, um Tomcat zu installieren und auszuführen.
yum installiere tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Aktivieren Sie den Tomcat-Benutzer für den Anwendungsmanager. Nehmen Sie die Änderungen wie in der Datei /etc/tomcat7/tomcat-users.xml gezeigt vor
- Starten Sie zuletzt den Tomcat-Dienst.
Service Tomcat7 starten
- Starten Tomcat-Webanwendungs-Manager und überprüfen Sie anhand der URL http: //: 8080 / manager, ob es funktioniert
Integration von AWS CodeDeploy in S3
Wie in Teil 2 erwähnt, unterstützt CodeDeploy nur S3 und GitHub als Code-Repository, mit dem die neuesten Versionen der Anwendung bereitgestellt werden. Da unsere Anwendungs-WAR-Datei im S3-Bucket gespeichert ist, müssen wir sicherstellen, dass das beibehaltene Format eine ZIP-Datei ist.
Dies bedeutet, dass sich die WAR-Datei in einer ZIP-Datei befinden sollte, die vom Bereitstellungsprozess mit CodeDeploy unterstützt wird.
- AWS CLI (Command Line Interface) muss auch auf der Linux-Instanz installiert sein. Bitte wende dich an die URL installieren.
- Führen Sie die folgenden Schritte in der Linux-Instanz aus, um die WAR aus dem S3-Bucket herunterzuladen. Die folgenden Schritte müssen normalerweise auf der Build-Maschine ausgeführt werden.
setze AWS_ACCESS_KEY_ID =
setze AWS_SECRET_ACCESS_KEY =
setze AWS_DEFAULT_REGION = ap-südost-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy verwendet eine appspec.yml Datei, die Bereitstellungsanweisungen für die EC2-Instanzen enthält. Diese Datei muss sich im Stammverzeichnis eines Ordners befinden, in den die WAR-Datei der Anwendung heruntergeladen wird.
Erstellen Sie die Datei appspec.yml und den Skriptordner wie folgt:
Die Ereignisse werden während der Bereitstellung in der folgenden Reihenfolge ausgeführt.
# 1) ApplicationStop
# 2) Vor der Installation
# 3) Installieren (Dateibereich wird aufgerufen und WAR-Datei kopiert)
# 4) ApplicationStart
- Die verwendete Ordnerhierarchie ist
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
Skripte
start_application
stop_application
uninstall_war_file
- Skriptinhalt
stop_application:
curl –user 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 –user 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
- ZIPEN Sie den Inhalt und laden Sie die ZIP-Datei in den S3-Bucket hoch. Stellen Sie sicher, dass VERSIONING für den Bucket aktiviert ist.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war appspec.yml-Skripte
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Die in den S3-Bucket hochgeladene ZIP-Datei wird im folgenden Bildschirm angezeigt:
Anstatt die Befehle einzeln auszuführen, können Sie ein ausführbares Skript erstellen und die obigen Befehle hinzufügen und jedes Mal ausführen, wenn eine neue Anwendungs-WAR-Datei aus dem Build verfügbar ist.
Erstellen Sie eine CodeDeploy-Anwendung
Die CodeDeploy-Anwendung wird erstellt, um sicherzustellen, dass die ordnungsgemäße Überarbeitung der WAR-Datei in der entsprechenden Umgebung bereitgestellt wird, bei der es sich um die EC2-Instanz handelt.
Starten Sie den CodeDeploy-Dienst und klicken Sie auf Anwendung erstellen Taste.
Geben Sie den Anwendungsnamen und die Bereitstellungsgruppe ein ( Beispiel: QA-Env) und wählen Sie die ausgeführten EC2-Instanzen aus.
Wählen Sie am Ende des Formulars die Servicerolle aus. Dies ist die andere Rolle, die zuvor im Lernprogramm erstellt wurde.
Klicke auf das Anwendung erstellen Taste.
Wählen Sie die Bereitstellungsgruppe (QA-Env) aus und wählen Sie Aktionen -> Neue Revision bereitstellen.
Da sich die ZIP-Datei im S3-Bucket befindet, geben Sie den Revisionsspeicherort wie folgt ein:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Klicke auf das Bereitstellen Taste. Die Bereitstellung ist wie unten gezeigt erfolgreich.
Die WAR-Datei wurde erfolgreich in das Tomcat-Webanwendungsverzeichnis kopiert.
Durchsuchen Sie die Anwendungs-URL, um sicherzustellen, dass die Anwendung erfolgreich bereitgestellt wurde.
Jenkins-Integration mit AWS CodeDeploy
Wie wir in den beiden vorherigen Tutorials gesehen haben, lässt sich Jenkins sehr gut in AWS DevOps-Tools integrieren. Um Jenkins in CodeDeploy zu integrieren, muss das Plugin installiert sein. Klicken Hier um das CodeDeploy-Plugin herunterzuladen und zu installieren.
Geben Sie zunächst den Zugangs- und Geheimschlüssel für den IAM-Benutzer in ein Jenkins -> Konfiguration .
Fazit
Bisher haben wir gesehen, wie CodeDeploy verwendet werden kann, um die Bereitstellung einer im S3-Bucket gespeicherten J2EE-Anwendungs-WAR-Datei auf der EC2-Instanz zu automatisieren, auf der der Tomcat-Anwendungsserver ausgeführt wird.
Die Reihe dieser drei Tools, z. B. CodeCommit, CodeBuild und CodeDeploy, hilft bei der kontinuierlichen Integration und der kontinuierlichen Bereitstellung von DevOps. Neben diesen drei Tools ist AWS CodePipeline ein weiteres Tool, das bei der End-to-End-Visualisierung der Anwendungsbereitstellung hilft.
In unserem nächsten Tutorial erfahren Sie mehr über die Bereitstellung von .NET-Webanwendungen in AWS mithilfe von Elastic Beanstalk.
PREV Tutorial | NÄCHSTES Tutorial
Literatur-Empfehlungen
- Top AWS DevOps-Tools für Cloud-Erstellung und -Bereitstellung
- Kontinuierliche Bereitstellung in DevOps
- AWS CodeCommit-Lernprogramm für die DevOps-Implementierung in der Cloud
- Kontinuierliche Lieferung in DevOps
- Kontinuierliches Testen in DevOps
- Bedeutung kleiner Inkremente von Lieferungen in DevOps
- AWS CodeBuild Tutorial: Extrahieren von Code aus Maven Build
- DevOps-Automatisierung: Wie wird die Automatisierung in der DevOps-Praxis angewendet?