Ansible jinja2 не объединяется в список с помощью with_items - PullRequest
0 голосов
/ 29 мая 2019

Почему new_list тоже не объединяется?

---
- hosts: localhost
  gather_facts: False

  tasks:     
  - name: Set init list
    set_fact:
      init_list:
       - 1
       - 2
       - 3

  - name: New list from with_items
    set_fact:
      new_list: "{{ new_list|default([]) + [ item ] }}"
    with_items: "{{ init_list }}"

  - debug:
      var: new_list

Когда я запускаю этот короткий скрипт, я получаю следующий вывод:

TASK [Set init list] 
*************************************************************************
ok: [localhost]

TASK [New list from with_items] 
*************************************************************************
ok: [localhost] => (item=1)
ok: [localhost] => (item=2)
ok: [localhost] => (item=3)

TASK [debug] 
*************************************************************************
ok: [localhost] => {
    "new_list": [
        3
    ]
}

Я ожидаю, что new_list будет содержать 1,2, 3.Конкатенация работает, но каждый раз перезаписывается.Я был уверен, что это работало раньше (Ubuntu 16.04, не уверен в версии Ansible), и мне интересно, если это проблема версии Ansible.

# Ubuntu 18.04
# Ansible --version
ansible 2.5.1
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

Примечание: я знаю, что есть другие фильтры jinja2, которые потенциально могут работатьнапример, карту, список и т. д., но их нелегко применить в моем производственном коде.

1 Ответ

0 голосов
/ 29 мая 2019

Я наконец нашел правильный ответ.Это не работает в Ansible версии 2.5.1, которая, к сожалению, является версией по умолчанию в Ubuntu 18.04.

В текущей версии (2.5.5) проблема отсутствует.

sudo -H pip install ansible == 2.5.5

...