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.
Antworten:
Inwieweit Sie eine gesamte Umgebung als Marionette verwenden können, hängt von mehreren Variablen ab:
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.
quelle
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,
facter
ist 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.
quelle
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
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.
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.
quelle
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.
quelle