Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crea una pipeline e AMI usa CodePipeline and HashiCorp Packer
Creato da Akash Kumar () AWS
Ambiente: PoC o pilota | Fonte: DevOps | Destinazione: Amazon Machine Images (AMI) |
Tipo R: Rehost | Carico di lavoro: tutti gli altri carichi di lavoro | Tecnologie: DevOps; Modernizzazione; App Web e mobili |
Riepilogo
Avviso: non AWS CodeCommit è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Questo modello fornisce esempi di codice e passaggi per creare sia una pipeline nel cloud Amazon Web Services (AWS) utilizzando AWS CodePipeline sia una Amazon Machine Image (AMI) utilizzando HashiCorp Packer. Il modello si basa sulla pratica dell'integrazione continua, che automatizza la creazione e il test del codice con un sistema di controllo della versione basato su Git. In questo modello, si crea e si clona un archivio di codice utilizzando. AWS CodeCommit Quindi, crea un progetto e configura il tuo codice sorgente utilizzando. AWS CodeBuild Infine, creane uno AMI che venga salvato nel tuo repository.
Prerequisiti e limitazioni
Prerequisiti
Un account attivo AWS
Un Amazon Linux AMI per il lancio di istanze Amazon Elastic Compute Cloud (AmazonEC2)
HashiCorp Packer 0.12.3
o versione successiva Amazon CloudWatch Events (opzionale)
Amazon CloudWatch Logs (opzionale)
Architettura
Il diagramma seguente mostra un esempio di codice applicativo che automatizza la creazione di un file AMI utilizzando l'architettura di questo pattern.
Il diagramma mostra il flusso di lavoro seguente:
Lo sviluppatore esegue le modifiche al codice in un repository CodeCommit Git privato. Quindi, CodePipeline utilizza CodeBuild per avviare la build e aggiungere nuovi elementi pronti per la distribuzione nel bucket Amazon Simple Storage Service (Amazon S3).
CodeBuild utilizza Packer per raggruppare e impacchettare i file in base a un modello. AMI JSON Se abilitato, CloudWatch Events può avviare automaticamente la pipeline quando si verifica una modifica nel codice sorgente.
Stack tecnologico
CodeBuild
CodeCommit
CodePipeline
CloudWatch Eventi (opzionale)
Strumenti
AWS CodeBuild— AWS CodeBuild è un servizio di compilazione completamente gestito nel cloud. CodeBuild compila il codice sorgente, esegue test unitari e produce artefatti pronti per l'implementazione.
AWS CodeCommit— AWS CodeCommit è un servizio di controllo delle versioni che consente di archiviare e gestire in modo privato gli archivi Git nel AWS Cloud. CodeCommit elimina la necessità di gestire il proprio sistema di controllo del codice sorgente o di preoccuparsi della scalabilità della sua infrastruttura.
AWS CodePipeline— AWS CodePipeline è un servizio di distribuzione continua che è possibile utilizzare per modellare, visualizzare e automatizzare i passaggi necessari per il rilascio del software.
HashiCorp Packer
— HashiCorp Packer è uno strumento open source per automatizzare la creazione di immagini di macchine identiche da un'unica configurazione di origine. Packer è leggero, funziona su tutti i principali sistemi operativi e crea immagini di macchine per più piattaforme in parallelo.
Codice
Questo modello include i seguenti allegati:
buildspec.yml
— Questo file viene utilizzato CodeBuild per creare e creare un artefatto da distribuire.amazon-linux_packer-template.json
— Questo file utilizza Packer per creare un Amazon LinuxAMI.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il repository. | AWSamministratore di sistema | |
Clonare il repository. | Connect al CodeCommit repository clonando il repository. | Sviluppatore di app |
Invia il codice sorgente al repository remoto. |
| Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Creare un progetto di compilazione. |
| Sviluppatore di app, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Nome della pipeline |
| Sviluppatore di app, AWS amministratore di sistema |