当与循环一起使用时,Ansible列表concat仅包含最后一个元素

时间:2019-06-18 10:07:54

标签: list ansible

[已关闭]这是Ansible v2.5.1中的错误,请参见下面的评论。

我想根据字典建立一个新列表。因此,我尝试使用set_factloop,但变量仅包含最后一个值(而不是列表)

我尝试不带字典的简单示例。我使用以下网站:https://ttl255.com/ansible-appending-to-lists-and-dictionaries/。而且这是行不通的。

---
- name: Append to list
  hosts: localhost

  vars:
   devices: []
   cisco:
    - CiscoRouter01
    - CiscoRouter02
    - CiscoRouter03
    - CiscoSwitch01
   arista:
    - AristaSwitch01
    - AristaSwitch02
    - AristaSwitch03

  tasks:

  - name: Add Cisco and Airsta devices to the list
    set_fact:
     devices: "{{ devices + [item] }}"
    with_items:
     - "{{ cisco }}"
     - "{{ arista }}"

  - name: Debug list
    debug:
     var: devices
     verbosity: 0

输出提取:

TASK [Debug list] *********************************************************************************************************
ok: [localhost] => {
    "devices": [
        "AristaSwitch03"
    ]
}

预期:

TASK [Debug list] *********************************************************************************************************
ok: [localhost] => {
    "devices": [
        "CiscoRouter01",
        "CiscoRouter02",
        "CiscoRouter03",
        "CiscoSwitch01",
        "AristaSwitch01",
        "AristaSwitch02",
        "AristaSwitch03"
    ]
}

我使用的是ansible版本:2.5.1

1 个答案:

答案 0 :(得分:0)

存在2.5.1的错误,您将需要升级。

检查this question了解更多信息。