Automazione della distribuzione del codice con AWS CodeCommit e CodeDeploy
Pubblicato: 2022-03-25Come sviluppatore web, il tuo lavoro può includere diverse attività complesse come l'automazione della distribuzione del codice sui server di produzione o se lavori in un gruppo e affronti problemi durante il caricamento del codice su un sito Web live, allora questo post sul blog è una soluzione per superare tutto questo questioni.
Quando usi FTP, devi aver sovrascritto il codice del tuo co-sviluppatore, un problema abbastanza comune e che si verifica con la maggior parte di noi. Questa guida ti mostrerà l'automazione della distribuzione del codice con i servizi AWS CodeCommit, CodeDeploy e Pipeline.
La panoramica tecnologica:
- AWS CodeCommit : utilizzeremo CodeCommit per mantenere i nostri repository (Contenuto Web/File di codice) che conterranno tutti i file di progetto e i log di commit.
- Server EC2 : Useremo EC2 come nostro server di produzione, conterrà il sito live e il codice per i visitatori del tuo sito web.
- AWS CodeDeploy : conterrà l'applicazione per pubblicare il codice sul server EC2. Creeremo anche un gruppo di distribuzione che conterrà il nome/tag dell'istanza EC2 di destinazione in cui desideriamo pubblicare il nostro codice.
- Pipeline : selezioneremo CodeCommit come fonte e CodeDeploy come fase di distribuzione. Pertanto, ogni volta che vengono rilevate modifiche al codice in CodeCommit, la pipeline verrà eseguita e le modifiche al codice verranno inviate a CodeDeploy (istanza EC2).
Automazione della distribuzione del codice: spiegata in dettaglio :
Creazione di un utente IAM e Git per l'automazione della distribuzione del codice
Dovremo prima creare un utente IAM e un utente Git che apporterà le modifiche al codice e le pubblicherà sul server di distribuzione.
- Crea un utente IAM
- Consenti l'accesso a : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Troverai questa opzione nella scheda "Allega direttamente le politiche esistenti".
- Ora, accedi con questo utente IAM.
- Fai clic su Credenziali di sicurezza nell'angolo in alto a destra.
- Fai clic sulla scheda delle credenziali di AWS CodeCommit .
- Nella sezione "Credenziali HTTPS Git per AWS CodeCommit", fai clic sul pulsante Genera credenziali .
- Ora, copia nome utente e password in un luogo sicuro. Questo sarà il nome utente e la password principali del tuo Git per modificare il codice push/pull.
Creazione di un repository in CodeCommit
Ora creiamo un repository che conterrà il tuo codice esatto.
- Vai a CodeCommit Dashboard dall'utente IAM.
- Nell'angolo in alto a destra, seleziona la regione in cui desideri creare il tuo repository.
- Fare clic su Crea repository, assegnargli un nome, una descrizione e fare clic su crea.
- Nella sezione " Clone the repository ", vedrai un URL del tuo repository. Salvalo in un luogo sicuro. Sembrerà : https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
Caricamento del file di progetto per la prima volta
- Apri il prompt dei comandi del tuo sistema locale in cui risiede il tuo codice originale.
- Nel prompt dei comandi, vai al percorso in cui risiede il tuo codice.
- Ora, esegui i seguenti comandi per eseguire il push del codice nel repository AWS per la prima volta:
git init
git config –local init.defaultBranch main
git config –global init.defaultBranch main
git aggiungi . ## questo impegnerà tutti i file del progetto
git commit –m "Commissione iniziale"
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- Crea un'istanza EC2 e installa l'agente CodeDeploy
- Crea un ruolo di istanza
- Apri la tua console AWS IAM.
- Vai alla scheda Ruoli >> Crea ruolo.
- In Seleziona il tipo di entità attendibile, seleziona Servizio AWS . In "Scegli un caso d'uso", seleziona EC2 . In "Seleziona il tuo caso d'uso", scegli EC2. Scegli Avanti: Autorizzazioni .
- Cerca e seleziona la policy denominata AmazonEC2RoleforAWSCodeDeploy , quindi scegli Next: Tags .
- Scegli Avanti: Rivedi. Immettere un nome per il ruolo (ad esempio EC2InstanceRole ) e fare clic su Crea .
- Crea un'istanza EC2
- Vai alla console EC2. Fare clic su Avvia istanza.
- Scegli un'immagine macchina Amazon (AMI), individua Amazon Linux 2 AMI (HVM), Tipo di volume SSD e quindi scegli Seleziona. (Questa AMI è denominata "Livello gratuito idoneo" e può essere trovata in cima all'elenco.)
- Scegli una pagina Tipo di istanza, scegli il tipo t2.micro idoneo per il livello gratuito come configurazione hardware per la tua istanza, quindi scegli Avanti: Configura dettagli istanza .
- Configura la pagina Dettagli istanza, procedi come segue:
- In Numero di istanze, inserisci 1 .
- In Assegna automaticamente IP pubblico, scegli Abilita .
- Nel ruolo IAM, scegli il ruolo IAM che hai creato nella procedura precedente (ad esempio, EC2InstanceRole ).
- Espandi Dettagli avanzati e, nel campo Dati utente, inserisci quanto segue:
#!/bin/bash
yum -y aggiornamento
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-utente
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./installa automaticamente
- Lascia invariato il resto degli elementi nella pagina Passaggio 3: configurazione dei dettagli dell'istanza. Scegli Avanti: Aggiungi spazio di archiviazione .
- Lascia invariata la pagina Passaggio 4: Aggiungi spazio di archiviazione, quindi scegli Avanti: Aggiungi tag.
- Scegli Aggiungi tag . In Chiave, immetti Nome e in Valore, immetti MyCodePipelineDemo . Scegli Avanti: Configura gruppo di sicurezza. Successivamente, crei un'applicazione CodeDeploy che distribuisce l'applicazione di esempio a questa istanza. CodeDeploy seleziona le istanze da distribuire in base ai tag allegati alle istanze.
- Configura la pagina del gruppo di sicurezza, procedi come segue:
- Accanto ad Assegna un gruppo di sicurezza , seleziona Crea un nuovo gruppo di sicurezza .
- Nella riga per SSH , in Sorgente , scegliere Il mio IP .
- Scegli Aggiungi regola , scegli HTTP , quindi in Sorgente , scegli Il mio IP
- Scegli Rivedi e avvia.
- Nella pagina Esamina avvio istanza , scegli Avvia. Quando viene richiesta una coppia di chiavi, seleziona " Procedi senza una coppia di chiavi" .
- Scegli Visualizza istanze per chiudere la pagina di conferma e tornare alla console.
- Puoi visualizzare lo stato dell'avvio nella pagina Istanze . Quando avvii un'istanza, il suo stato iniziale è "in sospeso". Dopo l'avvio dell'istanza, il suo stato cambia in "in esecuzione" e riceve un nome DNS pubblico. (Se la colonna DNS pubblico non viene visualizzata, scegliere l' icona Mostra/Nascondi , quindi selezionare DNS pubblico .)
- Potrebbero essere necessari alcuni minuti prima che l'istanza sia pronta per la connessione ad essa. Visualizza le informazioni nella colonna Controlli di stato per vedere se la tua istanza ha superato i controlli di stato.
Crea un'applicazione in CodeDeploy
- Creare un ruolo del servizio CodeDeploy
- Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/
- Dal dashboard della console, scegli Ruoli .
- Scegli di creare ruolo .
- In Seleziona il tipo di entità attendibile, seleziona Servizio AWS . In Scegli un caso d'uso , seleziona CodeDeploy . In Seleziona il tuo caso d'uso, scegli CodeDeploy. Scegli Avanti: Autorizzazioni. La policy gestita AWSCodeDeployRole è già collegata al ruolo.
- Scegli Avanti: Tag e Avanti: Revisione.
- Immettere un nome per il ruolo (ad esempio CodeDeployRole), quindi scegliere Crea ruolo.
- Crea un'applicazione in CodeDeploy
- Aprire la console CodeDeploy all'indirizzo https://console.aws.amazon.com/codedeploy
- Se la pagina Applicazioni non viene visualizzata, nel menu scegliere Applicazioni .
- Scegli di creare un'applicazione .
- Nel nome dell'applicazione, inserisci MyDemoApplication .
- In Compute Platform, scegli EC2/On-premises .
- Scegli di creare un'applicazione.
- Crea un gruppo di distribuzione in CodeDeploy
- Nella pagina in cui viene visualizzata l'applicazione, scegli Crea gruppo di distribuzione .
- Nel nome del gruppo di distribuzione, immetti MyDemoDeploymentGroup .
- Ruolo in servizio, scegli il ruolo del servizio che hai creato in precedenza (ad esempio, CodeDeployRole ).
- In Tipo di distribuzione, scegli Sul posto .
- In Configurazione ambiente , scegli Istanze Amazon EC2 . Nel campo Chiave, inserisci Nome . Nel campo Valore, inserisci il nome che hai usato per taggare l'istanza (ad esempio, MyCodePipelineDemo ).
- In Configurazione distribuzione, scegli CodeDeployDefault.OneAtaTime .
- In Load Balancer, assicurati che Abilita bilanciamento del carico non sia selezionato . Non è necessario configurare un sistema di bilanciamento del carico o scegliere un gruppo target per questo esempio.
- Espandi la sezione Avanzate. In Allarmi, se sono elencati degli allarmi, scegliere Ignora configurazione allarmi.
- Scegli di creare gruppo di distribuzione.
Crea una pipeline
- Crea una pipeline
- Accedi alla Console di gestione AWS e apri la console CodePipeline all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home
- Apri la console CodePipeline su https://console.aws.amazon.com/codepipeline/
- Seleziona Crea pipeline .
- Nel passaggio 1 : seleziona le impostazioni della pipeline, nel nome della pipeline, inserisci MyFirstPipeline .
- Nel ruolo del servizio, scegli il nuovo ruolo del servizio per consentire a CodePipeline di creare un ruolo del servizio in IAM.
- Lascia le impostazioni in Impostazioni avanzate sui valori predefiniti, quindi seleziona Avanti.
- Nel passaggio 2 : aggiungi la fase di origine, in Provider di origine, seleziona CodeCommit .
In Repository name, seleziona il nome del repository CodeCommit creato nel passaggio 1: Crea un repository CodeCommit. In Nome ramo, scegli principale, quindi seleziona Passaggio successivo. - Dopo aver selezionato il nome del repository e il ramo, un messaggio visualizza la regola Amazon CloudWatch Events da creare per questa pipeline.
- Sotto le opzioni "Rilevamento modifiche", lascia le impostazioni predefinite. Ciò consente a CodePipeline di utilizzare Amazon CloudWatch Events per rilevare le modifiche nel repository di origine.
- Seleziona Avanti .
- Nel passaggio 3 : Aggiungi fase di creazione, seleziona Ignora fase di creazione , quindi accetta il messaggio di avviso scegliendo Ignora di nuovo . Seleziona Avanti .
Nota : in questo tutorial, stai distribuendo codice che richiede un servizio senza build, quindi puoi saltare questo passaggio. Tuttavia, se il tuo codice sorgente deve essere compilato prima di essere distribuito alle istanze, puoi configurare CodeBuild in questo passaggio.
- Nel passaggio 4 : aggiungere la fase di distribuzione, in provider di distribuzione, selezionare CodeDeploy .
Nel nome dell'applicazione, seleziona MyDemoApplication . Nel gruppo di distribuzione, seleziona MyDemoDeploymentGroup , quindi seleziona Passaggio successivo . - Nel passaggio 5 : rivedere le informazioni e quindi selezionare Crea pipeline .
- La pipeline viene avviata dopo la creazione. Scarica il codice dal tuo repository CodeCommit e crea una distribuzione CodeDeploy nell'istanza EC2. Puoi visualizzare i messaggi di avanzamento, "successo" e "fallimento" mentre l'esempio CodePipeline distribuisce la pagina Web all'istanza Amazon EC2 nella distribuzione CodeDeploy.
Ora sei pronto! Vai a Distribuzione ⇒ Distribuzioni. Verranno visualizzati i registri di tutte le distribuzioni riuscite e di quelle non riuscite.
Per verificare le modifiche sul sito, apri la tua istanza EC2, cerca il tuo DNS pubblico, che apparirà come: http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .
Una volta che lo sfogli, vedrai le tue pagine live.
Hai completato con successo l'automazione della distribuzione del codice. Ora puoi inviare nuove modifiche al codice al tuo repository e pubblicarle automaticamente sul tuo sito. Se riscontri ancora problemi, sentiti libero di commentare qui.