2013-04-04 100 views
9

我正在开发一个Ansible模块,它生成一个url,从我的内部工件中提取(如get_url)该URL处的tarball,然后提取它。我想知道是否有方法在模块中包含或扩展get_url Ansible核心模块。我不能在多个步骤中这样做,因为正在使用的URL是从git哈希生成的,并且需要执行多步搜索。开发的Ansible模块是否可以包含或扩展Ansible核心模块?

如果没有办法,我可能会复制整个get_url模块并将其用在我的模块中,但我想避免这种情况。

我想这样做:

module_json_response = module.get_module('get_url').issue_command('url=http://myartifactory.com/my_artifact.tar.gz dest=/path/to/local/my_artifact.tar.gz');

我Ansible的理解是,它的上传模块中使用并执行它,包括另一个模块不支持或不记录。

在此先感谢您的帮助。

回答

9

引述迈克尔DeHaan的帖子here

一般来说,Ansible允许通过 “的lib/ansible/module_common.py” 共享代码,以使编写功能更容易。

这不,但是,有可能使一个模块调用另一个,它没有,迄今为止,真正被需要 - 这不完全 真实的,我们曾经有过这样的文件,并复制直到我们 了智能和移动的文件属性代码转换成普通:)

这似乎是因为URL访问是不够频繁,我们可以使普通模块 公共功能的URL下载 - 如果我们修改 GET_URL码也使用它,所以我们不重复自己。

他后来跟进:

您可以通过编写一个动作 插件访问方式模板的作品,但它比写一个简单的客户端模块更多地参与。

+1将get_url代码转换为常见的代码,出现了几次。