Il s'agit d'une question très large sur les méthodes et les conseils concernant les variables / structure de l'environnement. Mais en fin de compte, je cherche des réponses à la question très spécifique de "Comment dois-je stocker mes variables d'environnement?"
Tout d'abord quelques clarifications:
- Un environnement pour moi peut être de 3 à 10 serveurs et est un moyen de contenir l'infrastructure d'un client spécifique.
- À l'intérieur de chaque environnement, il y a quelques variables qui sont pour la plupart générées automatiquement à partir de quelques entrées clés (nom, taille, etc.).
Dans l'état actuel des choses, nous stockons toutes nos variables d'environnement dans une structure comme celle-ci:
<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
À l'heure actuelle, la configuration est initialisée en tant que sous-module dans le référentiel git ci-dessus. Comme le fichier de variables change assez fréquemment, cela a provoqué des problèmes de modification des données, une, deux ou même trois fois entre les validations, rendant les modifications de plus en plus difficiles à suivre.
Comme je le vois personnellement, nous devrions chercher à stocker toutes nos variables client de manière centralisée / évolutive, puis à s'y connecter avec un inventaire dynamique avec ansible .
Je comprends qu'il existe quelques technologies qui semblent faire une partie de ce qui pourrait être nécessaire, comme Consul, mais elles semblent fonctionner mieux dans un environnement qui sert une grande application plutôt que de nombreuses petites plus légèrement différentes.
Je vois essentiellement que nous devons écrire un script d'inventaire, puis simplement pousser toutes nos données dans une base de données construite à des fins non spécifiques, puis continuer comme si rien n'avait changé. Je vois cela en théorie comme un moyen de réduire potentiellement un grand nombre de données que nous stockons actuellement et peut-être d'examiner différentes façons de stocker les données plutôt que de simplement augmenter ce qui les sert à nouveau.
J'espère que quelqu'un a une certaine expérience dans la mise en œuvre d'une infrastructure en tant que code lorsqu'il doit gérer de nombreux environnements plus petits, par opposition à un, deux ou trois énormes.
Aucune suggestion?