Wie koexistiert Juju mit Chefkoch und geht den Automatisierungsprozess „einen Schritt weiter“?

15

Aus diesem Beitrag geht hervor, dass sich Juju auf einer anderen Ebene befindet als Chef Server. Juju sitzt auf der Orchestrierungs- oder Serviceebene , während Chefkoch mehr auf dem einzelnen Server oder der Konfigurationsebene sitzt .

Auf einer der wichtigsten Juju-Seiten von Canonical heißt es, dass Juju so konzipiert ist, dass es mit Tools wie Chef und Puppet "koexistiert", wodurch der Prozess "einen Schritt weiter" geht. Ich habe in den letzten Wochen das Internet zu diesem Thema durchsucht und kann keine gute Erklärung dafür finden , wie ein Tool wie Chef mit Juju koexistieren wird .

Also, um die übergeordnete Frage im Titel aufzuschlüsseln: (besonderes Interesse an Juju in Zusammenarbeit mit einem Chef Server)

  • Was ist ein Beispiel für einen Charme "geschrieben in Chef"? Ist es einfach ein in Bash geschriebener Charme, der dann den chef-soloBefehl aufruft ? Wenn ja, kann ein Charm den chef-clientBefehl aufrufen , um mit einem Chef Server zusammenzuarbeiten?
  • Wo ist die Überschneidung zwischen Juju und Chef? Zum Beispiel hat der Apache2-Charme einen config-changedHaken, an dem Konfigurationsänderungen vorgenommen werden, die in der Chef-Welt durch Anwenden einer Vorlagendatei in einem Rezept stattfinden würden. Wenn ein Juju-Zauber mit einem Kochbuch für die Bereitstellung eines Apache2-Dienstes (Clusters) zusammenarbeiten würde, müsste fast der Eindruck entstehen, dass ein "Apache2-Chef" -Zauber geschrieben werden muss, damit Sie die Aufgaben trennen können. In diesem Fall wäre der Apache2-Charm im Charm Store weniger als hilfreich.
  • Wenn Sie Chef-Rollen auf Knoten (Service-Einheiten) angewendet haben, die von Juju bereitgestellt / verwaltet werden, und Ihr Systemadministrator beschließt, die Firewall-Regeln für eine bestimmte Serverrolle zu ändern, und dies in der Chef-Rolle tut, wird Juju diese Änderungen jemals überschreiben?
  • Kann Juju einfacher ein Chef Server Wrapper sein, wie Ironfan ?

Ich betrachte Chef Server als das Wie, wohingegen Juju das Wie kann , aber auch was auf den Tisch bringt . Dies bedeutet, dass der tatsächliche aktuelle Status von Diensten und Maschinen abgefragt und bearbeitet werden kann. Dies ist in Chef Server nicht möglich. Mein Ziel ist es, Jujus Sensibilisierungs- und Service-Orchestrierungsfunktion in eine von Chef Server verwaltete Infrastruktur zu integrieren.

Es scheint fast so, als müssten eine ganze Reihe von Reizen geschrieben werden, bei denen alle vom Chef verwalteten Aufgaben / Konfigurationsinformationen weggelassen werden.

Ich würde gerne Abwägungen von jemandem bei Canonical (wie Jorge Castro) und von Opscode (wie A. Jacob oder J. Timberman) hören.

Ian D. Rossi
quelle

Antworten:

13

tolle Fragen!

der tl; dr

Ich möchte Ihre Frage (n) anhand einiger Kommentare aufschlüsseln ... Zunächst einige allgemeine Ansätze zur Integration von Chefkoch und Juju:

  • Charms Hooks können vorhandene Kochrezepte verwenden, die auf Serviceeinheiten im Solo-Stil ausgeführt werden (empfohlen).

  • juju-Serviceeinheiten registrieren sich bei einem vorhandenen Chef-Server unter Verwendung eines Chef-Node-Subordinate-Service

Diese Ideen wurden für den Koch noch nicht umgesetzt / getestet, aber es gibt Puppenäquivalente.

die ... ähm ... nicht so kurze Antwort

Im Folgenden sind zwei Ansätze zur Integration von Chefkoch und Juju aufgeführt:

Juju als Platzhirsch

Hier läuft Juju die Show. Der größte Wert, den juju bietet, ist die Ereigniskoordination während des verteilten Konfigurationsmanagements ... daher der Spitzname "Service Orchestration". Juju-Charms bestehen aus Hooks, die von juju bei der Koordination des Service-Managements "zum richtigen Zeitpunkt" aufgerufen werden. Die Implementierung dieser Haken ist ziemlich offen. Es sind Shell-Skripte, Quellcode, Puppenmanifeste oder ... Kochrezepte.

Juju zerlegt Teile jeder Dienstkonfiguration in:

  • "installation" .. die Bits, die für die Installation eines bestimmten Dienstes auf einem Knoten spezifisch sind

  • "relation" .. die Konfigurationsbits, die benötigt werden, um diesen Dienst mit einem anderen Dienst in Beziehung zu setzen

Der Schlüssel zur Verwendung von Kochrezepten als Hook-Implementierungen ist genau dies ... Sie müssen sicherstellen, dass die Rezepte, die Sie verwenden, diese Trennung von Bedenken respektieren. Ansonsten steht der Verwendung von handelsüblichen Kochbüchern nichts mehr im Wege. Sie können vorhandene Rezepte nutzen, für deren Entwicklung Sie Zeit / Geld aufgewendet haben. Sie müssen nur sicherstellen, dass Sie die relationsspezifischen Dinge getrennt von den installationsspezifischen Dingen aufrufen können.

Wir brauchen einige Beispiele dafür, aber ich denke, es wird populär sein, dass b / c chef ein großartiges dsl, ein großartiges Template-Tool, hat und viel angenehmer zu benutzen ist als bash beim Schreiben einer komplexen Konfiguration. Für die einfache Konfiguration sind Kochrezepte ein wenig übertrieben, daher ist diese Integrationsmethode so ziemlich das Beste aus beiden Welten ... und hat ernsthafte Fortschritte zu verzeichnen.

Chefkoch als Platzhirsch

Die Idee dabei ist, Juju-Services in eine vorhandene von Chef-Server verwaltete Infrastruktur zu integrieren. Dazu müssten Sie einen untergeordneten Charme für den Chefknoten schreiben. Dieser untergeordnete Dienst würde primären Juju-Diensten zugeordnet und diese Dienste effektiv als Knoten (in bestimmten Rollen) beim Chef-Server registrieren. Subs können während des Starts eines Juju-Dienstes oder zu einem späteren Zeitpunkt während des gesamten Lebenszyklus eines jeden Dienstes angehängt werden.

Ich denke, das wäre dem Puppet-Node-Sub ziemlich ähnlich. Alle notwendigen Schlüssel, Rollen usw. würden über config dem Chefknoten untergeordneter Charme angegeben. Ich würde dort anfangen. Ein ausgefeilterer Ansatz wäre es, wenn der Chef-Node-Sub den primären Dienst, an den er angeschlossen ist, und seinen Chef-Server abfragt, um die Rollen dynamisch zu bestimmen. Dies wäre jedoch etwas schwieriger, als sie nur in der Konfiguration für den Sub anzugeben.

Meinungen

Ich würde auf jeden Fall Methode 1 oben empfehlen, wenn möglich. Die Koordination Schicht auf Having oben der Konfigurations - Tool wird wahrscheinlich auch langfristige Arbeit. Unnötig zu erwähnen, dass reale Infrastrukturen für einen bestimmten Zeitraum eine Kombination oder Variation beider Ansätze darstellen können, insbesondere während der Migration. Die geplante Koexistenz mit Methode 2 würde wahrscheinlich nur funktionieren, wenn die von beiden Tools verwalteten Komponenten rechtwinklig zueinander stehen. Ich weiß nicht genau, wie das aussehen würde. Vielleicht verwalten Juju und Chefkoch getrennte, relativ entkoppelte Dienste? Ich vermute, es könnte gut funktionieren, wenn Juju die primären Dienste verwaltet und Chefkoch mehr Infrastrukturaspekte verwaltet. Keine Ahnung. Das ist allerdings eine etwas längere Diskussion :)

Randnotiz ... Sie können auch juju verwenden, um Chef-Server selbst zu verwalten ... sogar große komplexe mehrstufige Chef-Server-Installationen. Ich habe mir den Charme des Chef-Servers in letzter Zeit nicht angesehen, aber wenn es derzeit nicht um die Aufteilung und Trennung von Diensten geht, dann kann es mit Sicherheit gemacht werden.

Ich würde gerne weitere Beispiele für beide oben genannten Arten der Integration von Köchen sehen ... es steht schon eine Weile auf meiner Wunschliste / ToDo-Liste, muss aber noch hoch genug priorisiert werden, um fertig zu werden ... bitte helfen Sie, wenn du bist interessiert!

ok, das ist ein ordentliches Stück Rambling:) ... lass uns da anfangen, dann können wir in nachfolgenden Kommentarblöcken näher darauf eingehen.

m_3
quelle
tolles Zeug hier. "Ich vermute, dass es gut funktionieren könnte, wenn Juju die primären Dienste verwaltet und Chefkoch mehr Infrastrukturaspekte verwaltet." Das interessiert mich wirklich, da wir den gleichen Verdacht teilen. Wie Sie bereits sagten, eignen sich DSL und Vorlagen von Chefkoch hervorragend für die Konfiguration. Es gibt jedoch noch andere Aspekte von Chef Server (Datentaschen), die Sie bei Ihrer ersten Methode nur schwer loslassen können. Juju, der auf Service-Level ist, sollte der beste sein, aber ich denke, er sollte es Chef ermöglichen, das zu tun, was er am besten im Chef Server-Modell kann. Muss sowohl für Entwickler als auch für Administratoren funktionieren. Aber vielleicht brauchen Sie keinen Chef Server.
Ian D. Rossi