Разрешения с sidekiq monit и capistrano
У меня проблемы с capistrano и sidekiq monit.
Я настроил пользователя для capistrano, и все шло гладко, пока я не установил Sidekiq.
Моя проблема, когда я пытаюсь выполнить cap staging sidekiq:monit:config
(sidekiq:monit:start
имеет такую же проблему с разрешением). Каждый раз, когда я пытался, он "зависает", потому что просит пароль.
Затем я попытался установить sidekiq_monit_use_sudo
ложно. Это нормально, он не использует sudo, но тогда у него нет разрешения на копирование /tmp/monit.conf
в /etc/monit/conf.d/
папка.
Это первый раз, когда я настраиваю сервер, и я вроде как потерян здесь =| Может, попробовать настроить sidekiq monit вручную?
Я использую ruby 2.5 и эти драгоценные камни:
- Капистрано 3.10
- capistrano-sidekiq 1.0
- рельсы 5.1
Также у меня есть :pty
конфиг установлен на true
поскольку я не чувствую себя комфортно, не используя пароль.
Спасибо!
1 ответ
У вас есть несколько вариантов, из которых я определю два, правильный и легкий / плохой.
Мониторинг локального пользователя
Я лично использую Monit на общем сервере, на котором у меня нет root-доступа. Поэтому я запускаю Monit как пользователь без полномочий root.
Для этого я скомпилировал Monit с его префиксом как $HOME/apps
, так что файлы конфигурации находятся в $HOME/apps/etc
, Это позволяет избежать проблемы с sudo. Если у вас есть доступ к диспетчеру пакетов и установленный таким образом Monit, вы можете запустить monit как пользователь с -c
Параметр, чтобы определить, где он должен искать файлы конфигурации:
monit -c $HOME/config/monitrc
Чтобы заставить Capistrano распознавать локальный монитор, вам понадобятся некоторые дополнительные параметры в config/deploy.rb
:
#set :monit_bin, '/usr/bin/monit' # Use this if you compile monit yourself.
set :sidekiq_monit_conf_dir, '/home/myuser/config/monit.d' # Feel free to customize.
set :sidekiq_monit_use_sudo, false
В файле monitrc, который вы определили с помощью -c
опцию, вы должны будете убедиться, что папка определена в :sidekiq_monit_conf_dir
втягивается через включает в себя:
include /home/myuser/config/monit.d/*.conf
Так как у меня нет системы инициализации, у меня Cron запускает Monit каждые 30 минут, что является нормой, если она уже запущена:
# Restart monit if it dies
*/30 * * * * $HOME/apps/bin/monit > /dev/null
Если у вас есть root-доступ, вы можете улучшить это, запустив Monit как локальный пользователь с помощью сценария инициализации (или файла системного модуля).
Плохой вариант: дать вашему пользователю доступ к каталогу conf
Вы можете редактировать /etc/monit/monitrc
чтобы включить ваш локальный каталог конфигурации пользователя, как указано выше. Точно так же вы можете разрешить своему пользователю писать /etc/monit/conf.d
, Основным недостатком этих решений является то, что вы теперь разрешаете своему пользователю без полномочий root создавать файлы, которые будут выполняться как root, открывая уязвимость повышения привилегий. Если ваш пользователь когда-либо был скомпрометирован, вы, конечно, не хотите, чтобы злоумышленник мог легко получить доступ к руту.
Я включаю эту опцию главным образом потому, что она обычно рассматривается, и ее следует избегать в подавляющем большинстве случаев (например, когда вы заботитесь о безопасности). Однако это может быть полезно в редких редких случаях (например, когда у вас есть краткосрочный сервер для внутреннего использования только за брандмауэром только с доверенными пользователями, и вам нужно настроить его в спешке).