开发的Ansible模块可以包含或扩展Ansible Core模块吗?

时间:2013-04-04 16:41:31

标签: python ansible

我正在开发一个Ansible模块,它生成一个url,从我的内部工件中获取该URL的tarball(如get_url),然后将其提取出来。我想知道是否有办法在我的模块中包含或扩展get_url Ansible核心模块。我不能在多个步骤中使用它,因为使用的url是从git哈希生成的,需要多步搜索。

如果没有办法,我可能会复制整个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的理解是它上传了正在使用的模块并执行它,包括不支持或未记录的其他模块。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:9)

引用Michael DeHaan的帖子here

  

一般来说,Ansible允许共享代码   " LIB / ansible / module_common.py"使写作功能更容易。

     

然而,它不能使一个模块调用另一个模块,   到目前为止,还没有真正需要的 - 这并不完全   是的,我们曾经有过类似的文件和副本,直到我们   变聪明并将文件属性代码移动到常见位置:)

     

似乎因为网址访问频繁,我们可以制作一个   url下载常用模块中的常用功能 - 如果我们修改了   get_url代码也使用它,所以我们不会重复自己。

他随后跟进:

  

您可以通过编写动作来访问模板的工作方式   插件,但它比编写一个简单的客户端模块更复杂。

     

+1将get_url代码移动到共同位置,这样就会出现几次。