如何在一个ansible回调插件中拥有状态

时间:2017-05-12 10:49:12

标签: ansible

我想创建一个ansible回调插件,它隐藏了ansible输出中的敏感数据。有关如何执行此操作的建议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 个答案:

没有答案