Ansible中有一個Jinja2模板,我需要有條件地包含一些文件。Ansible:包含一個文件,如果它不存在並且什麼都不做
基本上,我有一個for循環,其中包含可能或可能不存在的「子部分」。下面的示例演示了基本的代碼,如果所有的工具竟然出現了「pbr.j2」文件,將工作,但它崩潰,因爲Ansible不能找到一些文件:
{% for tool in tools %}
{% set template = 'tools/' + tool.name + '/pbr.j2' %}
{% include template %}
{% endfor %}
我也曾嘗試exists
和is_file
過濾器,但即使文件存在,我也總是得到「假」。這裏是我已經嘗試過的示例代碼:
{% for tool in tools %}
{% set template = 'tools/' + tool.name + '/pbr.j2' %}
{% if template|exists %}
{% include template %}
{% endif %}
{% endfor %}
這最後一個示例的結果是沒有包含文件。如果我用代替exists
,我會得到相同的行爲。
我需要改變什麼來完成我想要的?
我看到過濾器應該在.yml文件中使用,並且我無法在Jinja2模板中找到任何有關引用文件測試的幫助,但是我發現可能有一些簡單的方法,例如過濾器來完成我想要的但它只是沒有記錄。我將使用任務路線,並將列表傳遞給Jinja2模板。感謝您的幫助,我真的很感激! – Drizzt