在文件存在之前在文件中包含任务
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 脚本粘合在一起,并尝试动态生成剧本,但这似乎要复杂得多...
我有一个包含另外两个文件的 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 脚本粘合在一起,并尝试动态生成剧本,但这似乎要复杂得多...