在开发ansible自定义插件(操作)时,如何为所有主机生成一些通用数据?

2024-10-03 09:14:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个自定义模块,其中包含一个角色的自定义操作

该操作将在dict中生成一些具有合理数量的键/值(比如100)的数据,但这可能需要一两秒钟

对于所有主机,这些键都是相同的,只是并非所有主机都将使用所有键(它们可能会遗漏一个或两个键)

如何“缓存”这些键/值,使其只生成一次(出于性能原因),然后并行应用于所有主机

我尝试在ActionModule内创建一个类变量,但这显然是一个元类,因此每次调用它都是不同的类对象(我特意说的是“类对象”)

class ActionModule(ActionBase):
    data = None

    def run(self, tmp=None, task_vars=None):
        if self.data is None:  # That is not thread safe, but just pretend
            self.data = "a lot of data here"  # just pretend again

        return self._execute_module(...)

这个解决方案会像上面描述的那样多次生成data,您对采取什么方法有什么建议吗

谢谢


Tags: 模块数据对象selfnone角色data数量