working aws codedeploy devops tool
Opplæring om automatisert distribusjon ved hjelp av AWS CodeDeploy:
I Del 2 av AWS DevOps-verktøyene , så vi hvordan CodeBuild-tjenesten ble brukt til å bygge J2EE-prosjektet ved hjelp av Maven.
I denne opplæringen vil vi se hvordan artefakt WAR-filen som er lagret i S3-bøtta kan brukes til distribusjon til Tomcat applikasjonsserver ved hjelp av CodeDeploy-tjenesten.
Sjekk ut => Ideell guide for DevOps-trening
AWS CodeDeploy er distribusjonstjenesten som automatiserer distribusjonen av applikasjonen til Amazon EC2 Linux- eller Windows-forekomster.
Denne opplæringen vil også forklare hvordan Jenkins kan integreres med CodeDeploy.
Forutsetning:
- Kontoer med AWS, helst et gratis nivå.
- God og rask internettforbindelse.
- AWS-regionen brukt - Asia-Stillehavet (Singapore).
- Amazon Linux eller RHEL EC2-forekomst.
- Tomcat installert på EC2-forekomsten.
Merk: For å distribuere innholdet støttes ikke AWS CodeCommit repository for CodeDeploy-tjenesten. Bare S3 og GitHub støttes.
Hva du vil lære:
- Installere CodeDeploy
- Start Amazon Linux EC2 Instance
- Integrering av AWS CodeDeploy med S3
- Opprett CodeDeploy-applikasjon
- Jenkins-integrasjon med AWS CodeDeploy
- Konklusjon
- Anbefalt lesing
Installere CodeDeploy
AWS CodeDeploy må jobbe nemlig med to enheter for å få tilgang til EC2-forekomsten og S3-bøtta der gjenstandene (WAR-filen) er lagret for distribusjon. For å kunne gi CodeDeploy-tjenesten tillatelse til å få tilgang til disse IAM-ene, må roller settes opp. IAM-rollene er ikke definert for IAM-brukere, men de har bare tilgang til enhetene.
#1) Opprett første rolle for CodeDeploy-tjenesten for å få tilgang til EC2-forekomsten.
Start IAM og klikk på Roller-> Opprett rolle.
Under AWS-tjenesten klikk på EC2 -> Velg brukstilfelle -> EC2 og klikk på Neste-> Tillatelser.
Velg AWSCodeDeployRole under policynavn og klikk Neste-> Gjennomgang.
Skriv inn et rollenavn og klikk på Lag rolle.
Til slutt, rediger tillitsforholdet for denne rollen for å sikre at CodeDeploy-tjenesten er tilgjengelig samlet eller spesifikke regioner / sluttpunkter.
hvordan ser en wep-tast ut
Klikk på rollen og oppdater tillitsforholdet som vist nedenfor.
I policyen endrer du EC2 til Codedeploy og klikker på Oppdater tillitspolicy.
2) Opprett andre rolle for EC2-forekomsten ved hjelp av CodeDeploy-tjenesten for å få tilgang til S3-skuffen.
Gjenta trinnene ovenfor for denne rollen og skriv inn som nedenfor:
- Gå til IAM -> Roller -> Opprett rolle.
- Velg EC2 under AWS Service.
- Under det Velg din brukstilfelle igjen, og klikk på EC2 og klikk på knappen Neste-> Tillatelser.
- I skjermbildet for policy for vedleggstillatelse velger du AmazonS3ReadOnlyAccess og klikk på knappen Neste-> Gjennomgang.
- Nevn rollen HW-Codedeploy-EC2-S3 og klikk på Lag rolle.
Begge rollene skal nå være tilgjengelige.
Start Amazon Linux EC2 Instance
I denne delen klargjør vi nå EC2-forekomsten.
Sørg for å velge rollen mens du klargjør forekomsten HW-Codedeploy-EC2-S3 i løpet av Konfigurer instansdetaljer steg. Sørg også for å lage åpen port 8080.
Sammen med dette må vi også installere CodeDeploy-agent og Tomcat som en applikasjonsserver som skal brukes til distribusjon av applikasjonen vår.
# 1) Installer og konfigurer CodeDeploy Agent på Amazon Linux-forekomsten
CodeDeploy-agent hjelper til med distribusjoner og må installeres i alle tilfeller (miljøer) der distribusjonen skal gjøres.
Logg på Linux-forekomsten og last ned agenten i henhold til regionen som brukes. I vårt tilfelle er det Singapore-regionen der identifikatoren er ap-sørøst-1.
Kommandoen for å laste ned agenten vil være i formatet:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Installer Tomcat på EC2-forekomsten
- For å installere og kjøre Tomcat gjør du følgende trinn i rekkefølgen.
yum install tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Aktiver tomcat-brukeren for applikasjonsbehandling. Gjør endringene som vist i /etc/tomcat7/tomcat-users.xml filen
- Til slutt, start Tomcat-tjenesten.
service tomcat7 start
- Start Tomcat Web Application Manager og sjekk om den fungerer ved hjelp av URL http: //: 8080 / manager
Integrering av AWS CodeDeploy med S3
Som nevnt i del 2 støtter CodeDeploy bare S3 og GitHub som kodelager som brukes til å distribuere de nyeste versjonene av applikasjonen. Siden WAR-filen vår er lagret i S3-bøtte, må vi sørge for at formatet som vedlikeholdes er en ZIP-fil.
Dette betyr at WAR-filen skal være i en ZIP-fil som er det som støttes av distribusjonsprosessen ved hjelp av CodeDeploy.
- AWS CLI (kommandolinjegrensesnitt) må også installeres på Linux-forekomsten. Vennligst referer til URL å installere.
- Kjør følgende trinn i Linux-forekomsten for å laste ned WAR fra S3-bøtta. Følgende trinn må vanligvis gjøres på byggemaskinen.
angi AWS_ACCESS_KEY_ID =
sett AWS_SECRET_ACCESS_KEY =
sett AWS_DEFAULT_REGION = ap-sørøst-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy bruker en appspec.yml fil som inneholder distribusjonsinstruksjoner til EC2-forekomster. Denne filen må være i roten til en mappe der WAR-filen lastes ned.
Opprett appspec.yml-filen og skriptmappen som vist nedenfor:
Hendelsene kjøres i følgende rekkefølge under distribusjonen.
# 1) ApplicationStop
# 2) BeforeInstall
# 3) Installer (filseksjonen kalles og WAR-filen kopieres)
# 4) ApplicationStart
- Mappehierarkiet som brukes er
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
skript
start_applikasjon
stopp_applikasjon
avinstallere_fil_fil
- Skriptinnhold
stop_application:
krøll –bruker 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_applikasjon:
krøll –bruker tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
avinstallere_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 innholdet og last opp ZIP-filen til S3-bøtta. Forsikre deg om at VERSJON er aktivert på skuffen.
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 lastet opp til S3-bøtta er som vist på skjermen nedenfor:
I stedet for å kjøre kommandoene en etter en, kan du opprette et kjørbart skript og legge til kommandoer ovenfor i det og kjøre det hver gang en ny applikasjons WAR-fil er tilgjengelig fra build.
Opprett CodeDeploy-applikasjon
CodeDeploy-applikasjonen er opprettet for å sikre at riktig revisjon av WAR-filen distribueres til riktig miljø som er EC2-forekomsten.
Start CodeDeploy-tjenesten og klikk på Opprett applikasjon knapp.
Skriv inn applikasjonsnavn, distribusjonsgruppe ( Eksempel: QA-Env) og velg EC2-forekomster som kjører.
Velg tjenerrollen på slutten av skjemaet. Dette er den andre rollen som ble opprettet tidligere i opplæringen.
Klikk på Opprett applikasjon knapp.
Velg Deployment Group (QA-Env) og velg Handlinger -> Distribuere ny revisjon.
Siden ZIP-filen er i S3-bøtte, skriv inn revisjonsplasseringen som følger:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Klikk på Utplassere knapp. Distribusjonen er vellykket som vist nedenfor.
WAR-filen er kopiert til tomcat webapps-katalogen.
Bla gjennom applikasjons-URL-en for å sikre at applikasjonen blir distribuert.
Jenkins-integrasjon med AWS CodeDeploy
Som vi har sett i tidligere 2 opplæringsprogrammer, integrerer Jenkins veldig bra med AWS DevOps-verktøy. For å integrere Jenkins med CodeDeploy, må pluginet installeres. Klikk her for å laste ned og installere CodeDeploy-plugin.
Først angir du tilgang og hemmelig nøkkel for IAM-brukeren Jenkins -> Konfigurasjon .
Konklusjon
Så langt så vi hvordan CodeDeploy kan brukes til å automatisere distribusjonen av en J2EE-applikasjons WAR-fil lagret i S3-bøtte til EC2-forekomsten som kjører tomcat-applikasjonsserveren.
Serien med disse tre verktøyene, dvs. CodeCommit, CodeBuild og CodeDeploy hjelper til kontinuerlig integrasjon og kontinuerlig levering av DevOps. Sammen med disse 3 verktøyene er AWS CodePipeline et annet verktøy som hjelper til slutt til slutt visualisering av applikasjonsleveransen.
Følg med på vår kommende opplæring for å vite mer om .NET-webapplikasjon distribusjon til AWS ved hjelp av Elastic Beanstalk.
PREV Opplæring | NESTE veiledning
Anbefalt lesing
- Topp AWS DevOps-verktøy for skybygging og distribusjon
- Kontinuerlig distribusjon i DevOps
- AWS CodeCommit Tutorial for DevOps Implementation in Cloud
- Kontinuerlig levering i DevOps
- Kontinuerlig testing i DevOps
- Betydningen av små leveransetrinn i DevOps
- AWS CodeBuild Tutorial: Utpakking av kode fra Maven Build
- DevOps Automation: Hvordan brukes automatisering i DevOps Practice