Crear una canalización CodePipeline y AMI usar un HashiCorp empaquetador - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Crear una canalización CodePipeline y AMI usar un HashiCorp empaquetador

Creado por Akash Kumar () AWS

Entorno: PoC o piloto

Fuente: DevOps

Objetivo: Amazon Machine Images (AMI)

Tipo R: volver a alojar

Carga de trabajo: todas las demás cargas de trabajo

Tecnologías: modernización DevOps, aplicaciones web y móviles

Resumen

Este patrón proporciona ejemplos de código y pasos para crear una canalización en la nube de Amazon Web Services (AWS) mediante el uso de Amazon Web Services () AWS CodePipeline y una imagen de máquina de Amazon (AMI) mediante HashiCorp Packer. El patrón se basa en la práctica de integración continua, que automatiza la compilación y las pruebas de código con un sistema de control de versiones basado en Git. En este patrón, se crea y se clona un repositorio de código mediante AWS CodeCommit. A continuación, cree un proyecto y configure su código fuente mediante AWS CodeBuild. Por último, crea uno AMI que se comprometa con tu repositorio.

Requisitos previos y limitaciones

Requisitos previos 

  • Una AWS cuenta activa

  • Un Amazon Linux AMI para lanzar instancias de Amazon Elastic Compute Cloud (AmazonEC2)

  • HashiCorp Packer 0.12.3 o posterior

  • Amazon CloudWatch Events (opcional)

  • Amazon CloudWatch Logs (opcional)

Arquitectura

El siguiente diagrama muestra un ejemplo de código de aplicación que automatiza la creación de un AMI mediante la arquitectura de este patrón.

Automatice la creación de unAMI.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. El desarrollador confirma los cambios de código en un repositorio CodeCommit Git privado. A continuación, se CodePipeline utiliza CodeBuild para iniciar la compilación y añadir nuevos artefactos que estén listos para su implementación en el bucket de Amazon Simple Storage Service (Amazon S3).

  2. CodeBuild utiliza Packer para empaquetarlos y agruparlos en AMI función de una JSON plantilla. Si está habilitada, CloudWatch Events puede iniciar automáticamente la canalización cuando se produce un cambio en el código fuente.

Pila de tecnología

  • CodeBuild

  • CodeCommit

  • CodePipeline

  • CloudWatch Eventos (opcional)

Herramientas

  • AWS CodeBuild— AWS CodeBuild es un servicio de construcción en la nube totalmente gestionado. CodeBuild compila el código fuente, ejecuta pruebas unitarias y produce artefactos listos para su despliegue.

  • AWS CodeCommit— AWS CodeCommit es un servicio de control de versiones que te permite almacenar y gestionar de forma privada los repositorios de Git en la AWS nube. CodeCommit elimina la necesidad de gestionar tu propio sistema de control de código fuente o de preocuparte por escalar su infraestructura.

  • AWS CodePipeline— AWS CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para lanzar su software.

  • HashiCorp Packer: HashiCorp Packer es una herramienta de código abierto para automatizar la creación de imágenes de máquinas idénticas a partir de una configuración de fuente única. Packer es ligero, se ejecuta en todos los sistemas operativos principales y crea imágenes de máquinas para múltiples plataformas en paralelo.

Código

Este patrón incluye los siguientes archivos adjuntos:

  • buildspec.yml— Este archivo se utiliza CodeBuild para construir y crear un artefacto para su despliegue.

  • amazon-linux_packer-template.json— Este archivo usa Packer para crear un Amazon Linux. AMI

Epics

TareaDescripciónHabilidades requeridas

Cree el repositorio.

Crea un CodeCommit repositorio.

AWSadministrador de sistemas

Clonar el repositorio.

Conéctese al CodeCommit repositorio clonando el repositorio.

Desarrollador de aplicaciones

Envíe el código fuente al repositorio remoto.

  1. Crear una confirmación para añadir los archivos buildspec.yml y amazon-linux_packer-template.json a su repositorio local.

  2. Envía la confirmación de tu repositorio local al CodeCommit repositorio remoto.

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Cree un proyecto de compilación.

  1. Inicie sesión en la consola AWS de administración, abra la AWS CodeBuild consola y, a continuación, seleccione Crear proyecto de compilación.

  2. En Nombre del proyecto, introduzca el nombre de su proyecto.

  3. En Proveedor de código fuente, selecciona AWS CodeCommit.

  4. En Repositorio, seleccione el repositorio en el que desee compilar la canalización de código.

  5. Para Imagen de entorno, elija Imagen administrada o Imagen personalizada.

  6. En Operating system (Sistema operativo), elija Ubuntu.

  7. Para RunTime(s), elija Estándar.

  8. En Imagen, elija aws/codebuild/standard:4.0.

  9. En Version de la imagen, elija Utilizar siempre la imagen más reciente para esta versión del tiempo de ejecución.

  10. Para Entorno, elija Linux.

  11. Seleccione la casilla Confidencial.

  12. En Rol de servicio, seleccione Nuevo rol de servicio o Rol de servicio existente.

  13. En Especificaciones de construcción, elija Usar un archivo de especificaciones de compilación o Insertar comandos de compilación.

  14. (Opcional) En Tipo, en la sección Artefactos, seleccione Sin artefactos.

  15. (Recomendado) Para cargar los registros de salida de la compilación en Logs, CloudWatch elija registros. CloudWatch

  16. (Opcional) Para cargar los registros de salida de la compilación a Amazon S3, seleccione la casilla Registros de S3.

  17. Elija Crear el proyecto de compilación.

Desarrollador de aplicaciones, administrador AWS de sistemas
TareaDescripciónHabilidades requeridas

Nombre de canalización

  1. Inicie sesión en la consola AWS de administración, abra la AWS CodePipeline consola y, a continuación, seleccione Crear canalización.

  2. En Nombre de la canalización, especifique un nombre para la canalización.

  3. En Rol de servicio, seleccione Nuevo rol de servicio o Rol de servicio existente.

  4. Escriba un nombre para el rol en Nombre de rol.

  5. En la sección Configuración avanzada, en Tienda de artefactos, seleccione Ubicación predeterminada si desea que Amazon S3 cree un bucket y almacene los artefactos en el bucket. Para utilizar un bucket de S3 existente, elija Ubicación personalizada. Elija Next (Siguiente).

  6. En Proveedor de origen, selecciona AWS CodeCommit.

  7. En Nombre del repositorio, seleccione el repositorio que clonó anteriormente. En Nombre de rama, seleccione la rama de su código fuente.

  8. Para ver las opciones de detección de cambios, selecciona Amazon CloudWatch Events (recomendado) para iniciar la canalización o AWS CodePipelinecomprobar periódicamente si hay cambios. Elija Next (Siguiente).

  9. En Build provider (Proveedor de compilación), elija AWS CodeBuild.

  10. Para el nombre del proyecto, elige el proyecto de compilación que creaste en la epopeya Crear un CodeBuild proyecto para la aplicación.

  11. Elija sus opciones de compilación y después elija Siguiente.

  12. Seleccione Omitir la fase de implementación.

  13. Seleccione Create pipeline.

Desarrollador de aplicaciones, administrador AWS de sistemas

Recursos relacionados

Conexiones

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip