Мне нужно иметь возможность управлять настройкой супервизора программно. Кроме того, ни один пользователь в системе не должен иметь возможность получить доступ к конфигурации супервизора. По этой причине связь должна быть как-то защищена.
Я знаю, что supervisord предлагает программный доступ в форме XML-RPC. Я прочитал документацию и попытался поработать с ней несколькими способами, но продолжаю сталкиваться с проблемами.
На странице Введение документация рекомендует запустить HTTP-сервер для интерфейса XML-RPC и использовать стандартную библиотеку Python xmlrpclib для связи с ним. Здесь есть две проблемы:
- Директива
inet_http_server
для supervisord.conf содержит только имя пользователя, пароль и порт в качестве настроек. Нет возможности зашифровать соединение.
- xmlrpclib даже не поддерживает имена пользователей и пароли. Когда я использую синтаксис
username:password@host:port
, я получаю IOError: unsupported XML-RPC protocol
. Как видно из примера на странице документации, аутентификация не выполняется.
Поскольку сокеты UNIX безопасны, я подумал, что было бы неплохо подключиться к [unix_http_server]
с помощью xmlrpclib. Тем не менее, я не знаю, как будет работать аутентификация, и, кроме того, xmlrpclib поддерживает только сетевые серверы HTTP / HTTPS.
На другой странице документации упоминается модуль supervisor.rpcinterface
. У меня нет доступа к такой вещи в Python, хотя. Чтобы получить больше информации о том, почему это так, я переустановил supervisord с Pip. sudo pip install --upgrade supervisor
. В выводе пипса я вижу строку Skipping installation of /usr/local/lib/python2.6/dist-packages/supervisor/__init__.py (namespace package)
. Я не знаю, почему он пропустит установку пакета пространства имен.
Как я могу программно и безопасно общаться с супервизором?