如何将Ansible的with_item与变量一起使用?

如何将Ansible的with_item与变量一起使用?

我正在尝试在Ansible Playbook中转换列表项的某些字段。这是最简单的再现路径,跳过转换。结果应与users变量相同。

---# 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'"}

几个 例子很接近我needbut我可以用找不到工作示例set_fact以及with_items和项目,如地图。

我已经尝试了Ansible 1.9.2,1.9.4和2.0.0-0.6.rc1,但是没有更多的成功。Ansible 2应允许跳过第二次调用set_fact但错误发生在到达之前。


米脂
浏览 1559回答 1
1回答

温温酱

我以为我确实读过一个with_items接受一个裸变量名称的地方,但事实并非如此。该程序按预期运行:with_items: "{{ users }}"
打开App,查看更多内容
随时随地看视频慕课网APP