我正在使用附图所示的代码:用于我的循环的代码
我需要每次迭代都从 0
开始计数,而不是从1
开始。我的意思是以下行:
tmp_list: "{{ tmp_list | default([]) + [dict(name=item.key,seq=lookup('sequence','count='+item.value|string,wantlist=true))] }}"
感谢您的帮助。
目前还不完全清楚你的要求是什么。
如果您只是想获取当前循环迭代的编号 + 1,您可以使用如下所示的内容来做到这一点:
#!/usr/bin/env ansible-playbook
---
- name: Lets do some loops
hosts: localhost
become: false
gather_facts: false
vars:
my_list:
- one
- two
- three
tasks:
- name: Loop plus one
debug:
msg: "{{ item }} {{ loop_index + 1 }}"
loop: "{{ my_list }}"
loop_control:
index_var: loop_index
PLAY [Lets do some loops] ********************************************************************************************
TASK [Loop plus one] *************************************************************************************************
ok: [localhost] => (item=one) => {
"msg": "one 1"
}
ok: [localhost] => (item=two) => {
"msg": "two 2"
}
ok: [localhost] => (item=three) => {
"msg": "three 3"
}
PLAY RECAP ***********************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
您可以在 Ansible 官方文档的环路控制部分找到更多信息。
我找到了一个解决方案:
- set_fact:
tmp_list: "{{ tmp_list | default([]) + [dict(name=item.key,seq=lookup('sequence','start=0 count='+item.value|string,wantlist=true))] }}"
with_dict: "{{ objs }}"