我正在使用通过 ssh 连接到设备的任务。延迟并不总是恒定的,有时当提示未及时显示时任务会失败。
假设可以控制此任务的超时值,是否可以根据执行的尝试次数按比例动态增加此超时?
类似这样的事情
- name: task_name
connection : local
task_module:
args...
timeout : 10 * "{{ attempt_number }}"
retries: 3
delay: 2
register: result
until: result | success
我认为在运行任务时不可能获得当前的尝试次数,目前还不清楚你为什么要尝试实现这样的目标。
您能详细说明一下吗?
是的,这是可能的,这里有文档。
当你使用until运行任务并将结果注册为变量时,注册的变量将包含一个名为“attempts”的键,该键记录了任务的重试次数。
不幸的是,除了until条件之外,无法访问尝试
在此示例中,循环将在两次尝试后结束
- name: "Attempts test"
debug:
msg: "{{ cycle_state.attempts if cycle_state is defined else 'undefined' }}"
register: cycle_state
until: cycle_state.attempts > 2
delay: 5
retries: 5
- debug:
msg: "{{cycle_state}}"