Python 如何在ansible操作插件之间共享代码

Python 如何在ansible操作插件之间共享代码,python,ansible,Python,Ansible,我正在开发一些ansible操作插件来与主机相关的设置交互(一个监控API,目前ansible模块中不支持) 当我从一个模块移动到多个模块时,我很清楚一些功能需要共享,例如,所需的授权舞蹈或展开请求 有些功能是特定于API的,可以进入pip可安装的python模块,以包装对API的访问 其他一些功能非常特定于ansible。API需要一大块头会话/令牌数据,因为如果您不断请求令牌而不使用当前未过期的令牌,站点将拒绝访问-因此,这应该存储在ansible facts中的一个众所周知的位置,以便所有

我正在开发一些ansible操作插件来与主机相关的设置交互(一个监控API,目前ansible模块中不支持)

当我从一个模块移动到多个模块时,我很清楚一些功能需要共享,例如,所需的授权舞蹈或展开请求

有些功能是特定于API的,可以进入pip可安装的python模块,以包装对API的访问

其他一些功能非常特定于ansible。API需要一大块头会话/令牌数据,因为如果您不断请求令牌而不使用当前未过期的令牌,站点将拒绝访问-因此,这应该存储在ansible facts中的一个众所周知的位置,以便所有相关插件都可以从同一位置访问它

简单地把一个相邻的python文件导入到动作插件代码中是行不通的——我认为在角色或剧本中使用动作插件时,ansible最终是如何加载动作插件的


因此,除了将ansible的特定部分推回到API包装python库中之外,我是否有办法将代码保存在一个集合中,以便与多个动作插件共享?

您可以启用自定义动作插件,方法是将其放入角色内与您的角色相邻的
action\u plugins
目录中,或者将其放入中配置的某个操作插件目录源中。我想这回答了这个问题,所以,正确的方法是创建自己的。嗯,不完全回答这个问题。我已经在创建自定义ansible操作插件。我已经让他们跑了(一人扮演一个角色,另一人扮演一个角色)。这个问题是关于如何在这些插件之间共享一些代码。好吧,我想这是你最后两句让我困惑的话。所以你不是在看Ansible的公共部分(这可能适合一个角色),而是要删除动作插件的Python代码?就是这样。我在想如何才能更好地表达这一点……你能使用一个类并在类中放置公共函数吗?你可以通过将自定义动作插件放入你的角色旁边的
action\u plugins
目录中,或者将其放入在中配置的某个动作插件目录源中来启用它。我想这回答了这个问题,所以,正确的方法是创建自己的。嗯,不完全回答这个问题。我已经在创建自定义ansible操作插件。我已经让他们跑了(一人扮演一个角色,另一人扮演一个角色)。这个问题是关于如何在这些插件之间共享一些代码。好吧,我想这是你最后两句让我困惑的话。所以你不是在看Ansible的公共部分(这可能适合一个角色),而是要删除动作插件的Python代码?就是这样。我在想怎样才能更好地表达……你能使用一个类并在类中放置公共函数吗?