我正在使用循环从artifactory下载jar,我想首先检查文件是否存在,如果文件不存在,则记录错误并退出。 config.ini内容是
a.jar,b.jar,c.jar
Ansible 剧本如下:
- name: Download jars from artifactory
vars:
dependencys: "{{ lookup('ansible.builtin.file', 'config.ini') }}"
get_url:
url: "{{ maven_url }}/{{ item }}"
dest: "{{ destPath }}"
mode: 0755
loop: "{{ dependencys.split(',') }}"
no_log: no
如何实施?
目前这是不可能的,但用不了多久你就能实现这一目标。
您可以在 Ansible 的问题跟踪器中准备好此功能请求:
在某些情况下,任务应该循环直到条件满足 相遇,就像 for 循环中的
一样。这可以通过以下方式实现 一个break
的声明,但它过于复杂并且不明显 目标是,并且当需要时可以变得过于复杂when
语句提供不同的功能来确定 循环项是否应该运行。when
在链接的拉取请求中,我们可以在发行说明中阅读:
- 添加一个loop_control
选项以根据 Jinja2 表达式提前打破任务循环break_when
来源:Ansible 的 git 存储库中的拉取请求#62151
计划与 Ansible core 2.18 版本一起发布,然后将具有如下语法:
- name: Count until 3, then break
ansible.builtin.debug:
var: item
loop:
- 1
- 2
- 3
- 4
- 5
loop_control:
break_when: item > 3