Dies ist eine sehr breite Frage zu Methoden und Ratschlägen in Bezug auf Umgebungsvariablen / -strukturen. Aber letztendlich suche ich nach Antworten auf die sehr spezifische Frage: "Wie soll ich meine Umgebungsvariablen speichern?"
Zunächst einige Klarstellungen:
- Eine Umgebung kann für mich aus 3 bis 10 Servern bestehen und ist eine Möglichkeit, die Infrastruktur eines bestimmten Kunden zu enthalten.
- In jeder Umgebung gibt es einige Variablen, die meist automatisch aus einigen Schlüsseleingaben (Name, Größe usw.) generiert werden.
Derzeit speichern wir alle unsere Umgebungsvariablen in einer Struktur wie der folgenden:
<playbook>.yml # Various playbooks for deployment
roles/windows # Ansible role for Ubuntu
roles/ubuntu # Ansible role for Ubuntu
config/hosts/<name>.yml # Ansible inventory
config/hosts/vars/<name>.json # Environment specific variables
Im Moment wird die Konfiguration als Submodul im obigen Git-Repository initialisiert. Da sich die Variablendatei ziemlich häufig ändert, hat dies zu Problemen mit der Änderung der Daten geführt, die ein-, zweimal oder sogar dreimal zwischen den Festschreibungen liegen, wodurch es immer schwieriger wird, Änderungen nachzuverfolgen.
Wie ich persönlich sehe, sollten wir versuchen , alle unsere Kundenvariablen zentral / skalierbar zu speichern und uns dann mit einem dynamischen Inventar mit Ansible darauf einzulassen .
Ich verstehe, dass es einige Technologien gibt, die einen Teil dessen leisten, was erforderlich sein könnte, wie z. B. Consul, aber sie scheinen am besten in einer Umgebung zu funktionieren, die nur eine große Anwendung bedient, anstatt viele kleinere, leicht unterschiedliche.
Ich sehe im Wesentlichen, dass wir ein Inventarskript schreiben und dann einfach alle unsere Daten in eine nicht speziell erstellte Datenbank schieben müssen und dann so weitermachen müssen, als ob sich nichts geändert hätte. Ich sehe dies möglicherweise als eine Möglichkeit, viele der derzeit gespeicherten Daten möglicherweise zu reduzieren und möglicherweise verschiedene Möglichkeiten zum Speichern der Daten zu untersuchen, anstatt nur zu vergrößern, was sie erneut bereitstellen.
Ich hoffe, jemand hat Erfahrung in der Implementierung von Infrastruktur als Code, wenn er mit vielen kleineren Umgebungen im Gegensatz zu einer, zwei oder drei großen Umgebungen umgehen muss.
Irgendwelche Vorschläge?