首页 > 解决方案 > 将 ansible 列表的默认值定义为字典

问题描述

我正在使用附图中显示的代码:用于我的循环的代码

我需要每次迭代从 开始计数0,而不是从开始计数1。我的意思是以下行:

tmp_list: "{{ tmp_list | default([]) + [dict(name=item.key,seq=lookup('sequence','count='+item.value|string,wantlist=true))] }}"

感谢您的帮助。

标签: ansibleansible-2.x

解决方案


它并不完全清楚你的要求。

如果您只是想获得当前循环迭代的次数 + 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 官方文档的Loop Control部分找到更多信息。


推荐阅读