Linux Bulk / Remote Administration


10

Neben unserer internen IT-Infrastruktur verfügen wir über rund 500 Linux-Computer, auf denen unsere Dienste für die Online-Welt gehostet werden. Sie sind in einer Reihe von Clustern wie Datenbank An, Produkt An, NFS, Backoffice usw. zusammengefasst. Darüber hinaus werden sie von einem externen Anbieter gemäß unseren Spezifikationen und Anforderungen verwaltet.

Wir haben jedoch große Probleme bei der (Web-) Softwareentwicklung, dem Roll-out und der Bereitstellung - insbesondere, weil die Entwicklungs- und Staging-Umgebungen fast nichts mit den Live-Systemen gemeinsam haben (ich erspare die bösen Details.) .

Daher habe ich versucht, virtuelle Maschinen zu erstellen, die verschiedenen Live-Systeme so genau wie möglich zu kopieren und sie darauf vorzubereiten, z. B. eine Verbindung zu den Entwicklungsdatenbanken anstelle der "realen" für Entwickler transparent herzustellen (sie sind es nicht root). Das funktioniert ziemlich gut, aber ...

Ich habe mich gefragt, wie man diese Systeme remote und in großen Mengen verwalten kann . Gibt es eine Softwarefamilie, die mir nicht bekannt ist? Oder zumindest einige Techniken oder Prinzipien, mit denen man vertraut sein sollte?

Wir würden jedem Entwickler eine Reihe von Bildern zur Verfügung stellen, die lokal ausgeführt werden sollen (VirtualBox). Die QS-Abteilung. würde virtuelle Cluster (XEN oder Hyper-V) erhalten. Wenn ich ein zusätzliches Servermodul bereitstellen, eine neue Datenbankverbindung umleiten oder einfach alles aktualisieren möchte, was vom Paketmanager bereitgestellt wird ... wie könnte ich das möglicherweise tun, ohne gezwungen zu sein, mich bei jedem System und / oder anzumelden Bitten Sie meine Kollegen, ein Fixture-Skript herunterzuladen und auszuführen?

Ich glaube, es gibt viele Lösungen. Irgendwie bin ich zu dumm, um die richtigen Schlüsselwörter in die Suchmaschinen einzugeben ... Oder ist dieses Problem nicht so trivial, wie es sich anhört?

Für die Aufzeichnung:

  • Auf fast allen Systemen wird Debian GNU / Linux 6.x "Squeeze" ausgeführt.
  • Kein Entwickler ist gezwungen, ein bestimmtes Betriebssystem an seiner Workstation zu verwenden
  • Das Budget ist natürlich begrenzt, aber nicht zu klein, um proprietäre Software zu kaufen
  • Eine Lösung, an der unser oben genannter Anbieter beteiligt wäre, wird bevorzugt

Antworten:


15

Es kommt darauf an, was genau Sie brauchen und wonach Sie suchen. Im Allgemeinen gibt es jedoch mehrere Lösungen für das " Konfigurationsmanagement wie:

  1. Marionette
  2. Koch
  3. cfengine
  4. ansible
  5. Salz-

usw. Ich persönlich würde Puppe empfehlen, da es eine große Community und viele externe Rezepte hat. Auf diese Weise können Sie Systeme automatisch konfigurieren und verwalten. Wenn Sie dies mit eigenen Repositorys und automatisierten Updates kombinieren, z. B. können unattended-upgradesSie das System automatisch aktualisieren.

Eine andere Lösung besteht darin, nur eigene Pakete wie company-baseusw. bereitzustellen, die automatisch von der erforderlichen Software abhängen und Ihr System automatisch konfigurieren können.

Sie sollten sich auch mit automatisierten Bereitstellungen (Barebone und virtualisiert) befassen. Wenn Sie dies mit dem Konfigurationsmanagement oder Ihrem eigenen Repository kombinieren, können Sie Ihre Systeme einfach automatisieren und neu installieren. Wenn Sie mit der automatisierten Installation beginnen möchten, schauen Sie sich theforman an, das sowohl libvirt- als auch Bare-Bone-Installationen unterstützt und eine integrierte Puppenunterstützung bietet. Wenn Sie es selbst tun möchten, können Sie sich mit Kickstart (redhat et al.) Oder "Preseeding" befassen, um Ihr System automatisch zu konfigurieren. Für Debian können Sie auch Debootstrap oder einen Wrapper namens grml-debootstrap verwenden , der virtualisierte Images unterstützt.

Um die Bereitstellung der VirtualBox-Images für Ihren Entwickler zu erleichtern , können Sie die Erstellung virtualisierter Systeme mit VirtualBox automatisieren, das Chef-, Puppen- und Shell-Skripte unterstützt, um Ihre virtuelle Umgebung anzupassen.

Wenn Sie die Lösung von Ihrem bestehenden Anbieter verwenden möchten, sollten Sie ihn fragen, wie er Ihre Systeme verwaltet. Es handelt sich jedoch wahrscheinlich um eine Art Konfigurationsmanagement. Möglicherweise können Sie den Agenten auf Ihren Systemen ausführen, wenn Sie auf den Konfigurationsserver zugreifen können.

Für Google - Keywords suchen in devops, configuration management, it automationund server orchestration.

Kurz gesagt, automatisieren Sie so viel wie möglich und denken Sie nicht einmal daran, Dinge manuell zu machen.


1
Vielen Dank! Das ist viel zu lesen, sieht aber ziemlich vielversprechend aus.
mjhennig

@mjhennig Ich habe gerade einige weitere Informationen hinzugefügt, auch bezüglich. Einsatz. Es gibt viele Ressourcen, aber am wichtigsten ist, dass Sie nicht wirklich selbst über ssh / verteilte Shells arbeiten, sondern ein System dafür haben.
Ulrich Dangel

2
Es ist nichts Falsches daran, Dinge selbst zu tun, insbesondere wenn die verfügbaren Werkzeuge nicht dem Zweck entsprechen. Systeme wie Puppet sind größtenteils Systemadministrationswerkzeuge, nicht das Konfigurationsmanagement an sich. Eine große Mehrheit der von mir verwendeten Systeme ist nicht einmal von einem zentralen Server aus zugänglich, sondern von den Laptops der Benutzer über (ausgerechnet) VPN - versucht dies seit drei Jahren zu ändern. Unsere IT-Abteilung ist nach Regionen aufgeteilt, da jede Region nicht richtig auf die andere zugreifen kann. In einigen Situationen sind selbst erstellte Skripte erforderlich. Hier beginnt auch die Innovation.
Arcege

3
@Arcege Ich habe gerade Ihren Kommentar positiv bewertet, Skripte sind erforderlich und Sie müssen nicht Ihre gesamte Infrastruktur auf einmal konvertieren. Der wichtigste Teil ist, Dinge zu automatisieren und wiederholbar zu machen. Aber die beschreibende Natur von Puppe und Koch hat einige einzigartige Aspekte, z. B. können Sie Puppenklassen mit testen und verifizieren cucumber-puppet. Natürlich können Sie Ihr eigenes Framework entwickeln / erweitern, indem Sie vorhandene Komponenten wiederverwenden, aber es hat sich so angehört, als ob OP derzeit nichts vorhanden ist. Wenn Sie von vorne anfangen, ist es meiner Meinung nach am besten, ein vorhandenes Framework zu verwenden.
Ulrich Dangel

Ja, ich bin mit automatisierten / wiederholbaren Vorgängen einverstanden. Ich habe eine Reihe von automatisierten oder per Knopfdruck selbst erstellten Skripten, um eine Schnittstelle zwischen vorhandenen Systemen wie Jenkins / Oc4j und Subversion / Bugzilla-Integration herzustellen. Ich stimmte Ihrem Kommentar "Sie sollten nicht wirklich selbst etwas tun" (stark) zu. Manchmal sind vorhandene Frameworks nicht anwendbar, wie in meiner von mir beschriebenen Situation.
Arcege

3

Ulrich gab bereits die Antwort bezüglich Softwarebereitstellung und automatisierter Serverkonfiguration.

Die Prinzipien dahinter sind

  • Definieren Sie, wie Ihre Server aussehen sollen - dazu gehören gängige, standardmäßig installierte Software, das Partitionierungsschema und das Dateisystem-Layout
  • Produktions-, Staging-, Test- und Entwicklungsserver sollten sich in Bezug auf diese grundlegenden Standards nicht unterscheiden (andernfalls werden Sie später auf Probleme stoßen - wie Sie es getan haben).
  • Verwenden Sie ein ordnungsgemäßes Änderungsmanagement, um ALLE von Ihnen vorgenommenen Änderungen zu dokumentieren (einschließlich winziger einzeiliger Änderungen in jeder Konfiguration).
  • Wechseln Sie immer zuerst im Test, dann in der Entwicklung, dann in der Inszenierung und zuletzt in der Produktion

Sie haben nach einem praktischen Tool zum Verwalten von Servern gefragt - mein persönlicher Favorit ist cluster-ssh ( cssh). Geben Sie einmal ein und nehmen Sie gleichzeitig Änderungen auf vielen Servern vor.

Wenn Sie ein Problem entdecken und eine Lösung dafür finden, mit der das Problem behoben wird:

  1. Wenden Sie das Update auf Test / Dev / Staging / Prod (siehe oben) an, wenn es wirklich funktioniert
  2. Wenden Sie das Update auf Ihre virtuellen Vorlagen an, damit zukünftige VM-Klone diesen Fehler nicht haben
  3. Wenden Sie das Update auf Ihren physischen Installationsprozess an (Kickstart / Autoyast / was auch immer).
  4. Wenden Sie den Fix auf ALLE Server an

Wenn Sie mit einer Vielzahl von Servern konfrontiert sind, um dies zu beheben, muss dieser Prozess gut dokumentiert werden. Am Ende sollte ein anderes Team prüfen, ob der Fix vollständig angewendet wurde.

Zu diesem Zweck setzen wir Mantis (Open Source, PHP) ein.


2

Ich verwalte ungefähr 30 Produkte und einige hundert Server in mehreren Ländern. Ich bin der Softwarekonfigurationsmanager, daher habe ich keinen Root-Zugriff (beabsichtigt), berühre weder die Datenbanken noch deren Server (wiederum beabsichtigt) und muss aus Gründen der Unternehmenssicherheit viele Reifen springen. Aber ich verwalte die Konfigurationen in Test, Staging und Produktion, einschließlich Datenbankverknüpfungen und Änderungen. Ich habe eine Reihe von Skripten , die unter Verwendung von Kombinationen von Servern ausgehen ssh, pythonund Skripte Shell.

Die wichtigsten Dinge, über die man nachdenken sollte, sind:

  1. Welche Art von Interaktionen werden Sie mit Ihren Servern haben? Nur Datei-Uploads? Befehlszeilenprogramme ausführen? Remote X-Clients ausführen?
  2. Welche Sicherheitsstufe ist für den Zugriff auf diese Server erforderlich? Firewalls, sichere Netzwerke, VPN? Ist sshausreichend und von einem zentralen sicheren Ort?
  3. Wie viel kann auf jedem Server automatisiert werden? Können Sie ein Programm auf jedem Server installieren und ausführen, oder müssen Sie das Programm über etwas streamen ssh, um es remote auszuführen? Können Sie es mit expectoder nur mit einem Befehlszeilenaufruf skripten?

VirtualBox bietet viele Befehlszeilentools, die Sie über Just sshoder Systeme wie puppetUlrichs erwähnen können.


2
Nur ein kleiner Vorschlag bezüglich. virtualbox, schauen Sie sich vagrantup.com an. Es kann die Erstellung virtueller Bilder vereinfachen und automatisieren.
Ulrich Dangel

Leider ist es nahezu unmöglich, auch nur einen einfachen Netzwerkzugriff zwischen Remote-Testumgebungen zu erhalten. Das Einrichten einer Virtualbox-Farm wäre noch schwieriger. Ich habe Probleme, die IT nur zu bitten, Standardsoftware mit dem zu aktualisieren, was seit mehr als einem Jahr veraltet ist, da es nicht Teil der Standard-RedHat-Repositorys ist.
Arcege

Was meiner Erfahrung nach bei veralteter Software geholfen hat, ist entweder zu zeigen, dass die Software entweder EOL ist oder dass Sicherheitsprobleme vorliegen. Die Netzwerkeinstellungen / -verbindungen sind oft viel schwieriger zu erreichen. Versuchen Sie möglicherweise zu betonen, wie durch das Verbinden der verschiedenen Testumgebungen Geld gespart, Prozesse vereinfacht, QS-Zeit gespart oder die Testumgebung realistischer gestaltet werden kann. Es könnte auch hilfreich sein, wenn Sie Leute aus den verschiedenen Branchen an Bord holen.
Ulrich Dangel
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.