Ist Ansible ein Ersatz für ein CI-Tool wie Hudson / Jenkins?

72

Vor kurzem haben wir in unserem Unternehmen beschlossen, Ansible für die Bereitstellung und kontinuierliche Integration zu verwenden. Als ich anfing, Ansible zu verwenden, fand ich keine Module zum Erstellen von Java-Projekten mit Maven oder Module zum Ausführen von JUnit-Tests oder JMeter-Tests.

Ich bin also in einem zweifelhaften Zustand: Möglicherweise verwende ich Ansible falsch.

Wenn ich mir Jenkins anschaue, kann es Dinge wie Erstellen, Ausführen von Tests und Bereitstellen ausführen. Das Fehlende in Hudson ist das Erstellen / Löschen einer Instanz in Cloud-Umgebungen wie AWS.

Für welche Zwecke müssen wir Ansible / Jenkins im Allgemeinen verwenden? Muss ich für CI eine Kombination aus Ansible und Jenkins verwenden?

Bitte werfen Sie etwas Licht auf die korrekte Verwendung von Ansible.

Ganesh P.
quelle

Antworten:

126

Erstens sind Jenkins und Hudson im Grunde das gleiche Projekt. Ich werde es unten als Jenkins bezeichnen. Siehe Wie man zwischen Hudson und Jenkins wählt? , Hudson vs Jenkins im Jahr 2012 und Was ist der bemerkenswerteste Unterschied zwischen Jenkins und Hudson aus Anwendersicht? für mehr.

Zweitens ist Ansible nicht als kontinuierliche Integrations-Engine gedacht. Es werden (im Allgemeinen) keine Git-Repos abgefragt und Builds ausgeführt, die auf vernünftige Weise fehlschlagen.

Wann kann ich einfach Jenkins verwenden?

Wenn Ihre Maschinenumgebung und Ihr Bereitstellungsprozess sehr einfach sind (z. B. Heroku oder Eisen, das außerhalb Ihres Teams konfiguriert ist), reicht Jenkins möglicherweise aus. Sie können ein benutzerdefiniertes Skript schreiben, das eine Bereitstellung als letzten Erstellungsschritt (oder als verketteten Schritt) ausführt.

Wann kann ich einfach Ansible verwenden?

Wenn Sie nur "bereitstellen" müssen, ohne erstellen / testen zu müssen, reicht Ansible möglicherweise aus. Sie können beispielsweise eine Bereitstellung über die Befehlszeile oder über Ansible Tower ausführen. Dies ist ideal für kleine Projekte, statische Sites usw.

Wie arbeiten sie zusammen?

Eine gute Kombination ist die Verwendung von Jenkins zum Erstellen, Testen und Speichern von Artefakten. Fügen Sie einen Schritt hinzu, um Ansible oder Ansible Tower aufzurufen und den eigentlichen Bereitstellungsprozess durchzuführen. Dadurch kann Ansible die Maschinenkonfiguration und Jenkins den CI-Prozess übernehmen.

Was sind die Alternativen zu Jenkins?

Ich empfehle dringend Thoughtworks Go (nicht zu verwechseln mit Go the language) anstelle von Jenkins. Andere sind CruiseControl, TravisCI und Integrity.

tedder42
quelle
20

Ansible ist nur eine "verherrlichte SSH-Schleife". CI ist nicht nur die Software, die ausgeführt wird, sondern der gesamte Prozess, wie mit Erfolg und Misserfolg umgegangen wird, wer benachrichtigt wird und wie die Änderung in die Zielversionskontrolle übernommen wird.

Wenn wir uns nur auf die Software konzentrieren, ist CI ein reaktiver Scheduler, der durch Codeänderungen ausgelöst wird und eine typische Sequenz von "Schritten" zum Erstellen, Validieren, Freigeben und Bereitstellen auslöst.

In Bezug auf Software ist Ansible ohne zusätzliches "Zuckern" nur ein Toolkit zum Ausführen von Dingen. Dies können genau diese Schritte sein, aber es ist kein CI. Dem Ansible (ohne Turm) fehlt diese reaktive Natur völlig.

Wenn Sie Ansible mit CI heiraten möchten, können Sie.

Ansible Tower ist ein sehr Ansible-orientierter Scheduler, aber wenn Sie CI-Software benötigen, brauchen Sie diese meiner Meinung nach nicht unbedingt. Jede CI-App, die Shell-Skripte ausführen kann, kann Ansible-Playbooks starten.

Im Gegensatz zu Ansible Tower können CI-Tools jedoch Testberichte aller Test-Frameworks anzeigen, Benachrichtigungen auslösen usw.

Ansible Tower kann in einer komplexen Umgebung mit vielen Gruppen, die Ansible-Code berühren, sinnvoll sein ... Die Wahrheit ist, dass ich keinen einzigen wirklichen Grund gesehen habe, dafür zu bezahlen. Aber wenn einem Manager die Weboberfläche gefallen hat, kann nichts die Logik "aber andere verwenden sie" aushalten.

Ich vermute, das Konzept des Ansible Tower war eine Reaktion auf das Marionettenunternehmen.

:) :)

mvk_il
quelle
Update: Irgendwann haben RedHat-Leute Teile von Tower geöffnet und es gibt jetzt ein Projekt "AWX". Es kann wahrscheinlich verwendet werden, um CI-ish-Funktionalität zu implementieren.
mvk_il