Назад | Перейти на главную страницу

Как структурировать отношения между производственными скриптами и контролем версий?

Я отвечаю за поддержку серии скриптов, целью которых является получение данных из API один раз в день и обновление базы данных. Когда я взял на себя эту роль, сценарии хранились в SVN, и раз в день задание cron запускалось от имени пользователя root, обновляло svn, а затем запускало сценарии из каталога svn.

Теперь я хотел бы переработать логику этой настройки, переключиться с root на сервисную учетную запись и т. Д. Я бы хотел, чтобы скрипты находились под контролем версий, но кажется странным выходить из каталога SVN.

Как лучше всего это устроить?

Думаю, вы уже определили две вещи, которые следует изменить:

  1. Прекратите запускать сценарии от имени пользователя root. Для этого не должно быть никаких причин, и это создает уязвимость для простого повышения привилегий, если только root не может писать в сценарии. Из вашего описания кажется, что единственные разрешения, которые должны потребоваться скриптам, - это обновление дерева SVN и запись в базу данных. Поэтому создайте специальную учетную запись пользователя для этой цели и дайте ей достаточно разрешений для выполнения этих двух задач. Затем запустите сценарии из задания cron, принадлежащего этому пользователю.

  2. Если я правильно понимаю, это звучит так, как будто программы и данные, которые они извлекают, хранятся в одном репозитории SVN. Думаю, это работает, но смешивание программ и данных - плохая практика, тем более, что программы будут обновляться только время от времени, а данные обновляются ежедневно. Я бы разделил их на отдельные репозитории SVN.