Ansible 中是否可以使用带条件语句的循环?我想要的是查找特定文件的路径是否存在。如果存在,则执行循环,并且仅针对该特定文件查看条件语句。下面的代码示例
- name: File exist
stat:
path: <path to the file or directory you want to check>
register: register_name
- name: Copy file
copy:
src: '{{ item }}'
dest: '<destination path>'
with_fileglob:
- ../spring.jar
- <perform if statement. if register_name.stat.exists, ../info.txt, else dont copy this info.txt >
# ... few other task with loop instead of with_fileglob
Run Code Online (Sandbox Code Playgroud)
您可以,并且您提供的伪代码接近可行的解决方案。
\n有一个内联 if 表达式可以让您对列表中的项目进行操作。
\n从那里开始,如果您期望的文件不存在 \xe2\x80\x94 ,您可以创建一个空字符串,因为遗憾的是,您不能使用omitlist 的元素。
因为copy带有空元素的 a 会使其失败,所以您现在有两个选择,要么过滤列表以删除空元素,要么使用 a 创建条件来when跳过它们。
这是使用select过滤器过滤空元素的解决方案:
- copy:\n src: "{{ item }}"\n dest: /tmp\n loop: "{{ _loop | select }}"\n vars:\n _loop:\n - ../spring.jar\n - "{{ \'../info.txt\' if register_name.stat.exists else \'\' }}"\nRun Code Online (Sandbox Code Playgroud)\n这是使用条件的解决方案:
\n- copy:\n src: "{{ item }}"\n dest: /tmp\n loop:\n - ../spring.jar\n - "{{ \'../info.txt\' if register_name.stat.exists else \'\' }}"\n when: "item != \'\'"\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10366 次 |
| 最近记录: |