Globales vs lokales Puppenmanagement


8

Hat jemand jemals mehrere geografisch verteilte Systeme mit Puppet verwaltet?

Ich habe mehrere fast genau ähnliche Bereitstellungen (mit Ausnahme der Server-IPs), deren Verwaltung ich in Puppet konvertieren möchte.

Ich habe 2 Möglichkeiten:

  • Lassen Sie jede Bereitstellung ihren eigenen PuppetMaster hosten, um lokale Konfigurationen bereitzustellen, und synchronisieren Sie dann die PuppetMasters irgendwie (möglicherweise wieder mit Puppet).

  • Hosten Sie den PuppetMaster auf AWS EC2 für Hochverfügbarkeit und stellen Sie Konfigurationen für alle Bereitstellungen von einem einzigen Punkt aus bereit

Hat jemand die zweite Option ausprobiert und wie hat es funktioniert? Ich bin besonders an der Hochverfügbarkeitsleistung in einer solchen Umgebung interessiert.

Vielen Dank.

Antworten:


7

An beiden von Ihnen vorgeschlagenen Ansätzen ist nichts auszusetzen. Wir haben drei Puppenmeister, die sich alle an einem einzigen Standort befinden und Knoten auf der ganzen Welt bedienen. Wir trennen sie danach, ob sich der verbindende Puppenknoten in dev / test / prod befindet. Andere Leute bevorzugen es, einen Puppenspieler pro geografischer Region zu betreiben. Andere Leute haben viele Puppenspieler, einige verwalten nur einen Knoten!

Das Wichtigste ist , dass es von entscheidender Bedeutung , dass Sie Ihren puppetmaster manifestieren Baum in einem Versionskontrollsystem speichern und verwalten - Behandeln Sie es wie jedem anderen Code Ihr Unternehmen unterhält. Ich würde Git empfehlen, aber Subversion wird auch den Trick machen, wenn Sie mehr daran gewöhnt sind. Der Puppenspieler ist einfach ein Dienst, der seine spezielle Sicht auf Ihr VCS erfüllt, anstatt selbst eine zentrale Datenbank zu sein.

Mit Ihren Inhalten in einem VCS können Sie dann die erforderlichen Manifeste / Module für die jeweiligen Puppenspieler bereitstellen und sie einfach synchronisieren. Die Konvention scheint für Leute zu sein, die ein Git / SVN-Repo / Modul pro Puppenmodul haben, obwohl nichts Sie davon abhält, den gesamten Baum unter ein Repo / Modul zu stellen.

Meine Fragen an Sie wären:

  • Wie viele Knoten enthält jede Bereitstellung? Wenn Sie über 50+ sprechen, lohnt es sich auf jeden Fall, einen örtlichen Puppenmeister zu haben.
  • Haben die Bereitstellungen Dritte, die sie zusätzlich zu Ihrem Unternehmen verwenden? Der Puppenspieler muss über eine sehr hohe Sicherheit verfügen - betrachten Sie ihn als Schlüssel zur Tür aller Ihrer Systeme und enthalten Sie sehr vertrauliche Informationen.
  • Würden Sie die implementierungsbasierten PMs auf einem eigenen Server / einer eigenen VM hosten, oder müsste einem vorhandenen Computer die Aufgabe zugewiesen werden? Ich empfehle dringend, dass der Puppetmaster-Server aus Sicherheitsgründen nur diese Rolle spielt.
  • Wie erwarten Sie, dass EC2 Ihnen eine höhere Verfügbarkeit bietet? Nach meinem Verständnis sind EC2-Instanzen keine HA, obwohl es möglich sein sollte, 2+ Puppetmaster hinter dem AWS Load Balancer-Dienst auszuführen.
  • Sind die Bereitstellungen sehr unterschiedlich? Möchten Sie sie zu verschiedenen Tageszeiten ändern? Mehrere Puppenspieler geben Ihnen ein feineres Maß an Kontrolle.

1
Hallo. Wir sprechen von maximal 10 bis 20 Knoten in jeder Bereitstellung. Die Bereitstellungen sind weltweit. Innerhalb der Bereitstellungen sind keine Drittanbieter zulässig. Ich bin tatsächlich daran interessiert, alle Puppet-bezogenen Daten auf eine dedizierte Maschine zu konzentrieren, damit die PM auf einer EC2-Instanz gehostet wird. Ich werde wahrscheinlich Heartbeat + DRBD für die HA verwenden. Die Bereitstellungen sind im Grunde die gleichen Appliances, da nur die Server-IPs unterschiedlich sind. Danke noch einmal.
SyRenity

Es hört sich sehr danach an, als würde ein Puppetmaster-Cluster in EC2 dann wahrscheinlich den Trick für Sie tun. Stellen Sie einfach sicher, dass Sie Git oder Subversion verwenden, um Ihre Manifeste sicher zu speichern :)
Mike Pountney

2

Sie können auch ein Puppetmaster-freies System mit einem verteilten VCS wie Git verwenden. Verwenden Sie dazu das hier beschriebene Schema:

http://bitfieldconsulting.com/scaling-puppet-with-distributed-version-control


Wenn Sie keinen Puppetmaster haben, verlieren Sie die Unterstützung für gespeicherte Konfigurationen, eine der leistungsstärksten Funktionen von Puppet. Denken Sie an die maschinenübergreifende Informationserfassung, die in die Updates integriert ist. Sie können beispielsweise automatisch Informationen über das Ausführen von Diensten auf allen (von Puppen verwalteten) Hosts sammeln, um Firewall-Regeln, Routing-Regeln, Überwachungskonfigurationen, Pull-basierte Backups usw. zu generieren.
David Gardner

Ja, das ist ein fairer Punkt. Natürlich hat das Ausführen eines vollständigen Puppetmaster-basierten Systems Vorteile, und das tue ich normalerweise. Ich kann Situationen sehen, in denen ein sehr leichtes, VCS-basiertes System wie dieses nützlich wäre.
John Arundel

Wenn Sie sich für ein masterloses Setup entscheiden, können Sie dies tun und den Puppetmaster-Server so einrichten, dass nur Inventar von Factern empfangen wird - es muss dann nicht sehr hoch verfügbar sein.
Timurb

0

Wir haben auch eine Reihe von Puppenmeistern, verschiedene Umgebungen, die wir synchronisieren. Zu diesem Zweck verwalten wir alle unsere Puppenmodule und Manifeste in Subversion und stellen die Puppenmodule dann mithilfe regulärer Puppenmanifeste und eines Moduls namens vcsdeploy, das das Auschecken durchführt, auf den Puppenmeistern bereit:

http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff

Wenn wir synchronisieren möchten, markieren wir eine Version und aktualisieren dann die node.pp für den Puppet Master.

Grüße

Dave

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.