Разрешения с 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, открывая уязвимость повышения привилегий. Если ваш пользователь когда-либо был скомпрометирован, вы, конечно, не хотите, чтобы злоумышленник мог легко получить доступ к руту.

Я включаю эту опцию главным образом потому, что она обычно рассматривается, и ее следует избегать в подавляющем большинстве случаев (например, когда вы заботитесь о безопасности). Однако это может быть полезно в редких редких случаях (например, когда у вас есть краткосрочный сервер для внутреннего использования только за брандмауэром только с доверенными пользователями, и вам нужно настроить его в спешке).

Другие вопросы по тегам