如何在Ansible循环中跟踪当前迭代次数?
Ansible循环中跟踪迭代位置的实现方法
你原来用retries的方式并不适合这个场景——retries是任务失败后重试的机制,不是用来重复执行任务N次并跟踪序号的正确方案。要实现类似bash循环的效果,应该用Ansible的loop结合序列生成来完成:
正确的Playbook示例
- name: 按指定次数写入带迭代序号的内容 lineinfile: path: /root/file insertafter: '^listeners:' line: "iteration #{{ item }}" loop: "{{ range(1, a_variable | int + 1) | list }}"
关键说明
- 用
range(1, a_variable | int + 1)生成从1到a_variable值的整数序列,通过| int确保变量被转为整数类型,避免字符串格式问题 loop关键字遍历这个序列,每次循环的当前序号可以通过内置变量item直接获取- 这样每次循环都会向文件中写入一行带对应序号的内容,和你给出的bash循环效果完全一致
内容的提问来源于stack exchange,提问作者محسن عباسی
相关产品推荐
相关产品推荐

