Ansible 向dict项添加字段

Ansible 向dict项添加字段,ansible,ansible-playbook,Ansible,Ansible Playbook,考虑下面的剧本。我要做的是添加一个字段tmp_path,它基本上是附加到脚本dict中每个元素的键和修订 --- - hosts: localhost connection: local gather_facts: no vars: scripts: a.pl: revision: 123 b.pl: revision: 456 tasks: - with_dict: "{{ scripts }}"

考虑下面的剧本。我要做的是添加一个字段tmp_path,它基本上是附加到脚本dict中每个元素的键和修订

---
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    scripts:
      a.pl:
        revision: 123
      b.pl:
        revision: 456
  tasks:
     - with_dict: "{{ scripts }}"
       debug:
         msg: "{{ item.key }}_{{ item.value.revision }}"
#     - with_items: "{{ scripts }}"
#       set_fact: {{item.value.tmp_path}}="{{item.key}}_{{item.value.revision}}"
#     - with_items: "{{ scripts }}"
#       debug:
#         msg: "{{ item.value.tmp_path }}"
...
显然,注释的代码不起作用,你知道我怎样才能使它起作用吗?可以直接修改脚本dict吗,或者我应该以某种方式创建一个新的dict来引用吗


顺便说一句,欢迎为我正在尝试做的事情更正术语。

好的,我想我得到了一个解决方案(见下文),至少让我继续前进。缺点是它删除了dict的结构,而且似乎有点多余,必须重新定义所有字段并使用新变量,如果有人能提供更好的解决方案,我会接受

---
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    scripts:
      a.pl:
        revision: 123
      b.pl:
        revision: 456
  tasks:
     - with_dict: "{{ scripts }}"
       debug:
         msg: "{{ item.key }}_{{ item.value.revision }}"
     - with_dict: "{{ scripts }}"
       set_fact:
         new_scripts: "{{ (new_scripts | default([]))  + [ {'name': item.key, 'revision': item.value.revision, 'tmp_path': item.key ~ '_' ~ item.value.revision}] }}"
#     - debug:
#         var: x
#     - with_dict: "{{ scripts }}"
     - with_items: "{{ new_scripts }}"
       debug:
         msg: "{{ item.tmp_path }}"
...
顺便说一句,以下问题为我指明了正确的方向: