Desde mi experiencia personal, muchas empresas confían en Jenkins y Terraform mientras automatizan su infraestructura en la nube. No hay problema si desea implementar algo de Jenkins en la nube, pero qué hacer si desea llamar al trabajo de Jenkins para implementar un módulo de Terraform como un producto de catálogo de servicios o incluir la canalización de Jenkins en un flujo de trabajo orquestado por ¿Funciones escalonadas? Este artículo describirá un patrón de integración unificado que le permitirá integrar trabajos de Jenkins con recursos personalizados de CloudFormation y flujos de trabajo de Step Functions.
Instalación de Jenkins
Hay muchas formas de implementar Jenkins en la nube de AWS.
Para el proceso de instalación automatizado de un único servidor Jenkins en la nube de AWS, utilice nuestro artículo Cómo instalar Jenkins en el último Ubuntu en 5 minutos.
También puede interesarle Implementar Jenkins en Amazon EKS con Amazon EFS si está buscando una forma de utilizar contenedores Docker como trabajadores de Jenkins.
Sea cual sea el método de implementación que utilice; como resultado, obtendrá un servidor Jenkins cuyos trabajadores pueden asumir funciones de IAM en una o varias cuentas de AWS para implementar las aplicaciones o los servicios necesarios.
Ahora, podemos integrar su servidor Jenkins con los servicios CloudFormation y Step Functions.
Patrón de integración
Si está leyendo este artículo, probablemente esté tratando de resolver uno de los siguientes problemas:
- Cómo llamar a las API de Jenkins desde otros servicios de AWS
- Cómo proporcionar acceso a sus API centrales de Jenkins desde varias cuentas de AWS
La solución es utilizar AWS Lambda, SQS y SNS:
En este patrón de integración:
- AWS Lambda el rol es hacer llamadas API a Jenkins usando la biblioteca python-jenkins.
- Amazon SNS le permite recibir eventos de los servicios Step Function y CloudFormation sin problemas.
- SQS de Amazon es responsable de enviar, almacenar y recibir mensajes para Jenkins en cualquier volumen sin perder esos mensajes si Jenkins (por cualquier motivo) deja de estar disponible.
Así es como se ve el diagrama de arquitectura completo para una cuenta de AWS:
Si necesita admitir varias regiones de AWS, puede ampliar fácilmente dicha configuración colocando temas de SNS en las regiones de AWS requeridas e integrándolos directamente en la cola de SQS.
Puede configurar políticas de acceso a temas de SNS para proporcionar acceso al tema desde varias cuentas y organizaciones de AWS. Es muy fácil de configurar porque puede usar ID de cuenta y unidades organizativas de AWS Organizations:
- ¿Cómo permito que las cuentas de AWS de mi organización publiquen mensajes en un tema de Amazon SNS en mi cuenta?
Finalmente, tan pronto como la integración de "Jenkins a AWS CloudFormation" esté en su lugar, puede usar los recursos personalizados de CloudFormation para ejecutar trabajos de Jenkins desde CloudFormation. Eso desbloquea la capacidad de implementar productos de Service Catalog usando Jenkins.
Resumen
En este artículo, describimos una integración de Jenkins con los servicios de AWS CloudFormation y Step Function, que le permite usar trabajos de Jenkins para implementar productos de Service Catalog o como parte de sus flujos de trabajo de Step Functions.
Esperamos que este artículo haya sido útil para usted. Si es así, ¡ayúdanos a difundirlo por todo el mundo!