4

Supervisord のセットアップをプログラムで管理できるようにする必要があります。さらに、システム上のどのユーザーも、supervisord の構成にアクセスできないようにする必要があります。このため、何らかの方法で通信を保護する必要があります。

私は、supervisord が XML-RPC の形式でプログラムによるアクセスを提供していることを知っています。ドキュメントを読み、いくつかの方法で作業を試みましたが、問題が発生し続けています。

  1. 紹介ページのドキュメントでは、XML-RPC インターフェイス用に HTTP サーバーを実行し、Python 標準ライブラリxmlrpclibを使用して通信することを推奨しています。ここには 2 つの問題があります。

    • Supervisord.confのinet_http_serverディレクティブには、設定としてユーザー名、パスワード、およびポートのみが含まれます。接続を暗号化するオプションはありません。
    • xmlrpclib は、ユーザー名とパスワードさえサポートしていません。構文を使用するとusername:password@host:port、 が得られIOError: unsupported XML-RPC protocolます。ドキュメント ページの例でわかるように、認証は行われません。
  2. UNIX ソケットは安全なので、[unix_http_server]xmlrpclib を使用して に接続するのは良い考えだと思いました。それでも、認証がどのように機能するかはわかりません。さらに、xmlrpclib はネットワーク HTTP/HTTPS サーバーしかサポートしていません。

  3. 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 とプログラムで安全に通信するにはどうすればよいですか?

4

1 に答える 1

1

Supervisor は、Unix ドメイン ソケットにアクセス許可を設定するオプションをサポートしています。

http://supervisord.org/configuration.html#unix-http-server-section-example

詳細はわかりませんが、Supervisorctl.py と同じ方法で、UNIX ドメイン ソケットを介して xmlrpc インターフェイスを呼び出すことができるはずです。options.getServerProxy() を呼び出して、xmlrpclib.ServerProxy オブジェクトを取得しています。

https://github.com/Supervisor/supervisor/blob/master/supervisor/supervisorctl.py#L188

于 2011-10-28T16:32:55.237 に答える