Це дуже широке запитання щодо методів та порад щодо змінних / структури середовища. Але в кінцевому підсумку я шукаю відповіді на дуже специфічне питання "Як мені зберігати змінні середовища"?
По-перше, деякі пояснення:
- Навколишнє середовище для мене може бути від 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 .
Я розумію, що існує декілька технологій, які, здається, є частиною того, що може знадобитися, наприклад, консул, але, здається, вони найкраще працюють в умовах, що обслуговують одне велике застосування, а не безліч менших, трохи відрізняються.
Я по суті бачу, що нам потрібно написати сценарій інвентаризації, а потім просто засунути всі наші дані в якусь нецільову вбудовану базу даних, а потім продовжувати, як ніби нічого не змінилося. Я вважаю це можливим способом потенційно зменшити багато даних, які ми зберігаємо, і, можливо, розглянути різні способи зберігання даних, а не просто масштабувати те, що служить їм знову.
Я сподіваюся, що хтось має якийсь досвід у застосуванні інфраструктури як коду, коли доводиться мати справу з безліччю менших середовищ на відміну від одного, двох або трьох величезних.
Будь-які пропозиції?