如何使用Ansible的with_item用变量?如何使用Ansible的with_item用变量?

2019-05-11 02:29发布

我试图改变一个列表项中的某些字段在Ansible剧本。 这是最简单的再现路径,跳过转型。 结果应该是一致的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但到达那里之前发生的错误。

Answer 1:

我以为我读的地方, with_items接受裸变量名,但它并非如此。

该程序运行的预期使用:

with_items: "{{ users }}"


文章来源: How to use Ansible's with_item with a variable?
标签: ansible