Безопасный способ отслеживать и перезапускать сервисы, которым требуется пароль
Иногда, когда отключается питание и ИБП умирает, прежде чем он снова включается, некоторые службы на наших серверах не возвращаются. А именно некоторые виртуальные машины VMware.
Я думал о настройке службы мониторинга, которая будет пытаться запускать виртуальные машины каждые пять минут, если они не работают, но поскольку команда vmrun от VMware требует имени пользователя и пароля, как я могу сделать это безопасным?
2 ответа
Vmware Server в Linux поддерживает настройку включения виртуальных машин при загрузке. Из консоли сервера перейдите в Свойства виртуальной машины:: Вкладка "Параметры":: Запуск / завершение работы и Запуск на хосте, чтобы включить виртуальную машину. Я полагаю, что это можно сделать и с другим программным обеспечением VMware.
РЕДАКТИРОВАТЬ: Ах хорошо, чтобы попытаться на самом деле ответить на ваш вопрос тогда:-)
Когда я запускаю vmrun на своем собственном ящике, он не запрашивает пароль. Может быть, он запрашивает пароль только в том случае, если вы используете vmrun с аргументом хоста (или если вам нужны привилегии root?) Если это так, как насчет установки ssh без пароля с использованием ключей? Тогда вы могли бы просто сделать что-то вроде ssh fooUser@myServer 'vmrun start /foo/bar/baz.vm'
и это может сработать. Если для этого требуются более высокие права, вы можете дать определенным пользователям разрешение на запуск определенных команд с помощью sudo и файла /etc/sudoers.
С помощью мониторинга Nagios вы можете настроить обработчики событий, которые будут запускать сценарий (например, команду, которую я опубликовал), если он обнаружит, что рассматриваемый хост на самом деле не работает.
Я не проверял это, но это должно работать. Поместите команду vmrun, включая пароль, в файл и выполните команду chmod 700. После этого вы сможете использовать sudo с опцией NOPASSWD для запуска скрипта;
sudo /path/to/vmrun_script.sh
Эндрю