Это очень широкий вопрос о методах и рекомендациях относительно переменных / структуры среды. Но в конечном итоге я ищу ответы на очень специфический вопрос «Как хранить переменные среды?».
Сначала некоторые уточнения:
- Среда для меня может быть от 3 до 10 серверов и является способом сдерживания инфраструктуры конкретного клиента.
- Внутри каждой среды есть несколько переменных, которые в основном автоматически генерируются из нескольких ключевых входных данных (имя, размер и т. Д.).
В настоящий момент мы храним все переменные окружения в такой структуре:
<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
Прямо сейчас конфигурация инициализируется как подмодуль в репозитории git выше. Поскольку файл переменных изменяется довольно часто, это вызывало проблемы с изменением данных, один, два или даже три раза между фиксациями, что усложняло отслеживание изменений.
Поскольку я лично вижу, что это продвигается вперед, мы должны стремиться хранить все переменные наших клиентов централизованным / масштабируемым образом, а затем подключаться к ним с помощью динамического инвентаря с ansible .
Я понимаю, что есть несколько технологий, которые, кажется, выполняют часть того, что может потребоваться, например Consul, но они, кажется, работают лучше всего в среде, которая обслуживает одно большое приложение, а не множество небольших, слегка отличающихся друг от друга.
По сути, я вижу, что нам нужно написать сценарий инвентаризации, а затем просто поместить все наши данные в какую-то нецелевую базу данных, а затем продолжать работу, как будто ничего не изменилось. Я рассматриваю это как способ потенциально урезать большую часть данных, которые мы храним в настоящее время, и, возможно, искать другие способы хранения данных, а не просто увеличивать то, что обслуживает их снова.
Я надеюсь, что у кого-то есть опыт реализации инфраструктуры как кода, когда приходится иметь дело со множеством небольших сред, а не с одной, двумя или тремя огромными.
Какие-либо предложения?