Supervisord のセットアップをプログラムで管理できるようにする必要があります。さらに、システム上のどのユーザーも、supervisord の構成にアクセスできないようにする必要があります。このため、何らかの方法で通信を保護する必要があります。
私は、supervisord が XML-RPC の形式でプログラムによるアクセスを提供していることを知っています。ドキュメントを読み、いくつかの方法で作業を試みましたが、問題が発生し続けています。
紹介ページのドキュメントでは、XML-RPC インターフェイス用に HTTP サーバーを実行し、Python 標準ライブラリxmlrpclibを使用して通信することを推奨しています。ここには 2 つの問題があります。
- Supervisord.confの
inet_http_serverディレクティブには、設定としてユーザー名、パスワード、およびポートのみが含まれます。接続を暗号化するオプションはありません。 - xmlrpclib は、ユーザー名とパスワードさえサポートしていません。構文を使用すると
username:password@host:port、 が得られIOError: unsupported XML-RPC protocolます。ドキュメント ページの例でわかるように、認証は行われません。
- Supervisord.confの
UNIX ソケットは安全なので、
[unix_http_server]xmlrpclib を使用して に接続するのは良い考えだと思いました。それでも、認証がどのように機能するかはわかりません。さらに、xmlrpclib はネットワーク HTTP/HTTPS サーバーしかサポートしていません。supervisor.rpcinterfaceドキュメントの別のページでは、モジュールについて言及しています。ただし、Pythonではそのようなものにアクセスできません。その理由についてさらに詳しい情報を収集するために、Pip を使用して Supervisord を再インストールしました。sudo pip install --upgrade supervisor. pip 出力に、行が表示されSkipping installation of /usr/local/lib/python2.6/dist-packages/supervisor/__init__.py (namespace package)ます。名前空間パッケージのインストールをスキップする理由がわかりません。
Supervisord とプログラムで安全に通信するにはどうすればよいですか?