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

时间:2015-02-09 21:08:40

标签: ansible ansible-playbook

我有一个Ansible剧本,其中包括另外两个文件:

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

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

Ansible有一个问题,当然,因为它试图解析文件,即使它不存在并返回错误。 ansible有没有办法推迟解析文件,直到 第一个包含文件中的任务完成后?

2 个答案:

答案 0 :(得分:0)

这与勉强有关:https://groups.google.com/forum/#!topic/ansible-project/__NS97GEyDY

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

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

答案 1 :(得分:0)

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