Kann ich für Juju/Openstack denselben Charm auf mehreren Knoten bereitstellen?

Kann ich für Juju/Openstack denselben Charm auf mehreren Knoten bereitstellen?

Ich habe einen einfachen Charm A, der aus einem einzelnen Hook (Install) besteht, der ein Bash-Skript zum Installieren von Drittanbieter-Software/-Treibern für zusätzliche Hardware enthält, die auf einigen der Knoten installiert wird.

Ich möchte, dass der Administrator den Charm auf diesen bestimmten Knoten bereitstellen kann, aber Juju beschwert sich, wenn ich denselben Charm auf einer anderen Maschine installiere.

Die Alternative ist weitaus mühsamer: Sie können sich per SSH manuell bei jedem Knoten anmelden und das Bash-Installationsskript ausführen.

Gibt es also eine Möglichkeit, denselben Juju-Charme auf mehreren Knoten zu installieren?

Antwort1

Ja, die beste Möglichkeit hierfür besteht darin, Ihren Charm zu einem „Untergeordneten“ für die Anwendungen zu machen, die auf den Maschinen ausgeführt werden, für die er relevant ist.

Ein untergeordneter Charm ist mit einem normalen Anwendungs-Charm „gekoppelt“ und wird überall dort installiert, wo dieser „normale“ Anwendungs-Charm installiert ist. Normalerweise wird er verwendet, um die App mit einer Art Nebensystem zu verbinden, beispielsweise einem Überwachungssystem. Sobald Sie die untergeordnete Beziehung hergestellt haben, wird der untergeordnete Charm jedes Mal mitgeführt, wenn die Hauptanwendung auf mehr Maschinen skaliert wird.

In Ihrem Beispiel haben Sie also wahrscheinlich eine Hauptanwendung, wie den Hypervisor-Controller „nova-compute“ in OpenStack, der auf den Maschinen läuft, auf denen Ihr Code relevant ist. Sie machen Ihren Charm zu einem untergeordneten Element und stellen ihn dann in Verbindung mit nova-compute bereit. Jetzt ist Ihr Code überall dort, wo nova-compute hingeht.

Es gibt Komplikationen, die Sie beachten sollten. Die Hauptanwendung wird zuerst installiert und DANN Ihre untergeordnete Anwendung. Wenn Ihr Code also zuerst ausgeführt werden muss, müssen Sie es anders machen. Machen Sie in diesem Fall Ihren Code zu einem primären Anwendungs-Charm und stellen Sie ihn zuerst bereit. Platzieren Sie dann die anderen Charm-Einheiten manuell auf denselben Maschinen, indem Sie „juju deploy foo --to X“ verwenden, wobei X eine Maschine ist, auf der Ihre App bereits installiert ist. Dieser letztere Ansatz ist etwas kniffliger, da Sie entscheiden müssen, wohin alles geht, und es explizit dort platzieren müssen.

verwandte Informationen