2016-01-21 54 views
3

我有一本劇本和一堆我寫的模塊。使用從git倉庫的可靠模塊?

現在我想在我的下一個劇本中爲不同的項目重複使用相同的模塊。

我真的想將這些模塊推送到公共git存儲庫,然後以某種方式告訴可以使用git存儲庫中的模塊。

(有點像故宮的package.json引用github上)

我似乎無法找到如何做到這一點的任何文檔。

現在,我正在使用一種解決方法,告訴人們npm安裝存儲庫,然後定義ANSIBLE_LIBRARY變量。

如何告訴playbook從github存儲庫或其他遠程位置加載模塊?

+0

這是一個非常好的問題,我認爲這是Ansible銀河只允許角色的共享,而不是提供一種方式來共享模塊可怕的限制。 – udondan

+0

與此同時,我認爲我們的模塊可以嵌套在角色中,因爲Ansible 2甚至可以使用插件。 – udondan

回答

0

目前沒有解決方案。也許你可以添加一個手冊來下載模塊到你的項目中以避免npm,但那不是那麼好。

我有我的自定義模塊在我的劇本旁邊的目錄中。此目錄將在我的全球ansible.cfg文件中定義:

library = /usr/share/ansible 

這裏唯一的drawbag是我永諾對所有playbboks模塊的版本相同。

+0

其實這是可能的。這只是沒有記錄。看到我的答案。低於上述。 :) – udondan

1

實際上,模塊可以嵌套在角色中相當長的時間。由於Ansible 2,即使大部分插件都可以使用。

需要存儲在角色內的modules & plugins的文件夾與playbook級別相同。模塊進入library,插件進入*_pluginsaction_pluginscallback_pluginsfilter_plugins等)

爲了使模塊/插件,則可用的角色已被應用到PlayBook(或添加其他角色依賴)

只有我所知道的例外是可變插件,這是完全合理的。由於在讀取庫存時會執行可變插件,這是在解釋角色之前發生的。

vars_plugins依然可以分配在角色中,但是path needs to be added in the ansible.cfg。幸運的是,您還可以在路徑中使用通配符:

vars_plugins = roles/*/vars_plugins 

並且不,所有這些都沒有以任何方式記錄。 :)

最後,分配的角色,您可以使用Ansible Galaxy

ansible-galaxy install foo 

沒有錯,直接使用Git。 Ansible Galaxy實際上只是一個安裝git存儲庫的工具。但是由於Galaxy是Ansible標準,我建議至少要提供Galaxy兼容格式。一個好的(最好的)練習如何安裝Galaxy角色與項目角色分開,可以找到here

下面是一個例子一個動作插件:https://galaxy.ansible.com/udondan/ssh-reconnect/