Как правильно хранить конфиги на продакшене?

Привет кто сталкивался с такой проблемой, нужно реализовать контроль версий конфиг файлов, больше это нужно для реализации бекапов, например есть много конфигов для nginx, нужно иметь всегда зеркало этих конфигов т.к местами конфиги очень трудные и при исправлении/добавлении какого-то функционала легко можно что ни будь сломать, нужно возможность оперативно выкачать пред версию конфига, ну и есть конфиги разных приложений которые тоже желательно иметь в зеркале с контролем версий, как это можно релизовать? Кто сталкивался с такой задачей поделитесь мыслями, спасибо.
UPD имею представление о git и github с другими системами контроля версий не имел дела
  • Вопрос задан
  • 3591 просмотр
Пригласить эксперта
Ответы на вопрос 6
saboteur_kiev
@saboteur_kiev Куратор тега Git
software engineer
Конфиги nginx позволяют делать include, поэтому можете все sensitivity данные выложить в отдельный файлик, и добавить его в .gitignore, а остальное можно и в гите хранить (но лучше не гитхаб, а свой).

Стандартный велосипедный способ для конфигов - перед тем как поменять config.cfg делаешь
cp config.cfg config.cfg-yymmdd
можно и им обойтись.
Ответ написан
@aol-nnov
правильный ответ - не хранить конфиги с секретами в системе контроля версий.

ты можешь сделать так, чтобы конфиг из гита предоставлял т.н. "sensible defaults", а все секреты будут переопределены вторым конфигом, который подложит система деплоя.
Это про твои приложения.

про управление конфигурациями узлов (контуперов, то бишь), кошерно использовать системы управления конфигурацией - ansible, salt и пр.
Из наколеночного есть etckeeper, например
Ответ написан
Комментировать
@huwesu
Любая современная развитая система контроля версий
git, mercurrial...

Как верно заметили - ключи и пароли хранить отдельно от конфигов.
Ответ написан
Комментировать
voronkovich
@voronkovich
Помимо уже указанного выше, почитайте про 12-факторные приложения, там ключи и пароли рекомендуется конфигурировать через переменные окружения. 12factor.net/config
Соответственно, сами конфигурации, можно хранить в системе контроля версий.
Ответ написан
Комментировать
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
VCS - наше все :) Тип выбираете по вкусу - централизованные, распределенные... Единственное что, как верно заметили - не хранить ключи, пароли, никакой такой информации.
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
Конфигурацию нужно хранить в VCS, например на том же github или gitlab. Лично я бы рекомендовал GitHub, если ваш проект не подпадает под гос.тайну или не является системой управления ядерным реактором. В остальных случаях код можно хранить на GitHub. Даже Microsoft хранит свой код на нем.

Для хранения ключей и т.д. нужно использовать решения вроде Vault.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы