Für die von uns verwalteten Hosts hat mein Chef eine Vision des Konfigurationsmanagements über versionierte Pakete (in unserem speziellen Fall von fpm erstellte Debian-Pakete). Dies ist zu machen:
- Host-Bereitstellung einfacher
- einfacher, lokale Änderungen zu verfolgen
- Vereinfachen Sie die Fehlerverfolgung, da wir in den meisten Fällen eine Softwareversion mit einem Fehler versehen können, unabhängig davon, ob es sich um einen Funktions- oder einen Konfigurationsfehler handelt.
Die andere Alternative ist das Konfigurationsmanagement über Ansible mit dem empfohlenen Layout wie im Handbuch, das wir derzeit verwenden. Wir installieren versionierte Softwarepakete (so ziemlich alle Webdienste), die für die eigene paketspezifische Konfiguration verantwortlich sind, und überlassen Ansible der systemweiten Konfiguration. Beim Aktualisieren der Hosts-Software müssen lediglich die Versionsnummern erhöht und die Skripte erneut ausgeführt werden. Wir verlassen uns stark auf die "var_prompts" -Funktionalität von Ansible, um sicherzustellen, dass vertrauliche Informationen von der Konfiguration getrennt bleiben.
Im Fall "Konfigurationsverwaltung über versionierte Pakete":
Für die Bereitstellung rufen wir einfach einen minimalen Server (Proxys usw.) auf und verwenden einen Paketmanager (in unserem Fall passend), um ein einzelnes Umbrella-Paket zu installieren, das alle abhängigen Pakete installiert. Wenn Sie Änderungen an einem der abhängigen Pakete vornehmen, wird einfach die oberste Paketversion angezeigt, wodurch das Aktualisieren vorhandener Bereitstellungen vereinfacht wird.
Für die Konfiguration hätte jedes Softwarepaket ein zugehöriges "Konfigurations" -Paket, um nur Änderungen an der Konfiguration zuzulassen. Jedes Paket verfügt über unabhängige Konfigurationsdateien, um Konflikte zwischen Paketen zu vermeiden, wenn lokale Änderungen auf dem Host überprüft werden. Anstatt Befehle auszuführen, die config generieren, würden wir sicherstellen, dass wir die generierten Dateien als Teil des Pakets haben, aber dennoch das Ausführen von Befehlen über die Skripte vor / nach der Installation zulassen. AFAIK, es gibt nicht viele Fälle, in denen wir Pakete haben, die auf derselben Konfigurationsdatei basieren. Wenn dies jedoch der Fall ist (was bei der Systemkonfiguration der Fall wäre), hätten wir ein anderes Paket mit einem Abhängigkeit von beiden. Ich kann sehen, dass dieser spezielle Fall außer Kontrolle gerät. Dies könnte jedoch gesteuert werden, indem immer unabhängige Konfigurationsdateien sichergestellt werden. Am Ende hätte jeder Host sein eigenes Konfigurationspaket. Offensichtlich würden alle diese Dateien der Quellcodeverwaltung unterliegen, und wir könnten unser eigenes einfaches Template-System hochfahren, damit wir auch die Flexibilität von Ansible-Rollen haben können.
Ich bin gespannt, warum ich keine Informationen / Analysen zu dieser Art von Workflow zum Konfigurieren und Bereitstellen von Hosts finden kann. Vermisse ich etwas, das bei einem solchen Ansatz im Vergleich zu vorhandenen Konfigurationsmanagement-Tools grundlegend fehlerhaft ist?