Alles puppetisieren oder nicht?


10

Hinweis: Es gibt viele theoretische Fragen.

Kürzlich lese ich über Puppet (und ähnliche Systeme), was - wie ich glaube - meine Arbeit sehr erleichtern kann. Aber ich versuche - und kann es leider nicht - zu verstehen, was ich alles "puppen" kann. Ich kann mir "Clouds" oder HA-Cluster vorstellen, bei denen auf mehreren Servern dieselbe Konfiguration vorliegt. Aber was ist mit Arbeitsplätzen? Ich habe einen PC (Centos mit kvm), ein Notebook (Fedora) und einen Personal Server. Kann (oder sollte) es eine Marionette sein? Was sind (Nachteile)? Oder in unserer Firma haben wir Hunderte von Servern (hauptsächlich mit Centos), aber jeder von ihnen ist ein bisschen anders. Sie können sich nicht entscheiden, ob es besser ist, viele Konfigurationen an einem Ort zu haben. (Dis) Vorteile? Ich freue mich über alle Ihre Meinungen oder Links zu diesem Thema.


Ich würde raten, nicht zu versuchen, eines Ihrer Windows-Systeme zu "puppetisieren". Oh, und lesen Sie unsere FAQ , welche Art von Fragen Sie hier stellen sollten.
HopelessN00b

7
Die Menge der Dinge, die Sie als Marionette verwenden, und die Menge an Puppenmaterial, die sie haben, sollten direkt proportional zu der Menge sein, die Sie für die für Sie erledigte Aufgabe interessieren. Fangen Sie klein an, kopieren Sie einfach die ntp-Konfiguration oder rsyslog. Dann bauen Sie von dort aus, wenn und wie Sie müssen, wann Sie müssen.
Sirex

1
Da Sie bereits viele Server an meiner Stelle haben, ist mein Vorschlag, dass Sie einfach mit den Bits beginnen, die auf jedem einzelnen System gemeinsam sind, und dann mit der Zeit auf detailliertere Dinge eingehen.
Zoredache

1
Die Windows-Unterstützung hat sich in den letzten Versionen von Puppet dramatisch verbessert. Ich verwalte Hunderte von Windows-Knoten mit Puppet. Puppet auf POSIX-Knoten ist viel einfacher und leistungsfähiger, aber die Verwendung von Puppet für zumindest einige Dinge unter Windows kann unglaublich nützlich sein.
Czervik

Antworten:


16

Inwieweit Sie eine gesamte Umgebung als Marionette verwenden können, hängt von mehreren Variablen ab:

  • Die Bereitschaft der Automatisierungsmitarbeiter, Automatisierung für jeden zu schreiben. wenig. Sache.
  • Die kulturelle Konditionierung, die es ermöglicht, "Ich werde nur diese eine Sache ändern, es ist sowieso einmalig" in "Ich werde nur diese eine Sache in diesem Puppenmanifest ändern und sie jetzt anwenden; es ist nur eine einmalige . "
  • Der Grad der Heterogenität in einer Umgebung.

Es ist definitiv möglich, jedes ********************************************************************************************************************************************** Einige Geräte sind auf diese Weise grundsätzlich schwer zu verwalten, z. B. Workstations, und Puppet eignet sich besser als Staging-Tool als als Konfigurationsverwaltungs-Engine.

Puppet ist fantastisch, wenn Sie eine Flotte von VMs verwalten, die weitgehend dasselbe tun. Totaler Gewinn und nicht viel Aufwand, um dorthin zu gelangen.

Am anderen Ende des Spektrums haben Sie das, was ich bei meinem letzten Job hatte, nämlich mehr als 200 Server mit 130 Diensten und nur eine kleine Gruppe von ihnen mit mehr als einer Maschine. Es gibt absolut Unternehmen (und Universitäten), die solche Dinge gefälscht haben, aber es ist viel Aufwand und erfordert viel Buy-In. Es ist erforderlich, dass der erste Schritt Ihres Bereitstellungsprozesses für neue Computer nicht "Betriebssystem installieren", sondern "Manifeste erstellen" ist.

Letztendlich ist es ein kulturelles Problem zwischen Aufwand und Effizienz, das Sie unter all Ihren IT-Mitarbeitern lösen müssen.


13

PUPPE ALLE DINGE

Alles, was auf allen Systemen (oder einer Teilmenge davon) einigermaßen ähnlich ist oder dass Sie eine Vorlage auf einer Tatsache basieren können, aus der Sie herauskommen können, facterist faires Spiel.

Dinge, die wirklich einzigartig sind, sollten Sie wahrscheinlich nicht stören und nur die Konfigurationen aus einem Filebucket heraus bedienen.

Was in eine der beiden Kategorien fällt, ist eine Entscheidung, die wir nicht treffen können, ohne Ihre Umgebung genau zu kennen. Das müssen Sie also herausfinden.


6

Ich denke, andere haben das Warum behandelt, also werde ich das Wie ausprobieren. Ich denke, wenn Sie verstehen, wie jemand Puppet verwenden könnte, um das zu tun, was Sie wollen, wird die Entscheidung klarer.

Machen Sie zuerst den Grundfall

Ihr Puppet-Modul für Apache sollte standardmäßig nicht viel bewirken. Installieren Sie Apache, konfigurieren Sie es auf einen Mindeststandard und starten Sie den Dienst. Lassen Sie dies auf allen Distributionen funktionieren, die Sie unterstützen müssen.

Fügen Sie Flexibilität an zweiter Stelle hinzu

Wir müssen vhosts hinzufügen. Sie erhalten ein System, mit dem Sie Dateien löschen oder aus einer Reihe von Verzeichnissen conf.d oder vhosts.d / entfernen können, je nachdem, was Sie benötigen. Gleiches gilt für das Aktivieren oder Konfigurieren von Modulen.

Verwenden Sie Rollen- oder Hostgruppenklassen, um Ihre Bausteine ​​miteinander zu verbinden

Ich denke, der beste Weg, Puppet zu verwenden, besteht darin, sicherzustellen, dass es additiv ist. Anhand der obigen Beispiele sollten wir ein Modul haben, das dies tut

  1. Installieren Sie Apache
  2. Grundkonfigurationen einstellen
  3. Füge vhosts zu Apache hinzu
  4. Konfigurieren Sie zusätzliche Einstellungen
  5. Starten Sie Apache

Anstatt unser Standard-Apache-Modul zu überlasten, um genau das zu tun, was wir für einen bestimmten Host oder eine bestimmte Gruppe benötigen, sollten wir damit umgehen, dass es sich um eine Rollen- oder Hostgruppenklasse handelt.

class role::web_cust1 {
  include apache
  apache::vhost {'www.domain.com': }
  apache::vhost {'www.domain2.com': priority => '99', }
  include php
  include php-fpm
  include mysql
}

Wieder additiv.

Setzen Sie Sonderfälle in Hiera

Ich bin ein großer Fan davon, Puppets Hiera als Datenbank für Puppet die speziellen Teile speichern zu lassen. Wenn ein bestimmter Host oder eine bestimmte Hostgruppe eine spezielle Einstellung benötigt, fügen Sie zunächst einen vernünftigen Standard in das Modul ein, damit normale Benutzer nichts darüber wissen müssen. Fügen Sie dann Daten für diese speziellen Hosts oder Hostgruppen ein, damit Hiera sie nach Bedarf an Puppet weitergeben kann.

Mein Anwendungsfall ist Listen Port. Einige Server haben einen Lack oder Haproxy vor sich. Standardmäßig verfügt das Puppet-Modul über Apache-Verwendung von Port 80, aber wenn Hiera Daten findet, wird diese Standardeinstellung überschrieben.


Ich habe die Rollenmodulhierarchie verwendet und sie funktioniert gut. Dies erleichtert das Erstellen einer Umgebung, in der möglicherweise viele Server viele Rollen spielen (dh einige der Rolle :: Webserver können auch Rolle :: Speicher sein).
Andy Shinn

5

Ich bin derzeit im Übergang zwischen Puppetize ziemlich ähnlichen Systemen wie Puppetize alles und bin überzeugt, dass Puppetize alles langfristig ein besserer Ansatz ist.

Wenn Sie Ihre Puppet-Manifeste versionieren (wir alle tun dies richtig), erhalten Sie alle Vorteile der Versionskontrolle für Ihre Infrastruktur. Ihr Team wird Betriebsingenieur. Dies ist für spezielle, einmalige Systeme ebenso wichtig wie für homogene Rinderfarmen. Sie erhalten ein Protokoll darüber, wer etwas geändert hat, wann sie es geändert haben, wie die genaue Änderung war und wie die Änderung rückgängig gemacht werden kann.

Persönlich finde ich auch, dass ich mich gezwungen fühle, jede Änderung durch Puppet vorzunehmen, um genauer über die Änderung nachzudenken. Während ich Manifeste schreibe, bin ich bei jeder Änderung aufmerksamer, als ich normalerweise an der Kommandozeile herumhacke.

Ihre Puppet-Module werden auch besser. Haben Sie mehr als ein Nginx-Modul? Vielleicht bedeutet dies, dass Ihr Nginx-Modul nicht so gut ist und Sie es flexibel genug machen müssen, um alle Ihre speziellen Anforderungen zu erfüllen. Zumindest abstrahieren Sie die Ähnlichkeiten in ein Kern-Nginx-Modul, das Sie für "benutzerdefinierte" Module erweitern.

Wie sicher sind Sie außerdem, dass Sie alle Server mit besonderen Anforderungen im Katastrophenfall auf ihren aktuellen Status (in Bezug auf die Konfiguration) zurücksetzen können? Wenn jede Änderung, die erforderlich ist, um einen werkseitigen Ubuntu-Server in Ihr internes Wiki zu integrieren, puppetisiert ist, können Sie den aktuellen Status Ihres Wikis problemlos wiederherstellen, einschließlich der gestrigen Tomcat-Speicheroptimierung von Bob.

Schließlich kann dies sehr schwer sein. Das Verwalten vieler sehr unterschiedlicher Server kann zu hacktastischem Puppet-Code führen, wenn Sie sich nicht die Zeit nehmen, die Dinge richtig zu machen. Wenn Sie Puppet Enterprise nicht verwenden, ziehen Sie hiera und / oder eine ENC wie Foreman in Betracht, um Ihre Daten von Ihren Manifesten zu trennen. Jeden Tag etwas anderes puppetisieren. Lassen Sie einen Mitarbeiter fahren, während Sie erklären, wie dies in Puppet funktioniert. Jede Änderung wird einfacher.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.