为什么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过滤器可能可以解决此问题,例如地图,列表等,但是它们在我的生产代码中并不容易应用。
答案 0 :(得分:0)
我终于找到了正确的答案。这在Ansible 2.5.1版中被打破,不幸的是,这是Ubuntu 18.04中默认提供的版本。
当前最新版本(2.5.5)没有问题。
sudo -H pip install ansible == 2.5.5