Ansible中with_sequence结合when条件执行异常及替代方案求助
Ansible中with_sequence结合when条件执行异常及替代方案求助
大家好,我最近在写Ansible任务时遇到了一个挺费解的问题,想过来请教下各位前辈。
我原本想实现的逻辑很简单:只有当变量y的整数值大于x的整数值时,才执行block里的任务——通过with_sequence从x+1循环到y,每次引入abc.yaml任务。对应的代码是这样的:
- name: ABC block: - include_tasks: abc.yaml with_sequence: start={{ (x | int) + 1 }} end={{ y | default(1, true) | int }} loop_control: loop_var: item when: - (y | default(1, true) | int) > (x | int)
但实际运行时出了问题:当x和y的值相等的时候,我本以为when条件会不满足,直接跳过整个block,结果反而触发了报错,错误信息如下:
TASK [include_tasks] ********************************
fatal: [localhost]: FAILED! => {"msg": "to count backwards make stride negative"}
我实在搞不懂,明明已经加了when条件限制,为什么x=y时还会走到with_sequence的解析逻辑里?有没有大佬能帮我解释下这个原因?另外,如果这个写法本身有问题,有没有更稳妥的替代方案能实现我想要的循环逻辑呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

