ansible-galaxy 因依赖于空的 meta/main.yml 而失败

Jam*_*lly 3 ansible ansible-2.x ansible-galaxy

我有一个 requests.yml 文件,其中列出了 Ansible 角色的依赖项:

---

- src: git@gitrepo:group/dependency1.git
  scm: git
  name: name1

- src: git@gitrepo:group/dependency1.git
  scm: git
  name: name2
Run Code Online (Sandbox Code Playgroud)

这些角色本身没有任何依赖性,并且由于它们位于私有 SCM 系统上(以及其他原因),因此它们不需要任何元数据。但是,加载 Ansible 依赖项需要此文件存在。因此,依赖项有一个空白的 meta/main.yml 来启用 ansible-galaxy。

安装依赖项时使用:

ansible-galaxy install --role-file requirements.yml --roles-path foo
Run Code Online (Sandbox Code Playgroud)

安装第一个依赖项后,会出现错误:

ERROR! Unexpected Exception: 'NoneType' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

使用非常非常详细的输出,可以找到错误:

galaxy.py", line 394
Run Code Online (Sandbox Code Playgroud)

经过实验后,多次运行该命令将逐步完成依赖项,一次一个。因此,嵌套依赖将会失败;因为父级会安装然后出错,或者 ansible-galaxy 会认为父级已经安装并跳过依赖项。

问题是:如何阻止此错误发生并让 ansible-galaxy 正确处理我的依赖项?

小智 5

我刚刚修复了这个问题devel。应该发布 Ansible 2.4 版本。