我有一个git项目,在剧本中没有多少角色,我想使用ansible galaxy中的一个角色。
repo的克隆正在运行,但它在归档阶段失败了:
executing: git clone https://myuser@github.com/my-project/search-mysql search-mysql executing: git archive --prefix=search-mysql/ --output=/tmp/tmp3f6ySq.tar search
command git archive --prefix=search-mysql/ --output=/tmp/tmp3f6ySq.tar search failed
使用requirements.yml
文件和
ansible-galaxy install --role-file=requirements.yml --roles-path=roles --force
知道档案失败的原因吗? 我只能下载角色而不是整个项目(search-mysql)?
谢谢,
答案 0 :(得分:2)
除非存在未记录的功能(这不是最罕见的事情),否则需要专用的git repo才能兼容galaxy。如果角色是不同项目使用的组件,就像您的情况一样,无论如何将它存储在单独的项目中是有意义的。你不能把这个角色移出来并在两个项目中引用它吗?
一个hacky解决方法可能是这样的:
在您的需求文件中,指定将角色存储库保存到的位置:
- src: myuser@github.com/my-project/search-mysql
version: master
name: search-mysql
path: ./role_collection
现在ansible-galaxy会将回购保存在./role_collection/search-mysql
这只是为了不污染原始roles
目录,其中包含一个实际拥有角色集合的文件夹。
在您的剧本中,您还可以为每个角色指定完整路径:
- hosts: ...
roles:
- ./role_collection/search-mysql/path/to/your/role/inside/the/repo
答案 1 :(得分:0)
这来自ansible galaxy支持: “我刚检查过,这是每个repo情况下的一个角色。如果你想从存储库中获取各个角色,那么你需要将它们拆分。”