2011-10-21 1 views
4

スーパーバイザーのセットアップをプログラムで管理できる必要があります。さらに、システム上のどのユーザもスーパーバイザの設定にアクセスできないようにする必要があります。このため、何らかの形で通信を確保する必要があります。xmlrpc経由でsupervisordへのプログラムによるアクセスを安全に得る方法はありますか?

私はsupervisordがXML-RPCの形でプログラムによるアクセスを提供していることを知っています。私はドキュメントを読み、それをいくつかの方法で処理しようとしましたが、私は問題にぶち当たっています。 Introduction page

  1. 、ドキュメントはXML-RPCインターフェイスのためのHTTPサーバを実行しているし、それとの通信にPythonの標準ライブラリxmlrpclibを使用することをお勧めします。

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

  3. このマニュアルの別のページには、supervisor.rpcinterfaceモジュールが記載されています。私はPythonでそのようなものにアクセスすることはできません。それがなぜなのか、さらに詳しい情報を収集するために、私はPipとスーパーバイザを再インストールしました。 sudo pip install --upgrade supervisor。パイプの出力では、私はラインSkipping installation of /usr/local/lib/python2.6/dist-packages/supervisor/__init__.py (namespace package)を参照してください。名前空間パッケージのインストールをスキップする理由はわかりません。

スーパーバイザとプログラムで安全に通信するにはどうすればよいですか?

答えて

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

関連する問題