Куда и как правильно положить свои скрипты и как их лучще хранить?
Не корысти ради, а токмо волею пославшей мя супруги заказчиков, не имеющих денег на админов, вынужден не только разработкой заниматься, но и администрированием vds под их проекты, над которыми работаю. использую Ubuntu Server. Есть несколько скриптов на bash/python/php для сервера (создание виртхостов nginx+php-fpm и пользователей для них, бэкапы, анализ логов и прочие мелочи). некоторые скрипты должны запускаться от рута (через sudo), некоторые от текущего пользователя (каждый виртхост — свой пользователь и группа). Как это всё организовать, желательно с каким-то центральным репозиторием (известным, бесплатным), с которого можно было бы разворачивать привычное окружение на новом сервере, даже если старый и личный десктоп оказались недоступны?
Как мне видится: скрипты разрабатываются локально под контролем git или hg (исходники хостятся на github или bitbacket), потом «ручками» (условно тоже каким-нибудь скриптом, возможно хуком на vcs) формируются deb-пакеты (по сути из одного файла), заливаются на launchpad (вроде единственный популярный бесплатный хостинг, на котором можно deb репозиторий без проблем поднять), адрес репа добавляется в source-list, и потом через apt-get скрипты ставятся в /usr/local/bin/<scriptname.sh> (чтобы сразу через path были доступны), при необходимости создаются каталоги в /usr/local/{lib,share,etc}. Получаю что на любой машине (с Ubuntu точно, с другими Debian-like вероятно, а остальные особо не интересуют), могу развернуть привычное окружение. Недостаток — пакеты, а в случае github и исходники, доступны в паблике (и над ними могут все ржать :)
Или я себе слишком жизнь усложняю и обычно это всё проще решается? или отдельные замечания к моему сценарию есть? Может без local надо обходиться, раз через apt ставлю? Может ещё что?
Под всё это просится puppet. Но его сервер вам придётся держать самостоятельно (заодно на нём можно будет организовать репозитории для кода и пакетов).
Хз. По-моему, для моих задач несколько не то. Что chef что puppet другие цели имеют. Мне не нужна репликация конфигов на несколько серверов, только несколько скриптов чтоб под рукой были.
Хз. По-моему, для моих задач несколько не то. Что chef что puppet другие цели имеют. Мне не нужна репликация конфигов на несколько серверов, только несколько скриптов чтоб под рукой были.
/usr/local специально для своих скриптов и предназначен. Если вы не хотите выкладывать их в публичные репозитории, надо поднять свой (хотя, если это простые скрипты, может их проще из tar архива распаковать?)
То, что они в публичном репозитории будут лежать, дело не меняеет? А то я ставлю, например, php и nginx с dotdeb, а они в/usr/bin/ @gflf.n@/ Или это мера своего ЧСВ? :)
На bitbucket можно и приватные репозитории держать, там есть раздел где можно добавить ключи сервера для деплоя. Чтобы сервер мог по ssh забирать с репозитория.
Если не хотите в local ставить скрипты, можно в ~/.bash_aliases прописать алиасы прям до папки с клонированым репозиторием.
Например:
alias yourComandName='python /home/User/Repos/scriptName.py'