4

我有一个 git 项目,剧本中的角色很少,我想使用 ansible Galaxy 中的角色之一。

回购的克隆正在工作,但在存档阶段失败:

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)吗?

谢谢,

4

2 回答 2

3

Ansible Galaxy 现在支持集合。集合可能包含多个角色。


老答案:

除非有未记录的功能(这不是最罕见的事情),否则银河兼容角色需要专用的 git 存储库。如果角色是不同项目使用的组件,就像您的情况一样,那么将其存储在单独的项目中无论如何都是有意义的。您不能将角色移出并在两个项目中引用它吗?

一个hacky的解决方法可能是这样的:

在您的需求文件中指定您的角色存储库将保存到的位置:

- src: myuser@github.com/my-project/search-mysql
  version: master
  name: search-mysql
  path: ./role_collection

现在 ansible-galaxy 会将 repo 保存在./role_collection/search-mysql

这只是为了不roles使用实际上包含角色集合的文件夹污染原始目录。

在您的剧本中,您还可以为每个角色指定完整路径:

- hosts: ...
  roles:
    - ./role_collection/search-mysql/path/to/your/role/inside/the/repo
于 2016-06-23T11:12:55.127 回答
0

这来自 ansible Galaxy 支持:“我刚刚检查过,这是每个 repo 情况下的一个角色。如果你想从存储库中获取单个角色,那么你需要将它们分开。”

于 2016-06-27T13:25:50.950 回答