Wie zeichnet man Serveränderungen auf?

52

Wahrscheinlich hatten wir alle diese Situation: Sie haben ein Problem behoben, nur um festzustellen, dass es durch eine Konfigurationsänderung verursacht wurde, die Sie vor sechs Monaten vorgenommen haben, und Sie können sich nicht erinnern, warum Sie es getan haben. Sie machen es also rückgängig und beheben das Problem. Nun tritt ein anderes Problem auf. Oh ja, jetzt erinnere ich mich! Dann beheben Sie es richtig.

Es ist, weil du nicht die richtigen Notizen gemacht hast, du Narr! Aber was ist ein guter Weg, um dies zu tun?

Im Bereich Engineering verfügen wir über zahlreiche Software, mit deren Hilfe wir Änderungen erkennen und nachverfolgen können. Quellcodeverwaltung, Codeüberprüfungen usw. Jede Änderung wird nachverfolgt, jede Änderung erfordert einen Kommentar dazu, was es ist. Und typische technische Abteilungen benötigen gute Kommentare, sodass Sie in sechs Monaten, wenn Sie herausfinden, warum Sie das Problem auf diese Weise gelöst haben, eine historische "Schuld" -Funktion oder Binärsuch-Builds verwenden können, um das Problem zu lokalisieren. Diese Tools sind sehr effektive Kommunikationswerkzeuge und historische Aufzeichnungen.

Aber im Serverland gibt es 500 verschiedene Dienste, die alle auf unterschiedliche Weise konfiguriert werden können. Und sie haben nicht immer ein Textformat (Sie können Berechtigungen für einen Ordner festlegen oder den Speicherort der Auslagerungsdatei ändern), obwohl sie möglicherweise eine Textdarstellung haben.

In unserer Umgebung prüfen wir, welche Konfigurationsdateien in Perforce gespeichert werden können, aber es gibt nur sehr wenige davon. Ich kann die Active Directory-Datenbank nicht genau einchecken.

In der Vergangenheit habe ich versucht, ein manuelles Änderungsprotokoll in unserem Wiki zu führen, aber es ist sehr schwer, die Disziplin dafür aufrechtzuerhalten (ich weiß, keine gute Entschuldigung, aber es ist wirklich schwierig).

MEINE FRAGE: Welche Strategien und Tools verwenden Sie, um dieses Problem der Verfolgung von Konfigurationsänderungen auf Ihren Servern zu bewältigen?

- Update -

Hinweis: Ich bin nicht auf der Suche nach Tools für gemeinsame Notizen (ich kenne mich mit OneNote usw. aus), sondern nach automatisierten Tools, die speziell für die Nachverfolgung von Serveränderungen vorgesehen sind. Es gibt kein umfassendes Tool zum Nachverfolgen von Serverkonfigurationsänderungen, aber möglicherweise einige für bestimmte Anwendungen, z. B. Gruppenrichtlinienobjekte.

Ich interessiere mich auch sehr für bestimmte Strategien , die Sie nützlich fanden. "Wir teilen Notizen in Sharepoint" ist ziemlich vage. Wie erhältst du die Disziplin aufrecht? Welches Format verwenden Sie, um Ihre Änderungen zu verfolgen? Wie organisieren Sie Ihre Änderungsdaten? Ich hätte gerne Beispiele und Ideen.

Scott Bilas
quelle

Antworten:

20

Im Linux-Land verfolgen die Leute verschiedene Strategien:

  • Konfigurationsbeschränkungssysteme wie cfengine oder puppet oder chef . Diese ähneln Windows-Gruppenrichtlinienobjekten. Dies bedeutet, dass die gesamte Serverkonfiguration absichtlich an einem einzigen Ort dokumentiert wird und Sie wissen, in welcher Granularität (Serverraum, Gruppe, bestimmter Server) die Richtlinie angewendet wird. Das wird dich nicht ganz retten vor "Was zum Teufel war vor sechs Monaten anders?" Aber Sie können damit einfach eine Serverkonfiguration erstellen und von Grund auf neu erstellen. Sie können die Richtlinien für cfengine und puppet der Revisionskontrolle unterstellen, um die Frage zu beantworten.
  • Revision Controlling / etc . Im Allgemeinen speichern Linux-Programme ihre Konfiguration an einem Ort, / etc. Die Wagemutigen fangen an, Skripte zu schreiben, um / etc in die Revisionskontrolle zu bringen. Ein solches Programm, das ich kenne, ist etckeeper :
Beschreibung: speichern / etc in Git, Mercurial, bzr oder Darcs
 Das etckeeper-Programm ist ein Werkzeug, um / etc in einem Git, Quecksilber,
 bzr oder darcs Repository. Es wird in APT eingebunden, um Änderungen automatisch festzuschreiben
 gemacht zu / etc während Paket-Upgrades. Es verfolgt Dateimetadaten dieser Version
 Steuersysteme unterstützen normalerweise nicht, aber das ist wichtig für / etc, z
 als die Berechtigungen von / etc / shadow. Es ist ziemlich modular und konfigurierbar
 Es ist auch einfach zu bedienen, wenn Sie die Grundlagen der Arbeit mit der Version verstehen
 Steuerung.
Jldugger
quelle
1
+1 für die Erwähnung beider Systemtypen, und speziell für etckeeper, was das ziemlich einfach macht - funktioniert mit git oder hg.
RichVel
1
Ich benutze einen, um den anderen zu installieren, und habe somit beide.
Dan Garthwaite
Zu Ihrer Information, der cfengine- Link verweist auf www.cfengine.org, der jetzt defekt ist. Die offizielle Website befindet sich jetzt unter www.cfengine.com . Auch ectkeeper hat jetzt eine Homepage unter etckeeper.branchable.com
e_i_pi
@e_i_pi und auch puppet ist nicht mehr puppetlabs.
Jldugger
10

Eines der Probleme in dieser Situation ist, dass es sich tatsächlich um eine Kombination aus Geschäftsprozess und technologischem Problem handelt. Und es ist definitiv größer, als nur zu verfolgen, welche Änderungen ein Administrator vorgenommen hat. Sie müssen auch auf unerwartete Änderungen und eine gute Koordination zwischen Administratoren oder Einheiten achten, damit eine Änderung auf einem AD-Controller die Datenbankberechtigungseinstellungen auf einigen Abteilungsservern nicht beeinträchtigt. Dh deine Frage ist eine Riesendose Würmer :)

In meiner Organisation sind wir ungefähr ein Jahr damit beschäftigt, Prozesse und Systeme einzuführen, um dies zu beheben. Für die Geschäftsprozessseite haben wir ein Change Management Team gebildet. Laut SOP werden alle Änderungen an den Produktionsumgebungen durch sie koordiniert. Sie kompilieren alle Änderungen sowie den Umfang, die betroffenen Systeme, die betroffenen Services usw. Erzwingen Sie eine gute Dokumentation der Änderungen sowie Rollout- und Rollback-Pläne. Veranstalten Sie wöchentliche (offene) Meetings, um sich über bevorstehende Änderungen in der Umgebung zu informieren, und senden Sie anschließend E-Mails, in denen alle diese Änderungen aufgeführt sind. Das Endziel bei diesem Prozess ist, dass effektiv jeder in der IT alles weiß, was sonst noch vor sich geht. Dies hilft, das Problem zu beenden, dass z. B. ein SysAdmin einen Kernel-Patch installiert und ein System neu startet, das die Timeclock-Datenbank herunterfährt.

Was die Technologie betrifft, kann ich nur von den Unix / Linux-Leuten sprechen, da ich mich nicht mit Windows beschäftige. Sie haben Puppet von Reductive Labs für das Konfigurationsmanagement all dieser Systeme eingeführt. Einfach gesagt, handelt es sich um ein Client / Server-System, bei dem eine Maschinenkonfiguration auf dem Server definiert wird und der Client diese Chancen von Zeit zu Zeit nutzt (standardmäßig 30 Minuten). Darüber hinaus werden verwaltete Dateien, die möglicherweise lokal verwaltet werden, zu diesem Zeitpunkt ebenfalls zurückgesetzt. Wir verwenden es für die Verwaltung von laufenden Diensten, Firewall-Konfigurationen, Benutzerautorisierung usw.

Ich würde auch empfehlen, in etwas wie TippingPoint zu suchen. Hierbei handelt es sich um einen Client-Service, der die Systemkonfiguration überwacht und Warnungen bei Änderungen sendet. Es macht uns Sicherheitsleute am glücklichsten. Es wird hauptsächlich zum Nachverfolgen von böswilligen oder unveröffentlichten Änderungen verwendet.

Scott Pack
quelle
Wenn Sie Marionette Konfigurationsdateien in einem VCS speichern Sie eine komplette Geschichte erhalten und melden Sie sich von Ihren Server - Konfigurationen, sehr ordentlich :) Aber, erfordert alles , was zu einer Marionette Skript Umwandlung eine andere Disziplin: D
hayalci
Ich habe nie gesagt , es war einfach nur nützlich :) Der Trick mit Puppe produktivsten Verwendung von Modulen zu machen ist, eine sich daran zu erinnern , dass Ihre Bemühungen werden belohnt. Wenn nur RSA enVision einen Parser für die Protokolle hätte ...
Scott Pack
Sie haben völlig Recht, dass das Problem größer ist als nur die Technologie zur Aufzeichnung von Änderungen. Aber lassen Sie uns das Problem auch nicht auf das Unlösbare ausweiten. Ein effektives Werkzeug kann Ihr Team fokussieren, und wenn Sie keines haben, wird die Moral zerstört, eine Änderung in Ihrer Denkweise herbeizuführen. Ich habe ein paar verschiedene Systeme implementiert, das Beste ist wahrscheinlich immer noch die Wiki-Seite mit einer Tabelle von Änderungen, aber es ist immer noch nicht perfekt. / etckeeper ist definitiv ein Plus, aber systemübergreifend schwer skalierbar. und am wichtigsten: Active Directory! Dies ist das Schlüsselbedürfnis.
ckg
4

Ich war in 4 oder 5 Unternehmen, an die ich mich nicht wirklich erinnere.

Wir hatten alle dieses Problem. Keiner von uns hat es zu 100 Prozent gelöst, aber in der Firma, die ich jetzt bin, haben wir das, was ich für die beste Strategie bis heute halte.

Sharepoint / Wiki / Evernote / PINs

  • Sharepoint
    • stöhne alles was du willst ... es hat einige sehr schöne Listenfunktionen.
    • IP-Adresslisten
    • Inventar
    • Dienstkonten und Verwendung
    • Benachrichtigungsprotokolle ändern
  • Wiki
    • Anleitungen
    • Langstrecken-Aufgabenlisten
  • Evernote
    • Mein Partner und ich verwenden dies, um alles, was wir nicht wollen, in Wiki zu stellen
    • Weitere technische Anleitungen
    • Notizzettel, die wir beide sehen müssen
    • Aufgabenabrechnung für die Woche
    • Aufgabenlisten des Auftragnehmers
    • Mit evernote clipper ist es einfach, Screenshots von AD- / Rechteeinstellungen zu erstellen
    • überall verfügbar
  • PINs
    • Passwort-Repository
Thomas Denton
quelle
2

Es gibt wahrscheinlich bessere Tools für einige von diesen, aber das ist, was wir verwenden:

  • Verfolgen Sie Konfigurationsänderungen und Upgrades / Patches auf Serverbasis in einem privaten Wiki
  • Behalten Sie außerdem Anleitungen und Aufzeichnungen zu Problemen / Lösungen im Wiki
  • Verwenden Sie Sharepoint oder Google Text & Tabellen , um autorisierte Kopien von Objekten wie statischen IP-Listen aufzubewahren
  • Verwenden Sie Subversion , um Änderungen an Konfigurationsdateien zu verfolgen
Brent
quelle
Ich verwende gerne die Quellcodeverwaltung für Konfigurationsdateien. Erzwingen Sie "nützliche" Kommentare beim Ein- oder Auschecken einer Version?
Warren
Nein, ich habe tatsächlich ein paar Skripte geschrieben (Submit und Revert), um das Submit und Revertieren von Änderungen zu vereinfachen. Wir experimentieren jetzt jedoch mit etckeeper.
Brent
2

Informieren Sie sich unter Windows über die Microsofts System Center-Serie oder einen anderen Mitbewerber in Bezug auf Konfiguration und Dienstverwaltung für diese Plattform.

Die Änderungen müssen durch eine anständige Änderungsverwaltungsroutine geleitet werden, die sie von sich aus genehmigt und protokolliert, bevor sie tatsächlich abgeschlossen sind. Dies kann für den Anfang 100% manuell sein. Mit einigen der besser integrierten Tools können Sie das Tool auffordern, die eigentlichen Änderungen vorzunehmen und sich "automatisch" von ihm in einer zentralen Konfigurationsdatenbank abzumelden, anstatt sich mit bloßen Händen in die Konsole eines einzelnen Servers zu begeben und die Einstellungen von Hand zu durchsuchen Versuchen Sie, ein Problem im Cowboy-Stil zu beheben.

Oskar Duveborn
quelle
2

Sie sollten unbedingt über einen Änderungsverwaltungsprozess verfügen, insbesondere wenn es mehrere Personen gibt, die über die Fähigkeit / den Zugriff verfügen, Änderungen auf Systemebene in Ihrer Umgebung vorzunehmen. Auf diese Weise kann das Management auch potenzielle Änderungen abzeichnen. Der Nachteil führt jedoch zu einer Verzögerung des Änderungsprozesses, wenn Sie Änderungen nicht sofort vornehmen können.

Einige Möglichkeiten zum Nachverfolgen von Änderungen können die Validierung von Ereignissen in Ihrem SEM (vorausgesetzt, Sie haben einen Sicherheitsereignis-Manager) oder Tools wie Nessus (mit viel Arbeit kann Ihre Umgebung auf Änderungen überprüft werden) umfassen.

David Yu
quelle
2

Dies ist eine lokalisierte, * nix-basierte Antwort. Ich habe keine guten Tools gefunden, um es unter Windows zu emulieren.

Es gibt ein paar Möglichkeiten, dies umzusetzen ... und es einzufangen, wenn Sie es vergessen.

Revisionskontrollsysteme wie Subversion, Git, CVS oder RCS sind eine gute Möglichkeit, den Verlauf einer Konfigurationsdatei zu verfolgen. Wenn Sie kein Revisionskontrollsystem auf Ihren Produktionsservern installieren möchten , können Sie die meisten Vorteile eines RCS nutzen, wenn Sie Konfigurationsdateiverzeichnisse lokal oder remote mit so etwas wie rsnapshot speichern. Sie verlieren jedoch die Möglichkeit der Überwachung oder des Festschreibens Protokolle (obwohl dies mit Kommentaren in den Dateien selbst umgangen werden könnte).

Damit Sie sich daran erinnern, die Änderungen zu protokollieren, ist die automatische Meldung von Konfigurationsänderungen über einen nächtlichen Tripwire- Lauf ein guter Anfang. Nach dem Erstellen der tripwire-Datenbank mit dem aktuellen Status der Dateien wird bei jeder Änderung eine E-Mail beim nächsten Durchlauf gesendet. Sie erhalten diese E-Mail so lange, bis die Datenbank aktualisiert wurde, wodurch der Tripwire "zurückgesetzt" wird.

Greg Arbeit
quelle
1

Ich würde ein Issue-Tracking-System wie Flyspray verwenden (jeder wird es tun, aber ich mag Flyspray für Nicht-Programmier-Sachen). Bevor jemand eine Konfiguration berührt, sollte die Verbesserung / das Problem protokolliert werden. Wenn Sie es reparieren / implementieren, werden die Änderungen in das Ticket übernommen.

Ein Wiki kann nützlich sein, um das aktuelle Setup zu dokumentieren, aber es ist leicht, dass es veraltet ist - und es scheint mehr Mühe zu erfordern, IMO zu aktualisieren.

Sie werden kein automatisiertes Programm finden, um dies zu tun - obwohl Sie es möglicherweise so einrichten könnten, dass Änderungen an bestimmten Konfigurationsdateien automatisch per E-Mail an den Issue-Tracker gesendet werden, wenn Sie dies wünschen.

Ich denke, es geht nur um eine gute Politik, Instrumente und Disziplin mit niedrigen Barrieren.

Draemon
quelle
1

Wir haben etwas Eigenes für die Änderungsprotokollverfolgung in unserer Umgebung erstellt. es ist nichts super-kompliziertes und es funktioniert ganz gut.

  • Eine Richtlinie zur Selbstkontrolle sieht vor, dass jede Änderung, die Ihrer Einschätzung nach von einer Standardkonfiguration abweicht oder möglicherweise Probleme verursacht, im Änderungsprotokollsystem dokumentiert werden sollte.
    • Wenn Sie ein Problem beheben möchten, suchen Sie auf der anderen Seite dieser "Münze" nach aktuellen oder verwandten Changelog-Einträgen.
  • Melden Sie sich beim System an und wählen Sie den Server, den Dienst oder die Hardwarekomponente aus, die Sie ändern
    • Die Komponenten werden zuvor mit grundlegenden demografischen Informationen (Standort, Hersteller, Seriennummer, zuständige Abteilung) in dasselbe System eingegeben.
  • Wählen Sie aus einer Dropdown-Liste mit grundlegenden Kategorien
    • Außerplanmäßige Ausfallzeiten
    • Patchen
    • Hardware-Wartung
    • Software Installation
  • Geben Sie Einzelheiten darüber ein, was Sie getan, gesehen und beobachtet haben
  • Eine Kopie wird an den Verantwortlichen gesendet und als XML-Dateien gespeichert, die von einer Search Appliance indiziert werden.
  • Profitieren

Wie gesagt, nichts Besonderes. Es verwendet PERL CGI (wurde vor einer Milliarde Jahren geschrieben) und eine Google Search-Appliance zur Indizierung.

Mängel:

  • Gruppen von Diensten sind schwierig zu bearbeiten. Sie haben beispielsweise allen 25 Domänencontrollern denselben Patch hinzugefügt. Wir haben keine "Domänencontroller" -Gruppe, daher müssen wir sie alle manuell auswählen
  • Integriert sich nicht in Hardware-, Software- oder Ereignisprotokollfehlerberichte, um bei der Fehlerbehebung zu helfen
  • im Zusammenhang damit manuelle Dateneingabe für alle "demografischen" Daten, wie ich oben sagte

Wie auch immer, wenn Sie sich nach all dem für den Code interessieren, lassen Sie es mich wissen und ich kann ihn wahrscheinlich abrufen, um ihn zu teilen.

Guamaniac
quelle
1

Wie gesagt, es ist oft ein kulturelles Problem - schließlich kümmern sich einige Entwicklungshäuser nicht mehr um Kommentare (selbstdokumentierender Code ist heutzutage ein Modewort!) Und einige verwenden ein Versionskontrollsystem als heiliges Gral der historischen Aufzeichnungen. Offensichtlich sind diese nicht perfekt.

Der einzig wahre Weg, dies zu beheben, besteht darin, es zu einer kulturellen Lösung zu machen. Stellen Sie sicher, dass alle Änderungsgründe in einem Bug-Tracker (oder einer Wissensdatenbank oder einem Wiki) protokolliert werden, und stellen Sie sicher, dass alle Änderungen in einem Änderungskontrollsystem protokolliert werden.

Wir haben Notfalldienstkunden, jede Änderung an ihrem System wird protokolliert, und jedes Mal, wenn wir uns an ihrem System anmelden, müssen wir sie protokollieren. Für einige von ihnen müssen wir zuerst anrufen, um die Erlaubnis zu erhalten (und ich denke, sie protokollieren das auch!). Jede Änderung wird protokolliert und es ist strafbar, das Kundensystem zu ändern, ohne es zu protokollieren.

Es klingt lästig, aber es ist nicht. Sie gewöhnen sich schnell an, sich dem Zugriffsprotokoll und dem Änderungsprotokoll hinzuzufügen - es ist nichts Schlimmeres, als beim Einchecken einer Codeänderung einen Kommentar schreiben zu müssen.

Ich empfehle einen Bugtracker als Änderungskontrollgrundprotokoll, da diese normalerweise leicht zu aktualisieren sind (ich benutze Mantis).

gbjbaanb
quelle
1

Wenn Sie nach der "Unternehmenslösung" suchen (dh Sie haben mehr Geld als Gott und möchten ein wirklich cooles Tool haben), ist das Tool, das ich zur Unterstützung und Bereitstellung von Vor-Ort-Arbeiten verwendet habe, eine der zahlreichen Funktionen.

Keine Ahnung, wie hoch der Basispreis ist, aber bevor HP Opsware kaufte, waren es ~ 350.000 US-Dollar (ohne Support, und vertrauen Sie mir - Sie wollten Support, als ich mit Opsware anfing).

Einige der Kunden, die wir während meiner Arbeit dort hatten, verwendeten die Anwendungskonfiguration und die Schnappschussfunktionen in Verbindung mit Tripwire .

Natürlich, wenn Sie kein Budget haben - das ist eine schlechte Wahl ™ :)

Und fwiw, die Anzeige, die für mich oben auf dieser Seite erschien, als ich sie nachlud, war für Spiceworks . Sieht mächtig ähnlich aus wie HPSA :)

Labyrinth
quelle
1

Wenn alles , was Sie tun möchten , ist Spurwechsel und schaffte es nicht , den gesamten Prozess (dh über Koch oder Puppet), nur rsyncIhr etcVerzeichnis (wo auch immer das sein mag) in einem lokalen git Repo.

for HOST in alpha bravo charlie delta ...; do

    rsync -avz --exclude-from=exclusions -e ssh admin@$HOST:/opt/local/etc/ ./$HOST

done

Natürlich können Sie bei Bedarf weitere Quellen hinzufügen.

Teilbestellung
quelle