【问题标题】:ansible - cannot append into a list in a with_items loopansible - 不能附加到 with_items 循环中的列表中
【发布时间】:2018-04-23 14:06:18
【问题描述】:

以这个剧本为例:

---
- hosts: localhost
  gather_facts: no
  vars:
    in_list:
      - value1
      - value2
      - value3
    final_list: []

  tasks:

    - debug:
        var: in_list

    - name: parse list
      set_fact:
        final_list: "{{ final_list + [{'key': item}] }}"
      with_items: "{{ in_list }}"

    - debug:
        var: final_list

似乎final_list 在每次迭代中都被最后一次 set_fact 替换所替换,即它没有在每个循环中附加到它。

输出:

[root@optima-ansible ILIAS]# ansible-playbook append_to_list.yml 

PLAY [localhost] ****************************************************************************************************************************************************************************************************

TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "in_list": [
        "value1", 
        "value2", 
        "value3"
    ]
}

TASK [parse list] ***************************************************************************************************************************************************************************************************
ok: [localhost] => (item=value1)
ok: [localhost] => (item=value2)
ok: [localhost] => (item=value3)

TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "final_list": [
        {
            "key": "value3"
        }
    ]
}

PLAY RECAP **********************************************************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0   

[root@optima-ansible ILIAS]# 

我使用了来自question的代码

我做错了什么?

更新:我的设置:

[root@optima-ansible ILIAS]# ansible --version
ransible 2.5.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.14 (default, Mar 14 2018, 13:36:31) [GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
[root@optima-ansible ILIAS]# rpm -qa --last |  grep ansible
ansible-2.5.1-1.fc27.noarch                   Sun 22 Apr 2018 02:46:30 AM EEST
[root@optima-ansible ILIAS]# 

【问题讨论】:

  • 即使来自this tutorial的代码在我的ansible中也不起作用,如页面所示,请随意尝试append_dict_v2.yml
  • 你的意思是我的 ansible 安装的错误?我正在使用与 fedora 一起发布的版本,它的 2.5.1 增加了问题以提高可见性
  • 然后在 GitHub 上发布一个问题,因为除了 2.5.1 之外的所有其他版本都会产生您预期的结果。
  • 你是对的。使用 ansible-2.5.0-1.el7.ans.noarch.rpm 代码按预期工作。并且它不是分发问题,使用来自here 的 2.5.1 可以重现该问题。我想我会打开问题并降级 ansible 以继续我的工作:) 谢谢
  • 我在 2.5.1 中遇到了同样的问题;更新到最新解决它

标签: ansible


【解决方案1】:

添加一个关闭线程的答案,以及我从 Ansible 团队获得的关于我在 Github 上打开的问题的官方回复。显然,他们已经知道这一点,他们关闭了我的问题,因为重复将我重定向到这 2 个:

#38302 和 #38075

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多