2017-05-12 7 views
0

機密データを不可能な出力に隠す、無理なコールバックプラグインを作りたいと思います。それをhereを行う方法についての提案があります:不可能なコールバックプラグインに状態を持たせる方法

from ansible.plugins.callback.default import CallbackModule as CallbackModule_default 
import os, collections 

class CallbackModule(CallbackModule_default): 
    CALLBACK_VERSION = 2.0 
    CALLBACK_TYPE = 'stdout' 
    CALLBACK_NAME = 'protect_data' 

    def __init__(self, display=None): 
     super(CallbackModule, self).__init__(display) 

    def hide_password(self, result): 
     ret = {} 
     for key, value in result.iteritems(): 
      if isinstance(value, collections.Mapping): 
       ret[key] = self.hide_password(value) 
      else: 
       if "password" in key: 
        ret[key] = "********" 
       else: 
        ret[key] = value 
     return ret 

    def _dump_results(self, result, indent=None, sort_keys=True, keep_invocation=False): 
     return super(CallbackModule, self)._dump_results(self.hide_password(result), indent, sort_keys, keep_invocation) 

今、この例では、「パスワード」を隠します。私は今、プレイブックの実行時に設定可能な隠された言葉を作りたいと思っています。

プレイリストの実行時にプラグインに何らかの状態(非表示にする単語のリスト)を指定して変更することはできますか?

答えて

0

self.words_list__init__のデフォルト値に設定することができます。
...on_task_start...on_handler_task_startの中で、特定の変数を確認し、それに応じてself.words_listを修正してください。

profile_tasksコールバックプラグインで統計を収集するための永続プロパティの使用方法を確認できます。

関連する問題