Лучшая практика для git-репо для системных конфигурационных файлов (nginx / php.ini и т. Д.) - PullRequest
0 голосов
/ 17 мая 2018

У меня довольно (я думаю) нормальная настройка на CentOS 6.

Мои сайты находятся в /var/www/sites.

  • / вар / WWW / сайты / site1
  • / вар / WWW / сайты / site2
  • и т.д ...

У меня есть git-репо для каждой из этих папок.

Я бы хотел создать git-репо для различных конфигурационных файлов:

  • / и т.д. / nginx.conf
  • / и т.д. / Nginx / сайты-доступные /
  • / и т.д. / php.ini
  • / и т.д. / my.cnf
  • и т.д ...

Я чувствую, что могу создать git-репозиторий в папке / etc /, иметь .gitignore с подстановочным знаком *, чтобы игнорировать все, а затем принудительно добавить нужные мне файлы. Это плохая практика? Как-то немного "грязно".

Что, если я решу, что есть важный файл вне / etc /, который я хотел бы, хотя, возможно, вместо этого некоторые конфигурации оказались в / opt /. Так что, возможно, я должен создать репо на /. Хм, начинаю чувствовать себя еще грязнее, тем более что это репо «содержало бы» репозитории моего сайта… даже если они были исключены через подстановочный знак .gitignore - это кажется немного… неправильным. Это так?

Полагаю, альтернативой было бы создать каталог / config / с репо в нем, переместить в него все соответствующие файлы и затем добавить символические ссылки в том месте, где эти файлы должны быть. Не знаете, может ли это вызвать нежелательные осложнения / проблемы?

Предположительно, я не первый, кто хочет "репо конфигурации" - что в итоге делает большинство людей?

Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Как отмечено в комментарии @ KamilKiełczewski, полагаться на контейнеры Docker для изоляции и настройки пользовательской конфигурации для вашего сервера (серверов) - это хороший подход.

В противном случае, для более традиционного подхода, напрямую основанного на настройке вашего хоста, вы можете попробовать одну из следующих трех стратегий:

  1. Управление одним Git-репозиторием для всей вашей папки /etc с помощью etckeeper ;
  2. Управление несколькими репозиториями Git для (частей) вашей папки /etc с использованием пользовательской конфигурации vcsh и, необязательно, myrepos ;
  3. Или используйте GNU-хранилище вместе с символическими ссылками, используя подход, аналогичный этой статье ...

На первый взгляд, я бы сказал, что вариант 3 будет сложнее поддерживать (из-за накладных расходов по символическим ссылкам), вариант 1 будет приемлем, если вам просто нужно отслеживать все /etc файлы одного сервера для целей резервного копирования. и вариант 2 был бы более многообещающим подходом (хотя я сам не проверял его в конкретном контексте).

Также обратите внимание, что Git не поддерживает права доступа к файлам так, как это требуется для большинства файлов /etc, но etckeeper был специально разработан для улучшения Git в этом аспекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...