我正在开发一个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的理解是它上传了正在使用的模块并执行它,包括不支持或未记录的其他模块。
提前感谢您的帮助。
答案 0 :(得分:9)
引用Michael DeHaan的帖子here:
一般来说,Ansible允许共享代码 " LIB / ansible / module_common.py"使写作功能更容易。
然而,它不能使一个模块调用另一个模块, 到目前为止,还没有真正需要的 - 这并不完全 是的,我们曾经有过类似的文件和副本,直到我们 变聪明并将文件属性代码移动到常见位置:)
似乎因为网址访问频繁,我们可以制作一个 url下载常用模块中的常用功能 - 如果我们修改了 get_url代码也使用它,所以我们不会重复自己。
他随后跟进:
您可以通过编写动作来访问模板的工作方式 插件,但它比编写一个简单的客户端模块更复杂。
+1将get_url代码移动到共同位置,这样就会出现几次。