Frage Was sollte nicht von Marionette verwaltet werden?


Ich lerne meinen Weg durch Konfigurationsmanagement im Allgemeinen und benutze Marionette um es speziell zu implementieren, und ich frage mich, welche Aspekte eines Systems, wenn überhaupt, sollte nicht mit Marionette verwaltet werden?

Als ein Beispiel nehmen wir normalerweise an, dass Hostnamen bereits eingerichtet sind, bevor das System der Puppenverwaltung zur Verfügung gestellt wird. Grundlegende IP-Konnektivität, zumindest in dem Netzwerk, das verwendet wird, um den Puppenspieler zu erreichen, muss funktionieren. Die Verwendung von Puppet zum automatischen Erstellen von DNS-Zonen-Dateien ist verlockend, aber DNS-Reverse-Pointer sollten bereits vorhanden sein, bevor Sie das Ding starten oder Zertifikate werden lustig sein.

Also sollte ich die IP-Konfiguration von der Puppe weglassen? Oder sollte ich es vor dem ersten Start der Puppe einrichten, aber IP-Adressen mit der Puppe trotzdem verwalten? Was ist mit Systemen mit mehreren IPs (z. B. für WAN, LAN und SAN)?

Wie wäre es mit IPMI? Sie können die meisten, wenn nicht alle davon mit konfigurieren ipmitoolDadurch ersparen Sie sich den Zugriff auf die Konsole (physisch, seriell über LAN, Remote-KVM, was auch immer), damit er mit der Puppe automatisiert werden kann. Aber es ist mir nicht cool, bei jedem Marionetten-Agentenlauf den Status erneut zu überprüfen, und der einfache Zugriff auf das System ist etwas, das ich gerne hätte, bevor ich etwas anderes mache.

Eine andere ganze Geschichte handelt von der Installation von Updates. Ich gehe nicht auf diesen speziellen Punkt ein, es gibt bereits viele Fragen zu SF und viele verschiedene Philosophien zwischen verschiedenen Systemadministratoren. Ich selbst habe beschlossen, die Puppen nicht zu aktualisieren (zB nur ensure => installed) und Aktualisierungen manuell durchführen, wie wir es bereits gewohnt sind, und die Automatisierung dieser Aufgabe auf einen späteren Tag belassen, wenn wir mehr Vertrauen in die Marionette haben (z. B. durch Hinzufügen von MCollektiv zum Mix).

Das waren nur ein paar Beispiele, die mir gerade in den Sinn kamen. Gibt es einen Aspekt des Systems, der außerhalb der Reichweite der Puppe liegen sollte? Oder, anders gesagt, wo ist die Grenze zwischen dem, was zur Bereitstellungszeit eingerichtet und "statisch" im System konfiguriert werden sollte, und was wird über das zentralisierte Konfigurationsmanagement gehandhabt?


65
2017-08-06 16:42


Ursprung


Gute Frage. Ich bin selbst neugierig, wenn es etwas anderes als maschinenspezifische Konfigurationen gibt, für die man keine Marionetten verwenden sollte. Nun, das und Windows Maschinen. - HopelessN00b
<vage> Du solltest Dinge in der Puppe nicht handhaben, wenn es besser / einfacher ist, sie auf andere Weise zu verwalten. </ vage>: p - Zoredache
Angesichts der Vielzahl von Unternehmen, die heutzutage Puppet verwenden, kann ich feststellen, dass diese Frage in den nächsten Jahren viel Aufmerksamkeit erregt - Daniel Li


Antworten:


Allgemeine Regel: Wenn Sie das Konfigurationsmanagement verwenden, können Sie jeden Aspekt der Konfiguration verwalten. Je mehr Sie zentralisieren, desto einfacher wird es, Ihre Umgebung auszuweiten.

Spezifische Beispiele (abgeschrieben aus der Frage, alle "Deshalb wollen Sie es schaffen" Erzählungen):


IP-Netzwerkkonfiguration

OK, sicher, Sie haben eine Adresse / Gateway / NS auf der Maschine konfiguriert, bevor Sie sie in das Rack fallen gelassen haben. Ich meine, wenn du nicht würdest, wie würdest du Marionette laufen lassen, um den Rest der Konfiguration zu machen?

Aber sagen Sie jetzt, dass Sie Ihrer Umgebung einen weiteren Nameserver hinzufügen, und Sie müssen alle Ihre Maschinen aktualisieren - Möchten Sie nicht, dass Ihr Konfigurationsmanagementsystem das für Sie erledigt?

Oder sagen Sie, Ihr Unternehmen wird übernommen und Ihre neue Muttergesellschaft Forderungen dass Sie von Ihrer Adresse 192.168.0.0/24 zu 10.11.12.0/24 wechseln, um in ihr Nummerierungssystem zu passen.

Oder Sie bekommen plötzlich einen massiven Regierungsvertrag - Nur fangen Sie an, IPv6 aufzustellen RECHTS FREAKIN 'JETZT oder der Deal wird durchgebrannt ....

Sieht so aus, als ob die Netzwerkkonfiguration etwas ist, was wir verwalten möchten ...


IPMI-Konfiguration

Genau wie bei IP-Adressen, bin ich mir sicher, dass Sie dies eingerichtet haben, bevor Sie das Gerät in das Rack stellen. Es ist einfach vernünftig, IPMI, Remote-Konsolen usw. auf jedem Rechner mit diesen Fähigkeiten zu aktivieren ändere nicht viel ...

... Bis zu dieser hypothetischen Übernahme, die ich oben in der IP-Konfiguration erwähnt habe - Der Grund, warum Sie diese 192.168-Netz-Adressen räumen mussten, ist, dass IPMI-Land entsprechend Ihren neuen Unternehmensvertretern ist und Sie alle Ihre IPMI-Karten aktualisieren müssen JETZT, weil sie auf jemandes reserviertem IP-Raum herumtrampeln werden.

OK, es ist ein bisschen weit her, aber wie du gesagt hast - alles kann mit verwaltet werden ipmitoolAlso, warum sollte Puppet das Tool nicht ausführen und die Konfiguration bestätigen, während es all seine anderen Sachen macht? Ich meine, es wird nichts schaden, also können wir auch IPMI einbeziehen ...


Aktualisierung

Softwareupdates sind eher eine Grauzone - In meiner Organisation haben wir Marionette dafür ausgewertet und fanden es "schmerzlich vermisst", so verwenden wir radmind für diesen Zweck. Es gibt keinen Grund, warum Puppet nicht radmind nennen kann - in der Tat, wenn wir zu Puppet für das Konfigurationsmanagement wechseln, wird genau das passieren!

Wichtig dabei ist, dass alle Ihre Updates standardmäßig installiert werden (entweder unternehmensweit oder plattformübergreifend). Es gibt keinen Grund, warum Puppet Ihren Update-Prozess nicht starten sollte, solange Sie dies gründlich getestet haben alles um sicherzustellen, dass Puppet nichts vermasselt.
Es gibt auch keinen Grund, warum Puppet nicht zu einem Werkzeug greifen kann, das für diese Aufgabe besser geeignet ist, wenn Sie festgestellt haben, dass Puppet alleine keinen guten Job machen kann ...


24
2017-08-06 23:00



Re: Aktualisierungen. Eine Sache, die Sie mit der Ausführung Ihrer Updates durch Puppets in Schwierigkeiten bringen kann, ist, wenn der kritische Dienst gepatcht wird, z. B .: mysql, apache - Sie möchten nicht, dass diese nach Belieben neu gestartet werden. Puppet bietet Möglichkeiten, die Version dieser Pakete zu sperren, so habe ich es vermieden, während ich allgemeine Updates für andere Schrauben und Muttern genoss. - thinice
@ Thinice Das ist ein guter Punkt, aber mein üblicher Kontrapunkt dazu ist, Leute auf den Hinterkopf zu schlagen und REDUNDANCY wirklich richtig laut zu schreien :-) (Es ist eine schlimmere Situation mit radmind, weil das das Dateisystem sprengt. Unsere Politik ist es Lassen Sie den Load-Balancer die Hälfte der Server entladen, damit wir diese patchen / testen können, dann verschieben wir alle auf die gepatchten Maschinen, damit wir die andere Hälfte erledigen können. Funktioniert gut, aber Sie brauchen die in Ihre Umgebung eingebaute Redundanz.) - voretaq7


Erfinde das Rad nicht neu.

Ja, Sie können 50 virtuelle Puppet-Benutzerressourcen haben und diese nach Bedarf in Ihren Modulen implementieren. Wenn Sie jedoch können, verwenden Sie LDAP.

Ich spreche aus bitterer Erfahrung. Obwohl ldap hier noch keine Option ist.

Ein anderes Beispiel ist das Auswerfen von Hosts-Dateien, anstatt nur DNS zu verwenden.


10
2017-08-07 00:10



Ich erkenne all diese Worte, aber ich bin mir immer noch nicht sicher, was du sagen willst. - Chris S
Ich versuche es zu sagen; Marionette ist ein zentraler Ort für "Information". So sind DNS und LDAP. Versuchen Sie nicht, ihre Arbeit mit der Puppe zu machen, es ist Quatsch. Ich sage, dass riesige / etc / hosts-Dateien bei jedem Beitritt eines neuen Hosts mit dem Puppet mit rausgeschoben wurden. - Sirex
Wird Puppet anstelle von LDAP wirklich zum Verwalten von Benutzerkonten verwendet? - Joel E Salas
Jedes Werkzeug hat seinen Platz, aber mit Puppet für Benutzerkontenverwaltung oder LDAP für Dateispeicher ist Missbrauch. - Hubert Kario
Es ist sicherlich abbenutzen... - jldugger


  • Puppet ist kein Orchestrierungssystem. Im Speziellen:
    • Puppet eignet sich nicht gut für die VM-Orchestrierung, da VMs einen eigenen Lebenszyklus haben, der respektiert werden sollte.
    • Puppet eignet sich nicht gut für die Verwaltung von Anwendungsfreigaben / komplexen Upgrades. Standalone Puppet Runs könnten dafür ausgenutzt werden, aber zumindest ist es nicht Puppet in Kontrolle, stattdessen sind es Ihre Wrapper-Skripte oder ein menschlicher Roboter, was in Ordnung ist.
  • Puppet ist kein gutes Benutzerverwaltungssystem (Es muss verwalten jeden Benutzereintrag, auch gelöschte Benutzer, um effektiv zu sein. So finden Sie eine andere Lösung)
  • Puppet ist keine gute Konfigurationsdatenbank (schauen Sie sich eine externe Datenbank an, eine ENC, Hiera oder ähnliches)

Natürlich können Sie all diese Dinge mit Puppet tun ... aber es ist einfach nicht die beste Lösung für sie. Manchmal solltest du den Hammer hinlegen und nach einem Schraubenschlüssel suchen.

Puppet ist jedoch außerordentlich gut darin, die Basiskonfiguration für eine Maschine beizubehalten und die Tools zu installieren, mit denen Sie VM ausführen und Orchestrierung, Benutzerverwaltung usw. freigeben können.


9
2017-08-29 06:21



Mehr Quatsch: Puppet kann so konfiguriert werden, dass Benutzer mit oder ohne Verwaltung hinzugefügt oder entfernt werden können jeden Nutzer. Das sagte ... es ist irgendwie nutzlos nicht Verwalten Sie jeden Benutzer und schrecklich bei der Verwaltung aller Benutzer. Ich benutze Puppet, um Dienstkonten hinzuzufügen, aber keine Benutzerkonten. - Art Hill


Ich stimme größtenteils mit voretaq7 überein, aber mit ein paar Vorbehalten.

  • Ich konfiguriere selten die IP-Adressierung in Puppet, außer das System verwendet DHCP (ich nehme an, die meisten großen "Cloud" -Anbieter tun dies). Ich hatte Situationen, in denen ich Netzwerkkonfigurationen mit Marionette brach, aber konnte sie nicht mit Marionette korrigieren, weil der Knoten keine Möglichkeit hatte, den Puppenspieler zu kontaktieren.

  • Ich bin ziemlich fest in meiner Überzeugung, dass Update-Management in die Hände der System-Tools gehört, und ich sehe nicht, Marionette als eine glorifizierte Cron zu verwenden, um eine Verbesserung zu sein.


2
2017-08-07 22:04





In meinem Fall habe ich ein Bootstrap-Skript, das die minimale Systemkonfiguration (Ubuntu) lädt: Ruby, Rubygems, build-essential, git usw. Meine Puppet-Manifeste werden unter Versionskontrolle gehalten, und ich klicke einfach das Repository. Von dort macht mein Bootstrap-Skript eine Annahme, dass hostname --short ist gültig und versucht es puppet apply /root/infrastructure/puppet/hosts/$( hostname --short ).pp.

Zur Beantwortung Ihrer Frage:

  • Meine Skripts gehen von einer grundlegenden Netzwerkverbindung aus (DNS, IP) und verwalten oder ändern sie nicht.
  • Meine Skripts gehen davon aus, dass die Identität der Maschine korrekt ist, und ändern sie nicht.
  • Meine Skripte gehen davon aus, dass Ruby / RubyGems / Git vorhanden ist, aber tun Verwalte es danach.

1
2017-08-06 18:31





Denke, du brauchst keine Marionette für die Netzwerkkonfiguration zu benutzen. Es ist normalerweise einmal konfiguriert. Auch können Sie etwas Mist bekommen, wenn Sie einen Fehler mit IP oder MAC oder etwas ähnliches haben, das durch Puppe bringt.


0
2017-08-06 18:52



Niemals Standard-Gateway auf 100+ Server per Hand ändern müssen? Du Glückspilz ;)
@EricDANNIELOU Ich nehme an, das könnte als +1 genommen werden, damit Puppet die IP-Konfiguration von Netzwerkschnittstellen verwalten kann;) - Luke404
@EricDANNIELOU Versuche dies mit bash, "for" -Zyklus und entsprechenden Benutzerrechten (sudo zu root oder root direkt) und sed / perl / etc. :) - Evgeniy Yablokov
Ich glaube nicht, dass bash "für" Zyklus und schmutzige sed / awk / vi Skripte sicherer als scm für die Netzwerkkonfiguration sind. Und wenn Sie die Puppe für alles andere eingerichtet haben, ist es nicht sehr praktisch, die "for" -Schleife nur für die Netzwerkkonfiguration zu verwenden.