Frage Automatisierung der Serverbereitstellung


Ich finde, dass ich für eine Reihe meiner Kunden ständig fast identische Server und VPS eingerichtet habe und es kann sehr zeitaufwendig sein. Oft ändert sich zwischen den einzelnen Bereitstellungen nur die unterschiedliche Website, die bedient werden soll. Gibt es eine einfache Möglichkeit, all das zu automatisieren und die langweilige Monotonie des Aufbaus von 56 identischen Servern zu nehmen?

Die Server, die ich bisher bereitgestellt habe, waren nur Ubuntu, aber es könnte möglich sein, dass ich andere Linux-Betriebssysteme oder sogar Windows verwende. 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 kein Wissen


28
2018-04-30 11:47


Ursprung


siehe auch FLOSS Server Management- und Audit-Tools - warren


Antworten:


Marionette klingt perfekt für das, was Sie zu tun 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 Rechnern identisch sind. Dann definieren Sie die einzelnen Hosts als Knoten, die vom Server erben, und legen die spezifischen eindeutigen Dinge dafür fest.

Puppet ist deklarativ - es erlaubt Ihnen, Ihre Boxen in Bezug auf die Ressourcen zu beschreiben, die jede Box haben sollte. Also wenn du willst ssh - Sie schreiben eine Klasse für diese Ressource - und innerhalb der Klasse können Sie eine Logik dazu einfügen, wie ssh unter FreeBSD vs Ubuntu etwas anders heißt. Es weiß auch zu verwenden yum in Redhat und apt-get in Debian-basierten Distributionen und ports in den BSDs. Jetzt in Ihrem Server-Knoten haben Sie nur eine Zeile wie include ssh - und Marionette wird das Richtige tun und SSH auf die Maschine stellen, ohne dass du dich erinnern musst, ob das Ubuntu oder Redhat oder FreeBSD ist.

Was ist nett ist, dass alle Server-Sachen an einem Ort leben - und wenn Sie zu irgendeinem Punkt der Serverknotendefinition hinzufügen, würden ALLE Maschinen ihre Konfiguration dementsprechend aktualisieren.

Im Moment verwalte ich nur drei Boxen mit Puppet - aber es hat sich schon ausgezahlt. Nachdem wir eine Woche damit verbracht haben, eine Box einzurichten, die wir für die Stimulus-Präsentation in einem Experiment verwenden werden, stellte sich heraus, dass der Grafikkartentreiber in der Version von Ubuntu, die ich darauf gelegt hatte, zu alt war (8.04). Ich musste das neueste Ubuntu (9.04) installieren, aber danach musste ich nur noch apt-get und marionpet ausführen - und alles, was ich für eine Woche eingerichtet hatte, wurde wiederhergestellt.

Marionette hat ein bisschen eine Lernkurve, aber ich habe es erfolgreich vermieden, Ruby zu lernen - ich weiß, dass ich es benutze, denn das ist, was Marionette geschrieben hat - aber bis jetzt war es mir nur gelungen, das zu ändern Beispiele in der Dokumentation und den Rezepten im Wiki . Ein weiterer Nachteil ist, dass die Puppe beim ersten Mal etwas länger braucht. Der Vorteil ist, dass alles, was Sie an all Ihren Maschinen ändern, an einem Ort gespeichert wird - es ist Standard, Ihre Marionettenkonfiguration in einem Versionskontrollsystem zu behalten - so können Sie jederzeit zurückblicken und sehen, wie Sie Server in der Vergangenheit eingerichtet haben - oder Rollback einiger erfolgloser Änderungen.

Endlich, hier ist ein schnelles Video das macht eine einfache Puppen-Demo, die mich hat Begann schnell.


20
2018-05-01 06:11



Digg.com benutzt Puppet, um ihre Server zu verwalten, einige grundlegende Beispiele können auf ihrem Blog gefunden werden: blog.digg.com/?p=335  blog.digg.com/?p=562 - Adam Gibbins
Ich glaube, dass das Admin-Team von Fedora auch Marionetten benutzt. - Mei


Wir benutzen Cobbler und Marionette für die Build- und Konfigurationsautomatisierung von realen und virtuellen Maschinen.

Cobbler bindet DHCP, PXE-Boot und Kickstart zusammen, um die Bereitstellung zu einem Computerprofil zu machen und den Power-Button zu drücken. Für VMs, die koan Befehl macht die (in unserem Fall) Xen Magie, um die Installation zu starten - auf der dom0 Ich tippe einfach:

koan --system vps.fqdn --server cobbler --no-gfx

dann virsh console 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, aber ich habe es nie ausprobiert. Ein Nebenaspekt: ​​Weitere interessante Anwendungen für Cobbler sind das Laufen Memtest ISOs und HP Firmware Aktualisierung.

Sobald unsere Systeme mit Cobbler erstellt sind, übernimmt Puppet die Konfiguration der Anwendungen, Systemdämonen, Registrierung der Box mit RHN, etc. Puppet läuft als Daemon, der regelmäßig überprüft, ob die Systemkonfiguration mit den definierten Manifesten übereinstimmt - Sie wissen, dass Ihre Updates verschwunden sind an alle Server. Es ist auch eine gute Möglichkeit, sicher zu sein, dass eine heruntergefahrene Box die richtige Konfiguration hat, bevor Sie sie an den Live-Service zurückschicken.

Marionette ist wirklich großartig. Sie müssen nicht jeden Aspekt Ihrer Konfiguration unter Kontrolle haben - beginnen Sie damit, dass Sie etwas einfaches verwalten, das Sie auf jeder Box konfigurieren müssen (sudoers ist das kanonische Beispiel) und nimm es von dort. Stellen Sie sicher, dass Ihre Marionettenmanifeste auch versioniert sind; Nichts ist besser, als einfach in eine bekannte Konfiguration zurückkehren zu können, ohne sich daran erinnern zu müssen, was angepasst werden muss.


9
2018-05-17 12:52





Wo ich gerade arbeite, müssen wir den Linux-Teil unserer Serverfarm verwalten, der knapp über 300 Linux-Server umfasst. Dies umfasst hauptsächlich HP Proliants, gefolgt von IBM 3850, einigen IBM Blades, VMware ESX und einigen KVM für unsere internen Management-Server.

Cobbler

Wir haben uns den Schuster angesehen, aber das Problem war, dass der Schuhmacher sehr RHEL / Red Hat-spezifisch ist. Wir müssen zumindest RHEL und SLES unterstützen, und Ubuntu ist der nächste.

Marionette

Wir haben über Puppet nachgedacht, aber später entschieden wir uns dagegen, da es auf Ruby ankommt, was bedeutet, dass ein Upgrade von Ruby möglicherweise unser Managementsystem durchbrechen könnte.

Hitzdraht

Hotwire ist das, was wir verwenden (intern entwickelt, aber Open-Source), und das schon seit einigen Jahren. Zunächst werden die zu erstellenden Systeme inventarisiert, dh das Rechenzentrum, das Rack, die Hardware, das Betriebssystem, das Netzwerk usw. werden inventarisiert, und zweitens wird das schnelle Build & Deploy durchgeführt. Sobald das System erstellt ist, hält die automatische Inventarisierung von Hotwire das Inventar synchron, während es von cfengine verwaltet wird. Hotwire weiß über die Serverhardware Bescheid, indem er mit den SMBIOS / DMI-Daten im Bios kommuniziert Python-Dmidecode.

Die Bonuspunkte sind, dass es das Inventar und den Build-Prozess in einem kombiniert, so dass es weniger zu verwalten gibt, und die Live-Inventar-Funktion ist großartig, da wir wissen, ob etwas nicht stimmt.

Die Nachteile sind, dass die Benutzeroberfläche immer noch poliert werden muss, und es gibt Fehler hier und da, aber die Entwicklung ist immer noch heiß und die gemeldeten Fehler werden relativ schnell behoben.

cfengine

Wir benutzen cfengine, weil außer ihm und der Puppe nichts anderes ist. Es tatsächlich ist ein gutes Werkzeug, aber "gut" nur in Abhängigkeit davon, wie gut Ihre Richtlinien sind - wenn Sie gefährliche Richtlinien festlegen, kann ein kleiner Fehler viel Schaden verursachen. Zum Beispiel ändern wir gemäß der Richtlinie Dateien nicht, wir ersetzen sie entweder oder wir tun dies nicht. Außerdem haben alle ersetzten Dateien eine Kopfzeile, die jede Person, die sie bearbeitet, weiß, dass sie beim nächsten Mal ersetzt wird (sie wird über cron stündlich 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 nach dem Festschreiben, und wenn dies fehlschlägt, wird die Festschreibung zurückgewiesen. Dies ist für nette Anwendungen wie Apache einfach, für die meisten Unternehmensanwendungen jedoch nicht so einfach.


6
2018-05-27 14:58



Sie haben sich gegen Puppet entschieden, weil es auf Ruby ankommt? Auf dieser Grundlage können Sie sich gegen fast alles entscheiden, weil ein libc- oder Kernel-Upgrade es möglicherweise kaputt macht. - Cristian Ciupitu
Sie erhöhen einen Punkt, aber am Ende ist es ein Kompromiss - wie viele Pakete möchte ich beim nächsten Upgrade "kümmern". Wenn das kernel / glibc-upgrade schiefgeht, erwartet man normalerweise, dass es fast sofort herauskommt, da es die grundlegendste Komponente des Betriebssystems ist. Wenn Ruby jedoch etwas anders ausfällt, würden Sie es nicht wirklich bemerken, aber wenn Sie das tun haben 300 Server bereits aktualisiert und läuft auf dieser Version, und jetzt ist Puppet ein Opfer. Aber wieder schnitze ich nichts in Stein; das ist nur meine Vorliebe für die Sache. - Xerxes


Ich hatte Erfolg mit Marionette. Koch ist ein neuer zu entstehen. Für eine längere Liste von Optionen und eine Vergleichstabelle, siehe Wikipedia Artikel, Vergleich der Open-Source-Konfigurationsmanagement-Software.


5
2018-05-30 13:21



Vergessen Sie nicht, dass Opscode einen gesunden Stapel gebrauchsfertiger Chefkochbücher bietet. - jtimberman


Zur automatisierten Installation abhängig vom Zielsystem:

  • Debian / Ubuntu: FAI oder d-i Voreinstellung
  • RedHat / Fedora: Kickstart
  • Novell / openSuSE: AutoYaST
  • Solaris: Starthilfe
  • Windows: unbeaufsichtigt.sourceforge.net

Für die Konfigurationsverwaltung würde ich vorschlagen, Marionette zu verwenden.


3
2018-05-30 23:01





Ich habe viel Erfolg mit Marionette, aber du musst viel config schreiben.


2
2018-04-30 11:54





Noch eine Stimme für Puppet hier. Wir verwenden es umfassend, um alle Server- und Anwendungsinstallations- und Konfigurationsmanagement durchzuführen. 200+ Knoten und Zählen. Windows-Unterstützung ist anscheinend in Entwicklung, obwohl in welchem ​​Zustand ich nicht sicher bin.

Wir schauen immer noch auf die anfängliche OS-Bootstrap-Seite der Dinge, 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.


2
2018-05-27 18:53



Hey Mike, denkst du, du könntest das Puppet-Tag zu dieser Frage hinzufügen? Ich würde es tun, aber nicht die erforderliche Wiederholung - Paul Ivanov