working aws codedeploy devops tool
Handledning om automatiserad distribution med AWS CodeDeploy:
I Del 2 av AWS DevOps-verktygen , vi såg hur CodeBuild-tjänsten användes för att bygga J2EE-projektet med Maven.
I den här självstudien kommer vi att se hur artefakt-WAR-filen som lagras i S3-skopan kan användas för distribution till Tomcat-applikationsserver med hjälp av CodeDeploy-tjänsten.
Kolla in => Idealisk guide för DevOps-träning
AWS CodeDeploy är distributionstjänsten som automatiserar distributionen av applikationen till Amazon EC2 Linux- eller Windows-instanser.
Denna handledning kommer också att förklara hur Jenkins kan integreras med CodeDeploy.
Nödvändig förutsättning:
- Konto med AWS helst en gratis nivå.
- Bra och snabb internetanslutning.
- AWS-regionen används - Asien och Stillahavsområdet (Singapore).
- Amazon Linux eller RHEL EC2-instans.
- Tomcat installerad på EC2-instansen.
Notera: För att distribuera innehållet stöds inte AWS CodeCommit-arkivet för CodeDeploy-tjänsten. Endast S3 och GitHub stöds.
Vad du kommer att lära dig:
- Installera CodeDeploy
- Starta Amazon Linux EC2 Instance
- Integrering av AWS CodeDeploy med S3
- Skapa CodeDeploy-applikation
- Jenkins-integration med AWS CodeDeploy
- Slutsats
- Rekommenderad läsning
Installera CodeDeploy
AWS CodeDeploy måste arbeta nämligen med två enheter för att komma åt EC2-instansen och S3-hinken där artefakterna (WAR-filen) lagras för distribution. För att ge behörighet för tjänsten CodeDeploy att få åtkomst till dessa IAM måste roller ställas in. IAM-rollerna definieras inte för IAM-användare men de har bara åtkomst till enheterna.
# 1) Skapa första roll för CodeDeploy-tjänsten för att komma åt EC2-instansen.
Starta IAM och klicka på Roller-> Skapa roll.
Under AWS-tjänst Klicka på EC2 -> Välj ditt användningsfall -> EC2 och klicka på Nästa-> Behörigheter.
Välj AWSCodeDeployRole under policynamn och klicka Nästa-> Granska.
Ange ett rollnamn och klicka på Skapa roll.
Slutligen redigerar du förtroendeförhållandet för den här rollen för att säkerställa att CodeDeploy-tjänsten är tillgänglig övergripande eller specifika regioner / slutpunkter.
c ++ slumptal mellan 1 och 3
Klicka på rollen och uppdatera förtroendeförhållandet enligt nedan.
I policyn ändrar du EC2 till Codedeploy och klickar på Uppdatera förtroende policy.
två) Skapa andra roll för EC2-instansen med hjälp av CodeDeploy-tjänsten för att komma åt S3-skopan.
Upprepa stegen ovan för denna roll och ange som nedan:
- Gå till IAM -> Roller -> Skapa roll.
- Välj EC2 under AWS Service.
- Under det Välj ditt användningsfall igen och klicka på EC2 och klicka på knappen Nästa-> Behörigheter.
- Välj på principskärmen för bifogningsbehörighet AmazonS3ReadOnlyAccess och klicka på knappen Nästa-> Granska.
- Namnge rollen HW-Codedeploy-EC2-S3 och klicka på Skapa roll.
Båda rollerna ska nu vara tillgängliga.
Starta Amazon Linux EC2 Instance
I detta avsnitt tillhandahåller vi nu EC2-instansen.
Se till att du väljer rollen medan du tillhandahåller förekomsten HW-Codedeploy-EC2-S3 under Konfigurera instansinformation steg. Se också till att öppna port 8080.
Tillsammans med detta kommer vi också att behöva installera CodeDeploy-agent och Tomcat som en applikationsserver som kommer att användas för distribution av vår applikation.
# 1) Installera och konfigurera CodeDeploy Agent på Amazon Linux-instansen
CodeDeploy-agenten hjälper till vid distribution och måste installeras i alla instanser (miljöer) där distributionen kommer att ske.
Logga in på Linux-instansen och ladda ner agenten enligt den region som används. I vårt fall är det Singapore-regionen där identifieraren är ap-sydost-1.
Kommandot för att ladda ner agenten skulle vara i formatet:
wget https: // aws-kodadploy-. s3.amazonaws.com/latest/install
# 2) Installera Tomcat på EC2-instansen
- För att installera och köra Tomcat gör du följande steg i ordningen.
yum installera tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Aktivera tomcat-användaren för applikationshanteraren. Gör ändringarna som visas i filen /etc/tomcat7/tomcat-users.xml
- Slutligen starta Tomcat-tjänsten.
service tomcat7 start
- Lansera Tomcat Web Application Manager och kontrollera om den fungerar med URL: en: http: //: 8080 / manager
Integrering av AWS CodeDeploy med S3
Som nämnts i del 2 stöder CodeDeploy endast S3 och GitHub som kodförvar som används för att distribuera de senaste versionerna av applikationen. Eftersom vår applikations WAR-fil lagras i S3-hink, måste vi se till att formatet som underhålls är en ZIP-fil.
Detta innebär att WAR-filen ska finnas i en ZIP-fil vilket är det som stöds av distributionsprocessen med hjälp av CodeDeploy.
- AWS CLI (kommandoradsgränssnitt) måste också installeras på Linux-instansen. Vänligen hänvisa till URL att installera.
- Kör följande steg i Linux-instansen för att ladda ner WAR från S3-skopan. Följande steg behöver normalt göras på byggmaskinen.
ställa in AWS_ACCESS_KEY_ID =
ange AWS_SECRET_ACCESS_KEY =
ställa in AWS_DEFAULT_REGION = ap-sydost-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy använder en appspec.yml fil som innehåller distributionsinstruktioner till EC2-instanser. Den här filen måste vara i roten till en mapp där applikationen WAR-fil laddas ner.
Skapa filen appspec.yml och skriptmappen enligt nedan:
Händelserna körs i följande ordning under distributionen.
# 1) ApplicationStop
# 2) BeforeInstall
# 3) Installera (filavsnitt kallas och WAR-fil kopieras)
# 4) ApplicationStart
- Mapphierarkin som används är
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
skript
start_application
stopp_applikation
avinstallera_fil_fil
- Skriptinnehåll
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
avinstallera_fil_fil
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- ZIP innehållet och ladda upp ZIP-filen till S3-skopan. Se till att VERSIONING är aktiverat på skopan.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war appspec.yml-skript
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
ZIP-fil uppladdad till S3-hinken visas på skärmen nedan:
Istället för att köra kommandona en efter en kan du skapa ett körbart skript och lägga till ovanstående kommandon i det och köra det varje gång en ny WAR-fil finns tillgänglig från build.
Skapa CodeDeploy-applikation
CodeDeploy-applikationen skapas för att säkerställa att korrekt revision av WAR-filen distribueras till lämplig miljö som är EC2-instansen.
Starta CodeDeploy-tjänsten och klicka på Skapa applikation knapp.
Ange applikationsnamn, distributionsgrupp ( Exempel: QA-Env) och välj de EC2-instanser som körs.
Välj tjänstens roll i slutet av formuläret. Detta är den andra rollen som skapades tidigare i handledningen.
Klicka på Skapa applikation knapp.
Välj Deployment Group (QA-Env) och välj Åtgärder -> Distribuera ny version.
Eftersom ZIP-filen finns i S3-hinken anger du Revision-platsen enligt följande:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Klicka på Implementera knapp. Driftsättningen lyckas enligt nedan.
WAR-filen kopierades framgångsrikt till katalogen tomcat webapps.
Bläddra bland programmets URL för att säkerställa att applikationen distribueras framgångsrikt.
Jenkins-integration med AWS CodeDeploy
Som vi har sett i tidigare 2 självstudier integrerar Jenkins mycket bra med AWS DevOps-verktyg. För att integrera Jenkins med CodeDeploy måste pluginet installeras. Klick här för att ladda ner och installera CodeDeploy-plugin.
Ange först Access och Secret Key för IAM-användaren i Jenkins -> Konfiguration .
Slutsats
Hittills såg vi hur CodeDeploy kan användas för att automatisera distributionen av en J2EE-applikations WAR-fil lagrad i S3-hink till EC2-instansen som kör tomcat-applikationsservern.
Serien med dessa tre verktyg, dvs. CodeCommit, CodeBuild och CodeDeploy, hjälper till med kontinuerlig integration och kontinuerlig leveransaspekter av DevOps. Tillsammans med dessa 3 verktyg är AWS CodePipeline ett annat verktyg som i slutändan hjälper visualisering av applikationsleveransen.
Håll dig uppdaterad med vår kommande handledning för att lära dig mer om .NET-webbapplikationdistribution till AWS med Elastic Beanstalk.
PREV-handledning | NÄSTA självstudie
Rekommenderad läsning
- De bästa AWS DevOps-verktygen för molnbyggnad och distribution
- Kontinuerlig distribution i DevOps
- AWS CodeCommit Tutorial för DevOps Implementation in Cloud
- Kontinuerlig leverans i DevOps
- Kontinuerlig testning i DevOps
- Betydelsen av små leveranssteg i DevOps
- AWS CodeBuild Tutorial: Extrahera kod från Maven Build
- DevOps Automation: Hur används automatisering i DevOps Practice