Wir haben einen Server eingerichtet, auf dem die Infrastruktur für eine kleine Vereinigung ausgeführt wird. Bisher haben wir versucht, die Konfiguration mit Ansible zu verwalten, aber das war kein großer Erfolg. Vielleicht machen wir es falsch.
Im Prinzip besteht die Idee darin, dass dieser Server die meiste Zeit in Ruhe gelassen wird und die Leute einmal in einem blauen Mond Dinge hinzufügen oder ändern. Aus diesem Grund ist es wichtig, dass alles, was auf dem Server konfiguriert ist und ausgeführt wird, gut dokumentiert und klar ist, da Personen, die das System nicht häufig verwalten, den Überblick verlieren müssen (geschweige denn die Details merken). Darüber hinaus ändert sich im Laufe der Zeit die Zusammensetzung der Gruppe von Personen, die diesen Server verwalten (wenn Personen das "Komitee" verlassen und diesem beitreten).
Wir begannen mit einer Neuinstallation und fügten Rollen in ansible hinzu, wann immer wir etwas einrichten wollten (nginx, phpfpm, postfix, firewall, sftp, munin, ..). Vielleicht können wir aufgrund unserer Unerfahrenheit eine Reihe von ansiblen Aufgaben natürlich nie genau so eingeben, wie wir es auf einmal brauchen, auch weil die Konfiguration ein Versuch und Irrtum ist. Das bedeutet, dass wir in der Praxis normalerweise zuerst den Dienst konfigurieren, den wir auf dem Server ausführen möchten, und dann in ansible Aufgaben übersetzen. Sie können sehen, wohin das führt. Die Leute vergessen, die Aufgabe dann zu testen, oder haben Angst, dies zu tun, wenn die Gefahr besteht, dass Dinge kaputt gehen, oder schlimmer noch: Wir vergessen oder vernachlässigen es, Dinge zu Ansible hinzuzufügen.
Heute haben wir sehr wenig Vertrauen, dass die ansible Konfiguration tatsächlich die Konfiguration auf dem Server widerspiegelt.
Derzeit sehe ich drei Hauptprobleme:
- Es ist schwierig (sprich: wir haben keine gute Möglichkeit), ansible Aufgaben zu testen, ohne das Risiko einzugehen, Dinge zu zerbrechen.
- Es fügt zusätzliche Arbeit hinzu, um zuerst die gewünschte Konfiguration herauszufinden und dann herauszufinden, wie dies in ansible Aufgaben übersetzt werden kann.
- (Idealerweise) verwenden wir es nicht häufig genug, um Vertrautheit und Routine aufzubauen.
Eine wichtige Überlegung dabei ist, dass es für Neulinge für alles, was wir am Ende tun, leicht sein sollte , die Seile ohne viel Übung zu lernen.
Gibt es eine praktikable Alternative, die noch einige Garantien und Überprüfungen bietet (vergleichbar mit dem Zusammenführen von Ansible-Dateien mit einigen master
), die "Dinge konfigurieren und aufschreiben, was Sie getan haben" nicht bieten?
EDIT: Wir haben darüber nachgedacht, uns /etc
zu git zu verpflichten. Gibt es eine vernünftige Möglichkeit, Geheimnisse (private Schlüssel usw.) auf diese Weise zu schützen, aber das Konfigurations-Repository irgendwie außerhalb des Servers verfügbar zu haben?