我想在Ansible剧本中做以下几点:
- name: "Generate variant html report"
shell: "<my command>"
with_items: "{{ variants | default([]) }}"
when: ({{ folderReports }}/{{ item }}).exists == False
在when
内,我需要一种方法来创建文件路径,并确定它是否存在。我尝试使用&#34;(&#34;&#34;)&#34;围绕我的第一个表达,但它似乎没有工作:
2016-10-13 16:22:48,130 p = 94292 u = sautomation |致命:[localhost]:失败! =&GT; {&#34;失败&#34;:true,&#34; msg&#34;:&#34;条件检查&#39;({{folderReports}} / {{item}})。exists == True& #39;失败。错误是:模板错误,模板字符串:意外&#39; /&#39;。字符串:{%if(/opt/diff-test1.diff).exists == True%} True {%else%} False {%endif%} \ n \ n错误似乎出现在&#39; / opt中/ansible/roles/stats/tasks/main.yml' ;:第45行,第3列,但可能在文件的其他位置,具体取决于确切的语法问题。\ n \ n违规行似乎是:\ n \ n \ n-名称:\&#34;生成报告\&#34; \ n ^此处\ n&#34;}
答案 0 :(得分:2)
要防止在指定文件已存在的情况下执行任务,请使用shell
模块的creates
参数:
- name: "Generate variant html report"
shell: "<my command>"
args:
creates: "{{ folderReports }}/{{ item }}"
with_items: "{{ variants | default([]) }}"
您收到错误,因为条件中的.exists
检查是否存在变量(fact),而不是目标节点上的文件。