2013-04-04 94 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代碼轉換爲常見的代碼,出現了幾次。