首页 > 解决方案 > Ansible“如何遍历列表”以创建新列表

问题描述

我正在尝试创建一个简单的剧本任务,遍历多个 dict 项目(v1)并创建一个新的列表变量(list_var),其中包含特定项目,但它不起作用 list_var 只显示一个元素,任何人都可以建议什么我失踪了吗?如果我这样做:

set_fact:
  list_var: "{{ v1.stdout  }}"
with_items: "{{ v1.items }}"

v1 中的值由简单的 shell 输出返回,并且具有来自不同主机的值,例如主机名

标签: ansible

解决方案


可能有什么列出这个?

    - command: echo "{{ item }}"
      register: v1
      with_sequence: start=0 end=3
    - set_fact:
        list_var: "{{ list_var|default([]) }} + [ {{ item }} ]"
      loop: "{{ v1.results | json_query('[].stdout') }}"
    - debug: var=list_var

哪个产生这个列表

    TASK [debug] **********
    ok: [localhost] => {
        "list_var": [
            0, 
            1, 
            2, 
            3
        ]
    }

推荐阅读