Ich stelle fest, dass ich für eine Reihe meiner Clients ständig nahezu identische Server und VPS einrichte, was sehr zeitaufwändig sein kann. Oft ist das einzige, was sich zwischen den einzelnen Bereitstellungen ändert, die unterschiedliche Website, die bereitgestellt werden soll. Gibt es eine einfache Möglichkeit, all dies zu automatisieren und die langweilige Monotonie der Einrichtung von 56 identischen Servern in Kauf zu nehmen?
Die Server, die ich bisher bereitgestellt habe, waren nur Ubuntu, aber es ist möglich, dass ich anfange, andere Linux-Betriebssysteme oder sogar Windows zu verwenden. Bisher habe ich mir Capistrano angeschaut, aber es scheint sich darauf zu konzentrieren, kleine Ruby-Programme zu schreiben, mit denen ich den Job machen kann, und ich habe überhaupt keine Kenntnisse
quelle
Antworten:
Puppet klingt perfekt für das, was Sie versuchen, mit dem Vorbehalt, dass Windows derzeit nicht unterstützt wird.
In Ihrem Fall würden Sie einen Serverknoten in Bezug auf alle Pakete definieren, die auf den Maschinen identisch sind. Anschließend definieren Sie die einzelnen Hosts als Knoten, die vom Server erben, und richten die spezifischen eindeutigen Elemente dafür ein.
Puppet ist deklarativ - es erlaubt Ihnen, Ihre Kisten in Bezug auf die Ressourcen zu beschreiben, die jede Kiste haben sollte. Also, wenn Sie wollen
ssh
- Sie schreiben eine Klasse für diese Ressource - und innerhalb der Klasse können Sie eine Logik darüber einfügen, wie ssh unter FreeBSD und Ubuntu etwas anders heißt. Es kann auchyum
in Redhat,apt-get
Debian-basierten Distributionen undports
in BSDs verwendet werden. Jetzt haben Sie in Ihrem Serverknoten nur eine Zeile wieinclude ssh
- und Puppet macht das Richtige und setzt SSH auf den Computer, ohne dass Sie sich daran erinnern müssen, ob es sich um Ubuntu, Redhat oder FreeBSD handelt.Das Schöne ist, dass alle Server-Inhalte an einem Ort gespeichert sind - und wenn Sie zu irgendeinem Zeitpunkt die Serverknotendefinition ergänzen, werden ALLE Computer ihre Konfiguration entsprechend aktualisieren.
Im Moment verwalte ich nur drei Boxen mit Puppet - aber es hat sich bereits ausgezahlt. Nachdem wir eine Woche damit verbracht hatten, eine Box für die Stimulus-Präsentation in einem Experiment einzurichten, stellte sich heraus, dass der Grafikkartentreiber in der von mir verwendeten Ubuntu-Version (8.04) zu alt war. Ich musste das neueste Ubuntu (9.04) installieren, aber danach musste ich nur noch apt-get und run puppet - und alles, was ich eine Woche lang eingerichtet hatte, wurde wiederhergestellt.
Puppet hat zwar eine gewisse Lernkurve, aber ich habe es erfolgreich vermieden, Ruby zu lernen - ich weiß, dass ich es verwende, da Puppet so geschrieben ist - aber bisher war es mir gelungen, nur die Beispiele in zu modifizieren die Dokumentation und die Rezepte im Wiki . Ein weiterer Nachteil ist, dass Puppen beim ersten Mal etwas länger brauchen, um Dinge zu tun. Der Vorteil ist, dass alles, was Sie an all Ihren Maschinen ändern, an einem Ort aufbewahrt wird - es ist üblich, Ihre Puppenkonfiguration in einem Versionskontrollsystem zu behalten -, sodass Sie immer zurückblicken und sehen können, wie Sie Server in der Vergangenheit eingerichtet haben - oder einige erfolglose Änderungen rückgängig machen.
Zum Schluss ist hier ein kurzes Video , das eine einfache Marionettendemo zeigt, mit der ich schnell angefangen habe.
quelle
Wir verwenden Cobbler und Puppet für die Build- und Konfigurationsautomatisierung von realen und virtuellen Maschinen.
Cobbler verknüpft DHCP, PXE-Start und Kickstart, um die Bereitstellung so einfach wie möglich zu gestalten. Fügen Sie lediglich ein Computerprofil hinzu und drücken Sie die Ein- / Aus-Taste. Für VMs, die
koan
tut Befehl die (in unserem Fall) Xen Magie die Installation beginnen - auf dasdom0
ich gerade ein:dann
virsh console
, um ein VPS-Gebäude ohne Interaktion zu sehen.Wir verwenden RHEL und haben eine Reihe von Profilen eingerichtet, um Festplatten zu partitionieren, Netzwerke zu konfigurieren und Basispakete für verschiedene Serverklassen zu installieren. Cobbler unterstützt Debian- und Ubuntu-Rassen, aber ich habe es noch nie versucht. Nebenbei : Weitere interessante Anwendungen für Cobbler sind das Ausführen von memtest- ISOs und HP-Firmware- Updates.
Sobald unsere Systeme mit Cobbler Puppet erstellt wurden, werden die Anwendungen, System-Daemons, die Registrierung der Box bei RHN usw. konfiguriert. Puppet wird als Daemon ausgeführt, der regelmäßig überprüft, ob die Systemkonfiguration mit den definierten Manifesten übereinstimmt. Sie wissen, dass Ihre Aktualisierungen abgeschlossen sind an alle Server. Auf diese Weise können Sie auch sicherstellen, dass eine zu wartende Box die richtige Konfiguration aufweist, bevor Sie sie wieder in Betrieb nehmen.
Puppet ist wirklich großartig. Sie müssen nicht jeden Aspekt Ihrer Konfiguration in den Griff bekommen - lassen Sie sie zunächst etwas Einfaches verwalten, das Sie auf jeder Box konfigurieren müssen (dies
sudoers
ist das kanonische Beispiel), und nehmen Sie es von dort. Stellen Sie sicher, dass auch Ihre Puppet-Manifeste versioniert sind. Nichts ist besser als die einfache Möglichkeit, ein Rollback auf eine als funktionierend bekannte Konfiguration durchzuführen, ohne sich daran erinnern zu müssen, was angepasst werden muss.quelle
Wo ich gerade arbeite, müssen wir den Linux-Teil unserer Serverfarm verwalten, der nur etwas über 300 Linux-Server umfasst. Dies umfasst hauptsächlich HP Proliants, gefolgt von IBM 3850s, einigen IBM Blades, VMware ESX und einigen KVM für unsere internen Verwaltungsserver.
Cobbler
Wir haben uns Cobbler angesehen, aber das Problem war, dass Cobbler sehr RHEL / Red Hat-spezifisch ist. Wir müssen RHEL und SLES mindestens unterstützen und Ubuntu ist als nächstes dran.
Marionette
Wir haben Puppet in Betracht gezogen, haben uns jedoch später dagegen entschieden, da es von Ruby abhängt, was bedeutet, dass ein Upgrade von Ruby unser Managementsystem möglicherweise beschädigen könnte.
hotwire
Wir verwenden Hotwire (intern entwickelt, aber Open Source) und das seit einigen Jahren. Erstens werden die zu erstellenden Systeme inventarisiert, dh das Rechenzentrum, das Rack, die Hardware, das Betriebssystem, das Netzwerk usw. werden inventarisiert, und zweitens erfolgt die schnelle Erstellung und Bereitstellung. Sobald das System erstellt ist, wird das Inventar durch die automatische Inventarisierung von hotwire synchronisiert, während es von cfengine verwaltet wird. Hotwire kennt die Server-Hardware, indem es über Python- Dmidecode mit den SMBIOS / DMI-Daten im BIOS spricht .
Die Bonuspunkte sind, dass Inventar und Erstellungsprozess in einem zusammengefasst werden, sodass weniger verwaltet werden muss, und die Live-Inventar-Funktion ist großartig, da wir wissen, ob etwas nicht ganz stimmt.
Die Nachteile sind, dass die Benutzeroberfläche immer noch poliert werden muss, und es gibt hier und da Fehler, aber die Entwicklung ist immer noch heiß, und gemeldete Fehler werden relativ schnell behoben.
cfengine
Wir verwenden Cfengine, weil es außer Cfengine und Puppet nichts anderes gibt. Tatsächlich ist es ein gutes Tool, aber "gut" nur in Abhängigkeit davon, wie gut Ihre Richtlinien sind. Wenn Sie gefährliche Richtlinien festlegen, kann ein kleiner Fehler eine Menge Schaden anrichten. Zum Beispiel "modifizieren" wir Dateien nicht, wir ersetzen sie entweder oder wir tun es nicht. Außerdem haben alle ersetzten Dateien einen Header, der jeder Person, die sie bearbeitet, mitteilt, dass sie beim nächsten Start ersetzt werden (sie wird stündlich über cron ausgeführt).
Die Konfiguration und alle Dateien, die von cfengine an die Server gesendet werden, werden ebenfalls in einem SCM gespeichert. Wenn möglich, überprüfen wir die Syntax mithilfe von Post-Commit-Hooks. Wenn dies fehlschlägt, wird das Commit abgelehnt. Dies ist für nette Anwendungen wie Apache einfach, für die meisten Unternehmensanwendungen jedoch nicht so einfach.
quelle
Ich habe Erfolg mit Puppet gehabt . Chefkoch ist neu im Kommen. Eine längere Liste der Optionen und eine Vergleichstabelle finden Sie im Wikipedia-Artikel Vergleich von Open Source-Konfigurationsverwaltungssoftware .
quelle
Zur Automatisierung der Installation je nach Zielsystem:
Für das Konfigurationsmanagement würde ich zusätzlich die Verwendung von Puppet vorschlagen.
quelle
Ich habe viel Erfolg mit Puppet , aber du musst eine Menge Config schreiben.
quelle
Eine weitere Abstimmung für Puppet hier. Wir verwenden es ausgiebig, um die gesamte Server- und Anwendungsinstallation sowie das Konfigurationsmanagement durchzuführen. Über 200 Knoten und Zählen. Die Windows-Unterstützung ist anscheinend in der Entwicklung, obwohl ich nicht sicher bin, in welchem Zustand.
Wir beschäftigen uns immer noch mit der anfänglichen Bootstrap-Seite des Betriebssystems, aber wie oben erwähnt, sieht Cobbler interessant aus. Wir verwenden derzeit eine Mischung aus PXE-Booten mit Debian / Ubuntu-Voreinstellung, aber es ist kaum optimal.
quelle