Aus meiner persönlichen Erfahrung verlassen sich viele Unternehmen auf Jenkins und Terraform, während sie ihre Cloud-Infrastruktur automatisieren. Es ist kein Problem, wenn Sie etwas von Jenkins in der Cloud bereitstellen möchten, aber was tun, wenn Sie den Jenkins-Job aufrufen möchten, um ein Terraform-Modul als ein Servicekatalogprodukt bereitzustellen oder die Jenkins-Pipeline in einen von orchestrierten Workflow einzubinden Schrittfunktionen? Dieser Artikel beschreibt ein einheitliches Integrationsmuster, mit dem Sie Jenkins-Jobs mit benutzerdefinierten CloudFormation-Ressourcen und Step Functions-Workflows integrieren können.
Jenkins-Installation
Es gibt viele Möglichkeiten, Jenkins in der AWS-Cloud bereitzustellen.
Für den automatisierten Installationsprozess eines einzelnen Jenkins-Servers in der AWS-Cloud verwenden Sie unseren Artikel How to Install Jenkins on the Latest Ubuntu in 5 Minutes.
Sie könnten auch an Deploying Jenkins on Amazon EKS with Amazon EFS interessiert sein, wenn Sie nach einer Möglichkeit suchen, Docker-Container als Jenkins-Worker zu verwenden.
Unabhängig davon, welche Bereitstellungsmethode Sie verwenden; Als Ergebnis erhalten Sie einen Jenkins-Server, dessen Mitarbeiter IAM-Rollen in einem oder mehreren AWS-Konten übernehmen können, um erforderliche Anwendungen oder Dienste bereitzustellen.
Jetzt können wir Ihren Jenkins-Server mit CloudFormation- und Step Functions-Diensten integrieren.
Integrationsmuster
Wenn Sie diesen Artikel lesen, versuchen Sie wahrscheinlich, eines der folgenden Probleme zu lösen:
- So rufen Sie Jenkins-APIs von anderen AWS-Services auf
- So gewähren Sie Zugriff auf Ihre zentralen Jenkins-APIs von mehreren AWS-Konten
Die Lösung ist die Verwendung von AWS Lambda, SQS und SNS:
In diesem Integrationsmuster:
- AWS Lambdas Aufgabe ist es, API-Aufrufe an Jenkins mithilfe der Python-Jenkins-Bibliothek durchzuführen.
- Amazon SNS ermöglicht Ihnen den nahtlosen Empfang von Ereignissen von Step Function- und CloudFormation-Diensten.
- Amazon SQS ist verantwortlich für das Senden, Speichern und Empfangen von Nachrichten für Jenkins in beliebiger Menge, ohne dass diese Nachrichten verloren gehen, wenn Jenkins (aus irgendeinem Grund) nicht verfügbar ist.
So sieht das vollständige Architekturdiagramm für ein AWS-Konto aus:
Wenn Sie mehrere AWS-Regionen unterstützen müssen, können Sie diese Einrichtung einfach erweitern, indem Sie SNS-Themen zu den erforderlichen AWS-Regionen hinzufügen und sie direkt in die SQS-Warteschlange integrieren.
Sie können Zugriffsrichtlinien für SNS-Themen konfigurieren, um Zugriff auf das Thema von mehreren AWS-Konten und -Organisationen bereitzustellen. Dies ist sehr einfach zu konfigurieren, da Sie Konto-IDs und AWS Organizations OUs verwenden können:
- Wie erlaube ich AWS-Konten in meiner Organisation, Nachrichten zu einem Amazon SNS-Thema in meinem Konto zu veröffentlichen?
Schließlich können Sie, sobald die „Jenkins to AWS CloudFormation“-Integration vorhanden ist, benutzerdefinierte CloudFormation-Ressourcen verwenden, um Jenkins-Jobs von CloudFormation aus auszuführen. Dadurch wird die Möglichkeit freigeschaltet, Service Catalog-Produkte mithilfe von Jenkins bereitzustellen.
Zusammenfassung
In diesem Artikel haben wir eine Jenkins-Integration mit CloudFormation- und Step-Function-AWS-Services beschrieben, die es Ihnen ermöglicht, Jenkins-Jobs zum Bereitstellen von Servicekatalog-Produkten oder als Teil Ihrer Step-Functions-Workflows zu verwenden.
Wir hoffen, dieser Artikel war hilfreich für Sie. Wenn ja, helfen Sie uns bitte, es in der Welt zu verbreiten!