如何使用Ansible';是否使用带有变量的\u项?

如何使用Ansible';是否使用带有变量的\u项?,ansible,Ansible,我正在尝试转换Ansible剧本中列表项的一些字段。这里是最简单的复制路径,跳过转换。结果应与用户变量相同 --- # Run with: # ansible-playbook -i "localhost," loop3.yml - hosts: localhost connection: local gather_facts: false vars: users: - name: paul uid: 1 - name: pete

我正在尝试转换Ansible剧本中列表项的一些字段。这里是最简单的复制路径,跳过转换。结果应与
用户
变量相同

---
# Run with:
# ansible-playbook -i "localhost," loop3.yml

- hosts: localhost
  connection: local
  gather_facts: false
  vars:
    users:
      - name: paul
        uid: 1
      - name: pete
        uid: 2
  tasks:
    - set_fact:
      args:
        useritem:
          name: '{{ item.name }}'
          uid:  '{{ item.uid }}'
      with_items:
        - users
      register: sf_result

    - debug: var=sf_result

    - set_fact:
        userslist: "{{ sf_result.results | map(attribute='ansible_facts.useritem') | list }}"

    - debug: var=userslist
我得到这个错误:

TASK [set_fact useritem={u'name': u'{{ item.name }}', u'uid': u'{{ item.uid }}'}] ***
fatal: [localhost]: FAILED! => {"failed": true, "msg": "ERROR! 'unicode object' has no attribute 'name'"}
有非常接近我所需要的,但我找不到使用
set\u fact
以及
与\u items
和items作为映射的工作示例


我尝试了Ansible 1.9.2、1.9.4和2.0.0-0.6.rc1,并显示了不同的错误消息,但没有成功。Ansible 2应该允许跳过对
set\u fact
的第二次调用,但错误发生在调用之前。

我想我确实在某个地方读到过
with\u items
接受一个简单的变量名,但事实并非如此

程序按预期运行,使用:

with_items: "{{ users }}"

问题出在原始代码中的
与_items:
子句中,在
-users
行上-这是在创建单个项目列表,单个项目本身就是
users
列表。修改后的代码可以正常工作,并且避免了弃用警告。