working aws codedeploy devops tool
Zelfstudie over geautomatiseerde implementatie met behulp van AWS CodeDeploy:
In Deel 2 van de AWS DevOps-tools , we zagen hoe de CodeBuild-service werd gebruikt om het J2EE-project te bouwen met behulp van Maven.
In deze zelfstudie zullen we zien hoe het artefact WAR-bestand dat is opgeslagen in de S3-bucket kan worden gebruikt voor implementatie op de Tomcat-toepassingsserver met behulp van de CodeDeploy-service.
Bekijk => Ideale gids over DevOps-training
AWS CodeDeploy is de implementatieservice die de implementatie van de applicatie naar de Amazon EC2 Linux- of Windows-instances automatiseert.
In deze tutorial wordt ook uitgelegd hoe Jenkins kan worden geïntegreerd met CodeDeploy.
Voorwaarde:
- Account bij AWS, bij voorkeur een gratis laag.
- Goede en snelle internetverbinding.
- Gebruikte AWS-regio - Azië-Pacific (Singapore).
- Amazon Linux- of RHEL EC2-instantie.
- Tomcat geïnstalleerd op de EC2-instantie.
Notitie: Om de inhoud te implementeren wordt de AWS CodeCommit-repository niet ondersteund voor de CodeDeploy-service. Alleen S3 en GitHub worden ondersteund.
Wat je leert:
- Stel CodeDeploy in
- Start Amazon Linux EC2-instantie
- AWS CodeDeploy integreren met S3
- Maak CodeDeploy-applicatie
- Jenkins-integratie met AWS CodeDeploy
- Gevolgtrekking
- Aanbevolen literatuur
Stel CodeDeploy in
AWS CodeDeploy zal namelijk met twee entiteiten moeten werken om toegang te krijgen tot de EC2-instantie en de S3-bucket waar de artefacten (WAR-bestand) worden opgeslagen voor implementatie. Om de CodeDeploy-service toestemming te geven om toegang te krijgen tot die IAM, moeten rollen worden ingesteld. De IAM-rollen zijn niet gedefinieerd voor IAM-gebruikers, maar ze hebben alleen toegang tot de entiteiten.
# 1) Maak het eerste rol voor CodeDeploy-service om toegang te krijgen tot het EC2-exemplaar.
Start IAM en klik op Rollen-> Rol maken.
Onder AWS-service Klik op EC2 -> Selecteer uw use case -> EC2 en klik op Volgende-> Machtigingen.
Selecteer de AWSCodeDeployRole onder Beleidsnaam en klik op Volgende-> Herzien.
Voer een rolnaam in en klik op Rol maken.
Bewerk ten slotte de vertrouwensrelatie voor deze rol om ervoor te zorgen dat de CodeDeploy-service algemeen toegankelijk is of specifieke regio's / eindpunten.
hoeveel kost het verkooppunt van quickbooks
Klik op de rol en update de vertrouwensrelatie zoals hieronder weergegeven.
Verander EC2 in Codedeploy in het beleid en klik op Update het vertrouwensbeleid.
twee) Maak het tweede rol voor de EC2-instantie met behulp van de CodeDeploy-service om toegang te krijgen tot de S3-bucket.
Herhaal de bovenstaande stappen voor deze rol en voer het volgende in:
- Ga naar IAM -> Rollen -> Rol maken.
- Selecteer EC2 onder AWS-service.
- Daaronder Selecteer nogmaals uw use case en klik op EC2 en klik op de knop Volgende-> Machtigingen.
- Selecteer in het scherm voor het machtigingsbeleid bijvoegen AmazonS3ReadOnlyAccess en klik op de knop Volgende-> Herzien.
- Noem de rol HW-Codedeploy-EC2-S3 en klik op het Rol maken.
Beide rollen zouden nu beschikbaar moeten zijn.
Start Amazon Linux EC2-instantie
In deze sectie richten we nu de EC2-instantie in.
Zorg ervoor dat u de rol selecteert tijdens het inrichten van de instantie HW-Codedeploy-EC2-S3 gedurende Configureer Instantiedetails stap. Zorg er ook voor dat u poort 8080 open maakt.
Daarnaast zullen we ook moeten installeren CodeDeploy-agent en Tomcat als een applicatieserver die zal worden gebruikt voor de implementatie van onze applicatie.
# 1) Installeer en configureer CodeDeploy Agent op de Amazon Linux-instantie
CodeDeploy-agent helpt bij implementaties en moet in elke instantie (omgevingen) worden geïnstalleerd waar de implementatie zal plaatsvinden.
Meld u aan bij de Linux-instantie en download de agent volgens de regio die wordt gebruikt. In ons geval is het de regio Singapore waar de identifier zich bevindt ap-zuidoosten-1.
De opdracht om de agent te downloaden heeft de volgende indeling:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Installeer Tomcat op de EC2-instantie
- Voer de volgende stappen in de volgorde uit om Tomcat te installeren en uit te voeren.
yum installeer tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Schakel de tomcat-gebruiker in voor de applicatiebeheerder. Breng de wijzigingen aan zoals weergegeven in het bestand /etc/tomcat7/tomcat-users.xml
- Start ten slotte de Tomcat-service.
service tomcat7 start
- Lancering Tomcat Web Application Manager en controleer of het werkt met behulp van de URL http: //: 8080 / manager
AWS CodeDeploy integreren met S3
Zoals vermeld in deel 2 ondersteunt CodeDeploy alleen S3 en GitHub als coderepository die wordt gebruikt om de nieuwste versies van de applicatie te implementeren. Omdat ons WAR-bestand van de applicatie is opgeslagen in S3-bucket, moeten we ervoor zorgen dat het onderhouden formaat een ZIP-bestand is.
Dit betekent dat het WAR-bestand zich in een ZIP-bestand moet bevinden, wat wordt ondersteund door het implementatieproces met CodeDeploy.
- AWS CLI (opdrachtregelinterface) moet ook op de Linux-instantie worden geïnstalleerd. Raadpleeg de URL installeren.
- Voer de volgende stappen uit in de Linux-instantie om de WAR uit de S3-bucket te downloaden. De volgende stappen moeten normaal gesproken worden uitgevoerd op de bouwmachine.
stel AWS_ACCESS_KEY_ID =
stel AWS_SECRET_ACCESS_KEY =
stel AWS_DEFAULT_REGION = ap-zuidoosten-1 in
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy gebruikt een appspec.yml bestand dat implementatie-instructies voor de EC2-instanties bevat. Dit bestand moet in de root staan van een map waarin het WAR-bestand van de toepassing is gedownload.
Maak het appspec.yml-bestand en de scriptmap zoals hieronder weergegeven:
De gebeurtenissen worden tijdens de implementatie in de volgende volgorde uitgevoerd.
# 1) ApplicationStop
# 2) BeforeInstall
# 3) Installeren (sectie bestanden heet en WAR-bestand gekopieerd)
# 4) ApplicationStart
- De gebruikte maphiërarchie is
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
scripts
start_application
stop_application
uninstall_war_file
- Scripts inhoud
stop_application:
curl –gebruiker kater: kater 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 –gebruiker kater: kater 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 de inhoud en upload het ZIP-bestand naar de S3-bucket. Zorg ervoor dat VERSIONING is ingeschakeld op de bucket.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war appspec.yml-scripts
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
S3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
ZIP-bestand geüpload naar de S3-bucket is zoals te zien in het onderstaande scherm:
In plaats van de opdrachten een voor een uit te voeren, kunt u een uitvoerbaar script maken en de bovenstaande opdrachten eraan toevoegen en het elke keer uitvoeren wanneer een nieuw WAR-bestand van de toepassing beschikbaar is vanaf de build.
Maak CodeDeploy-applicatie
De CodeDeploy-applicatie is gemaakt om ervoor te zorgen dat de juiste revisie van het WAR-bestand wordt geïmplementeerd in de juiste omgeving, namelijk de EC2-instantie.
Start de CodeDeploy-service en klik op het Maak een applicatie knop.
Voer de toepassingsnaam en de implementatiegroep in ( Voorbeeld: QA-Env) en selecteer de actieve EC2-instanties.
Selecteer aan het einde van het formulier de servicerol. Dit is de andere rol die eerder in de tutorial is gemaakt.
Klik op de Maak een applicatie knop.
Selecteer de Deployment Group (QA-Env) en selecteer Acties -> Nieuwe revisie implementeren.
Aangezien het ZIP-bestand zich in de S3-bucket bevindt, voert u de revisielocatie als volgt in:
S3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Klik op de Inzetten knop. De implementatie is geslaagd, zoals hieronder wordt weergegeven.
Het WAR-bestand is met succes gekopieerd naar de directory van tomcat webapps.
Blader door de applicatie-URL om ervoor te zorgen dat de applicatie met succes is geïmplementeerd.
Jenkins-integratie met AWS CodeDeploy
Zoals we in vorige 2 tutorials hebben gezien, integreert Jenkins heel goed met AWS DevOps-tools. Om Jenkins te integreren met CodeDeploy, moet de plug-in zijn geïnstalleerd. Klik hier om de CodeDeploy-plug-in te downloaden en te installeren.
Voer eerst de toegangs- en geheime sleutel voor de IAM-gebruiker in Jenkins -> Configuratie
Gevolgtrekking
Tot nu toe hebben we gezien hoe CodeDeploy kan worden gebruikt om de implementatie van een J2EE-applicatie WAR-bestand opgeslagen in S3-bucket te automatiseren naar de EC2-instantie waarop de tomcat-applicatieserver draait.
De reeks van deze drie tools, namelijk CodeCommit, CodeBuild en CodeDeploy, helpen bij de aspecten Continuous Integration en Continuous Delivery van DevOps. Naast deze 3 tools is AWS CodePipeline nog een tool die uiteindelijk helpt bij het visualiseren van de applicatie-levering.
Blijf op de hoogte van onze aanstaande tutorial voor meer informatie over de implementatie van .NET-webtoepassingen naar AWS met behulp van Elastic Beanstalk.
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- Top AWS DevOps-tools voor cloud-build en -implementatie
- Continue implementatie in DevOps
- AWS CodeCommit-zelfstudie voor DevOps-implementatie in de cloud
- Continue levering in DevOps
- Continu testen in DevOps
- Belang van kleine stijgingen van leveringen in DevOps
- AWS CodeBuild-zelfstudie: code extraheren uit Maven Build
- DevOps-automatisering: hoe wordt automatisering toegepast in de DevOps-praktijk