Es kommt darauf an, was genau Sie brauchen und wonach Sie suchen. Aber im Allgemeinen gibt es mehrere Lösungen für "Konfigurationsmanagement wie:
- Marionette
- Koch
- cfengine
- ansibel
- Salz
usw. Ich persönlich würde Puppet empfehlen, da es eine große Community und viele extern bereitgestellte Rezepte hat. Auf diese Weise können Sie Systeme automatisch konfigurieren und verwalten. Kombiniert man dies mit eigenen Repositories und automatisierten Updates über z.B. unattended-upgrades
Sie können das System automatisch aktualisieren.
Eine andere Lösung besteht darin, einfach Ihre eigenen Pakete wie company-base
bereitzustellen etc. welches automatisch von der notwendigen Software abhängt und Ihr System automatisch konfigurieren kann.
Sie sollten sich auch mit automatisierten Bereitstellungen (Barebone und virtualisiert) befassen. Wenn Sie dies mit einem Konfigurationsmanagement oder einem 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 Puppet-Unterstützung integriert hat. Wenn Sie es selbst tun möchten, können Sie sich Kickstart (Redhat et. al.) oder "Preseeding" ansehen, um Ihr System automatisch zu konfigurieren. Für Debian können Sie auch so etwas wie debootstrap oder einen Wrapper namens grml-debootstrap verwenden, der virtualisierte Images unterstützt.
Um die Bereitstellung der VirtualBox-Images für Ihre Entwickler zu erleichtern, werfen Sie einen Blick auf vagrant. Es ermöglicht Ihnen, die Erstellung virtualisierter Systeme zu automatisieren, wobei VirtualBox Chef-, Puppet- und Shell-Skripte unterstützt, um Ihre virtuelle Umgebung anzupassen.
Wenn Sie die Lösung Ihres bestehenden Anbieters verwenden möchten, sollten Sie ihn fragen, wie er Ihre Systeme verwaltet, aber es wird wahrscheinlich eine Art Konfigurationsmanagement sein. Es ist möglicherweise möglich, ihren Agenten auf Ihren Systemen auszuführen, wenn Sie auf den Konfigurationsserver zugreifen können.
Für Google-Keywords schauen Sie in devops
, configuration management
, it automation
und server orchestration
.
Kurz gesagt, automatisieren Sie so viel wie möglich und denken Sie nicht einmal daran, Dinge manuell zu erledigen.
Ulrich hat bereits die Antwort bezüglich Softwarebereitstellung und automatisierter Servereinrichtung gegeben.
Die Prinzipien dahinter sind
- Definieren Sie, wie Ihre Server aussehen sollen - dazu gehören gängige Software, die standardmäßig installiert wird, 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 angemessenes Ä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 im Staging und zuletzt in der Produktion
Sie haben nach einem praktischen Tool gefragt, um Massen von Servern zu verwalten - mein persönlicher Favorit ist cluster-ssh (cssh
). Einmal eingeben und Änderungen auf vielen Servern gleichzeitig vornehmen.
Wenn Sie ein Problem entdecken und eine Lösung dafür haben, die das Problem behebt:
- Wenden Sie den Fix auf Test/Dev/Staging/Prod (siehe oben) an, wenn er wirklich funktioniert
- Wenden Sie den Fix auf Ihre virtuellen Vorlagen an, damit zukünftige VM-Klone diesen Fehler nicht mehr haben
- Wenden Sie den Fix auf Ihren physischen Installationsprozess an (Kickstart/autoyast/was auch immer)
- Wenden Sie den Fix auf ALLE Server an
Wenn Sie mit einer Vielzahl von Servern konfrontiert sind, die behoben werden müssen, ist dies ein Prozess, der gut dokumentiert werden muss, und am Ende sollte ein anderes Team überprüfen, ob der Fix vollständig angewendet wurde.
Dazu setzen wir Mantis (Open Source, PHP) ein.
Ich verwalte ungefähr 30 Produkte und einige hundert Server in mehreren Ländern. Ich bin der Software-Konfigurationsmanager, habe also keinen Root-Zugriff (absichtlich), berühre die Datenbanken oder ihre Server nicht (wiederum absichtlich) und muss wegen der Unternehmenssicherheit viel herumspringen. Aber ich verwalte die Konfigurationen in Test, Staging und Produktion, einschließlich Datenbankverknüpfungen und Änderungen. Ich habe eine Reihe von Skripten, die mit Kombinationen von ssh
an Server gesendet werden , python
und Shell-Skripte.
Die wichtigsten Dinge, an die Sie denken sollten, sind:
- Welche Arten von Interaktionen werden Sie mit Ihren Servern haben? Nur Datei-Uploads? Ausführen von Befehlszeilenprogrammen? Laufen entfernte X-Clients?
- Welches Sicherheitsniveau ist für den Zugriff auf diese Server erforderlich? Firewalls, sichere Netzwerke, VPN? Ist
ssh
ausreichend und von einem zentralen sicheren Ort? - 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 so etwas wie
ssh
streamen um es aus der Ferne auszuführen? Können Sie es mitexpect
skripten oder nur ein Befehlszeilenaufruf?
VirtualBox bietet viele Befehlszeilentools, die Sie mit nur ssh
verwalten können oder Systeme wie puppet
wie Ulrich erwähnt.