[英]using ansible modules from git repository?
我有一本劇本和一堆我寫的模塊。
現在我想在我的下一個劇本中重復使用相同的模塊來完成不同的項目。
我真的想將這些模塊推送到公共git存儲庫,然后以某種方式告訴ansible使用git存儲庫中的模塊。
(有點像npm package.json引用github)
我似乎無法找到有關如何做到這一點的任何文檔。
現在,我正在使用一種解決方法,我告訴人們npm安裝存儲庫,然后定義ANSIBLE_LIBRARY變量。
如何告訴playbook從github存儲庫或其他一些遠程位置加載模塊?
實際上,模塊可以在很長一段時間內嵌套在角色中。 從Ansible 2開始,大多數插件都可以實現這一點。
模塊和插件需要存儲在角色中的文件夾與playbook級別相同。 模塊進入library
,插件進入*_plugins
( action_plugins
, callback_plugins
, filter_plugins
等)
為了使模塊/插件可用,角色必須應用於劇本(或作為另一個角色的依賴項添加)
只有我知道的異常是可變插件,這完全有意義。 由於在讀取清單時執行可變插件,這在插入角色之前發生。
vars_plugins
仍然可以在角色中分發,但需要在ansible.cfg
添加路徑 。 幸運的是,您還可以在路徑中使用通配符:
vars_plugins = roles/*/vars_plugins
不,所有這些都沒有以任何方式記錄。 :)
最后,要分配角色,您可以使用Ansible Galaxy :
ansible-galaxy install foo
直接使用git沒什么問題。 Ansible Galaxy實際上只是一個安裝git存儲庫的工具。 但由於Galaxy是Ansible標准,我建議至少提供Galaxy兼容格式。 可以在此處找到一個好的(最好的)練習如何安裝與項目角色分開的Galaxy角色。
以下是動作插件的示例: https : //galaxy.ansible.com/udondan/ssh-reconnect/
目前沒有解決方案。 也許你可以添加一個劇本來下載模塊到你的項目,以避免npm,但這甚至不是那么好。
我的自定義模塊放在我的劇本旁邊的目錄中。 該目錄在我的全局ansible.cfg文件中定義:
library = /usr/share/ansible
這里唯一的方法是我總是在所有的playbbok上使用相同版本的模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.