在文件存在之前在文件中包含任务

Include tasks in file before the file exists

我有一个包含另外两个文件的 Ansible 剧本:

 - include: myFile1.yml
 - include: myRepo/myFile2.yml

问题是 myRepo 是一个 git 存储库,由 myFile1.yml 中的任务之一签出,因此 myFile2.yml 不存在,除非 myFile1.yml 中的任务myFile.yml 成功完成。

Ansible 对此有一个问题,当然,因为它尝试解析文件,即使它不存在并且 returns 一个错误。 ansible 是否有任何方法可以延迟解析文件,直到第一个包含文件中的任务完成 之后?

这有点相关:https://groups.google.com/forum/#!topic/ansible-project/__NS97GEyDY

如果从 git 中重新检出有效剧本的一部分真的很重要,我会考虑使用 ansible-pull(不幸的是,库存 IIRC 周围会有轻微的曲线)。

简而言之,我认为 1.8.2 版本没有任何解决方法。

解决此问题的解决方案是使 myRepo 成为包含 myFile1.yml 的存储库的子模块存储库。这样,当检出主仓库时,包含其他剧本的仓库也会自动检出。这可能不适用于所有其他情况,但在这里有效。另一种选择是将所有内容与 shell 脚本粘合在一起,并尝试动态生成剧本,但这似乎要复杂得多...