working aws codedeploy devops tool
Tutorial sulla distribuzione automatizzata utilizzando AWS CodeDeploy:
Nel Parte 2 degli strumenti AWS DevOps , abbiamo visto come è stato utilizzato il servizio CodeBuild per creare il progetto J2EE utilizzando Maven.
In questo tutorial, vedremo come il file WAR artefatto archiviato nel bucket S3 può essere utilizzato per la distribuzione sul server delle applicazioni Tomcat utilizzando il servizio CodeDeploy.
Controlla => Guida ideale sulla formazione DevOps
AWS CodeDeploy è il servizio di distribuzione che automatizza la distribuzione dell'applicazione nelle istanze Amazon EC2 Linux o Windows.
Questo tutorial spiegherà anche come integrare Jenkins con CodeDeploy.
Pre-requisito:
- Account con AWS preferibilmente un livello gratuito.
- Connessione internet buona e veloce.
- Regione AWS utilizzata: Asia Pacifico (Singapore).
- Istanza Amazon Linux o RHEL EC2.
- Tomcat installato sull'istanza EC2.
Nota: Per distribuire il contenuto, il repository AWS CodeCommit non è supportato per il servizio CodeDeploy. Sono supportati solo S3 e GitHub.
Cosa imparerai:
- Imposta CodeDeploy
- Avvia l'istanza Amazon Linux EC2
- Integrazione di AWS CodeDeploy con S3
- Crea applicazione CodeDeploy
- Integrazione di Jenkins con AWS CodeDeploy
- Conclusione
- Lettura consigliata
Imposta CodeDeploy
AWS CodeDeploy dovrà lavorare in particolare con due entità per accedere all'istanza EC2 e al bucket S3 in cui sono archiviati gli artefatti (file WAR) per la distribuzione. Per fornire l'autorizzazione al servizio CodeDeploy per accedere a tali IAM, è necessario configurare i ruoli. I ruoli IAM non sono definiti per gli utenti IAM ma hanno accesso solo alle entità.
# 1) Crea il file primo ruolo affinché il servizio CodeDeploy acceda all'istanza EC2.
Avvia IAM e fai clic su Ruoli-> Crea ruolo.
Sotto Servizio AWS clicca su EC2 -> Seleziona il tuo caso d'uso -> EC2 e fare clic su Avanti-> Autorizzazioni.
Seleziona il AWSCodeDeployRole in Nome criterio e fare clic su Avanti-> Rivedi.
Immettere un nome di ruolo e fare clic su Crea ruolo.
Infine, modifica la relazione di fiducia per questo ruolo per assicurarti che il servizio CodeDeploy sia accessibile in aree / endpoint globali o specifici.
miglior cloud storage per file di grandi dimensioni
Fare clic sul ruolo e aggiornare la relazione di fiducia come mostrato di seguito.
Nella policy, cambia EC2 in Codedeploy e fai clic su Aggiorna criterio di attendibilità.
Due) Crea il file secondo ruolo per l'istanza EC2 che utilizza il servizio CodeDeploy per accedere al bucket S3.
Ripeti i passaggi precedenti per questo ruolo e inserisci come di seguito:
- Vai a IAM -> Ruoli -> Crea ruolo.
- In AWS Service, seleziona EC2.
- Sotto quello Seleziona di nuovo il tuo caso d'uso e fai clic su EC2 e fai clic sul pulsante Avanti-> Autorizzazioni.
- Nella schermata del criterio di autorizzazione per allegare, selezionare AmazonS3ReadOnlyAccess e fare clic sul pulsante Avanti-> Rivedi.
- Assegna un nome al ruolo HW-Codedeploy-EC2-S3 e fare clic sul file Crea ruolo.
Entrambi i ruoli dovrebbero ora essere disponibili.
Avvia l'istanza Amazon Linux EC2
In questa sezione, ora eseguiamo il provisioning dell'istanza EC2.
Durante il provisioning dell'istanza, assicurati di selezionare il ruolo HW-Codedeploy-EC2-S3 durante Configura i dettagli dell'istanza passo. Inoltre, assicurati di aprire la porta 8080.
Insieme a questo, dovremo anche installare Agente CodeDeploy e Tomcat come server delle applicazioni che verrà utilizzato per la distribuzione della nostra applicazione.
# 1) Installa e configura l'agente CodeDeploy sull'istanza Amazon Linux
L'agente CodeDeploy aiuta nelle distribuzioni e deve essere installato in ogni istanza (ambienti) in cui verrà eseguita la distribuzione.
Accedi all'istanza Linux e scarica l'agente in base alla regione utilizzata. Nel nostro caso, è la regione di Singapore in cui si trova l'identificatore ap-sud-est-1.
Il comando per scaricare l'agente sarebbe nel formato:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Installa Tomcat sull'istanza EC2
- Per installare ed eseguire Tomcat, eseguire le seguenti operazioni nell'ordine.
yum installa tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Abilita l'utente Tomcat per il gestore applicazioni. Eseguire le modifiche come mostrato nel file /etc/tomcat7/tomcat-users.xml
- Infine, avvia il servizio Tomcat.
avvio del servizio tomcat7
- Lanciare Tomcat Web Application Manager e controlla se funziona utilizzando l'URL http: //: 8080 / manager
Integrazione di AWS CodeDeploy con S3
Come accennato nella parte 2, CodeDeploy supporta solo S3 e GitHub come repository di codice che viene utilizzato per distribuire le ultime versioni dell'applicazione. Poiché il nostro file WAR dell'applicazione è archiviato nel bucket S3, dobbiamo assicurarci che il formato mantenuto sia un file ZIP.
Ciò significa che il file WAR dovrebbe essere in un file ZIP che è ciò che è supportato dal processo di distribuzione utilizzando CodeDeploy.
- Anche AWS CLI (Command line interface) deve essere installato sull'istanza Linux. Si prega di fare riferimento al URL installare.
- Esegui i seguenti passaggi nell'istanza Linux per scaricare WAR dal bucket S3. I seguenti passaggi normalmente devono essere eseguiti sulla macchina di costruzione.
imposta AWS_ACCESS_KEY_ID =
imposta AWS_SECRET_ACCESS_KEY =
impostare 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 utilizza un file appspec.yml file che contiene le istruzioni di distribuzione per le istanze EC2. Questo file deve trovarsi nella radice di una cartella in cui viene scaricato il file WAR dell'applicazione.
Crea il file appspec.yml e la cartella degli script come mostrato di seguito:
Gli eventi vengono eseguiti nel seguente ordine durante la distribuzione.
# 1) ApplicationStop
# 2) BeforeInstall
# 3) Installa (la sezione dei file viene chiamata e il file WAR viene copiato)
# 4) ApplicationStart
- La gerarchia di cartelle utilizzata è
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
script
start_application
stop_application
install_war_file
- Contenuti degli script
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
install_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 i contenuti e carica il file ZIP nel bucket S3. Assicurati che VERSIONING sia abilitato nel bucket.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war script 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
Il file ZIP caricato nel bucket S3 è come mostrato nella schermata seguente:
Invece di eseguire i comandi uno per uno, è possibile creare uno script eseguibile e aggiungere i comandi di cui sopra ed eseguirlo ogni volta che un nuovo file WAR dell'applicazione è disponibile dalla build.
Crea applicazione CodeDeploy
L'applicazione CodeDeploy viene creata per garantire che la revisione corretta del file WAR venga distribuita nell'ambiente appropriato che è l'istanza EC2.
Avvia il servizio CodeDeploy e fai clic sul file Crea applicazione pulsante.
Immettere il nome dell'applicazione, il gruppo di distribuzione ( Esempio: QA-Env) e seleziona le istanze EC2 in esecuzione.
Alla fine del modulo seleziona il ruolo del servizio. Questo è l'altro ruolo che è stato creato in precedenza nel tutorial.
Clicca sul Crea applicazione pulsante.
Seleziona il gruppo di distribuzione (QA-Env) e seleziona Azioni -> Distribuisci nuova revisione.
Poiché il file ZIP si trova nel bucket S3, inserisci la posizione della revisione come segue:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Clicca sul Distribuisci pulsante. La distribuzione è riuscita come mostrato di seguito.
Il file WAR viene copiato correttamente nella directory delle webapps di tomcat.
Sfoglia l'URL dell'applicazione per assicurarti che l'applicazione venga distribuita correttamente.
Integrazione di Jenkins con AWS CodeDeploy
Come abbiamo visto nei 2 tutorial precedenti, Jenkins si integra molto bene con gli strumenti AWS DevOps. Per integrare Jenkins con CodeDeploy, il plugin deve essere installato. Clic Qui per scaricare e installare il plug-in CodeDeploy.
Per prima cosa inserisci l'accesso e la chiave segreta per l'utente IAM in Jenkins -> Configurazione .
Conclusione
Finora abbiamo visto come CodeDeploy può essere utilizzato per automatizzare la distribuzione di un file WAR dell'applicazione J2EE archiviato nel bucket S3 nell'istanza EC2 che esegue il server delle applicazioni tomcat.
La serie di questi tre strumenti, ovvero CodeCommit, CodeBuild e CodeDeploy, aiutano negli aspetti di Continuous Integration e Continuous Delivery di DevOps. Insieme a questi 3 strumenti, AWS CodePipeline è un altro strumento che aiuta alla fine a terminare la visualizzazione della consegna dell'applicazione.
Resta sintonizzato sul nostro prossimo tutorial per saperne di più sulla distribuzione di applicazioni Web .NET in AWS utilizzando Elastic Beanstalk.
Tutorial PREV | PROSSIMO Tutorial
Lettura consigliata
- I migliori strumenti AWS DevOps per la creazione e la distribuzione nel cloud
- Distribuzione continua in DevOps
- Tutorial di AWS CodeCommit per l'implementazione di DevOps nel cloud
- Consegna continua in DevOps
- Test continuo in DevOps
- Importanza di piccoli incrementi di consegne in DevOps
- Tutorial AWS CodeBuild: estrazione del codice da Maven Build
- Automazione DevOps: come viene applicata l'automazione nella pratica DevOps