Einfaches CI/CD auf Ansible Semaphore / Sudo Null IT News

CI / CD ist zu einem festen Bestandteil des Softwareentwicklungsprozesses geworden, sowohl in großen als auch in kleinen Unternehmen und Projekten, einschließlich Open Source.

Die beliebtesten CI/CD-Systeme sind GitLab und Jenkins. Beide Systeme sind leistungsstark, erweiterbar und beinhalten viele zusätzliche Funktionen. Mit Hilfe dieser Systeme können Sie CI / CD beliebiger Komplexität aufbauen.

Aber gerade bei kleinen Projekten kommt es oft vor, dass statt Funktionalität die einfachste und unkomplizierteste Lösung gefragt ist. In diesem Fall Ansible Semaphore ist eine gute Alternative zu GitHub und Jenkins.

Ansible Semaphore ist eine Webschnittstelle zum Ausführen von Ansible-Skripten mit rudimentärem CI/CD. Damit verwandeln Sie Ihr Playbook in ein einfaches CI/CD-System. Dies ist ein Open-Source-Projekt, das seit 2015 entwickelt wird und derzeit 5200 Sterne auf GitHub hat.

Die Schnittstelle von Ansible Semaphore ähnelt der von Jenkins und AWX. Die Beschreibung der Schnittstelle finden Sie in Dokumentation.

Im Folgenden wird davon ausgegangen, dass der Leser mit Ansible vertraut ist.

Da von einem kleinen Projekt ausgegangen wird, nehmen wir das Trunk-Entwicklungsmodell. Im Gegensatz zu Git-Flow geht dieses Modell von demselben Zweig für Entwicklung und Produktion aus. Dies vereinfacht CI/CD erheblich.

Unsere Pipeline wird wie folgt aussehen:

Alle Elemente des Schemas lassen sich einfach auf Ansible implementieren. Und dank Versionierung und zeitgesteuertem Aufruf von Aufgaben funktioniert das alles automatisch.

Erstellen Sie ein Repository auf GitHub

Wir brauchen zwei Playbooks und die entsprechenden Rollen dafür:

  • build.yml – um die Anwendung zu erstellen und an den S3-Speicher zu senden.

  • deploy.yml – zum Bereitstellen der Anwendung an die Server der Entwicklungs- und Produktionsumgebungen.

Hier ist der Quellcode: github.com/fiftin/ansible-semaphore-deploy-test.

Ansible Semaphore-Schnittstelle

Für diejenigen, die mit AWX vertraut sind, wird die Benutzeroberfläche klar sein. Den Rest erzähle ich kurz. Die Schnittstelle hat die folgenden Schlüsselentitäten:

  • Aufgabe – Ansible-Playbook-Ausführungsprozess.

  • Aufgabenvorlage – die Vorlage, auf deren Grundlage die Aufgabe erstellt wird.

  • Inventar – Liste der Server, für die die Aufgabe ausgeführt wird.

  • Umfeld – Umgebungsvariablen (zusätzliche Variablen in der Ansible-Terminologie).

  • Taste – SSH-Schlüssel oder Login/Passwort, das Ansible verwendet, um sich mit den Servern zu verbinden.

  • Repository – Git-Repository, in dem der Ansible-Playbook-Code gespeichert ist.

Projektaufbau

Erstelle 3 Inventar (hier sind sie):

  • Bauen – gibt an, auf welchem ​​Server die Anwendung erstellt wird.

  • Entwickler – eine Liste von Servern, auf denen die Anwendung in der Entwicklungsumgebung bereitgestellt wird.

  • Produktion – eine Liste von Servern, auf denen die Anwendung in der Produktionsumgebung bereitgestellt wird.

Lassen Sie uns 3 Umgebungen erstellen (hier sind sie): Aufbau, Entwicklung, Produktion.

Lassen Sie uns 3 Aufgabenvorlagen erstellen (hier sind sie):

  • Bauen – um die Anwendung zu erstellen und an den S3-Speicher zu senden.

  • Bereitstellen auf Dev – um die Anwendung an die Server der Entwicklungsumgebung zu liefern.

  • In der Produktion bereitstellen – um die Anwendung an die Server der Produktionsumgebung zu liefern.

Stellen wir diese einfache Webanwendung bereit: 🙂

Start

Eine Aufgabe Bauen wird automatisch ausgeführt, wenn ein neuer Commit im Repository erscheint. Erfolgreiche Builds werden in den S3-Speicher geladen.

Nach jedem erfolgreichen Build wird automatisch eine Aufgabe ausgeführt Bereitstellen auf Dev, die die Anwendung in der Entwicklungsumgebung bereitstellt. Eine Demo-Entwicklungsseite ist verfügbar unter demo-dev.ansible-semaphore.com.

Aufgabe In der Produktion bereitstellen muss manuell gestartet werden. Es liefert die Anwendung nur dann an die Produktionsumgebung, wenn sie erfolgreich in der Entwicklungsumgebung bereitgestellt wurde.

Wenn Sie installieren möchten:

Sie können mit dem oben beschriebenen Beispiel auf der Website herumspielen. demo.ansible-semaphore.com.

Similar Posts

Leave a Reply

Your email address will not be published.