【发布时间】:2016-03-03 00:52:45
【问题描述】:
我正在尝试转换 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'"}
severalexamples 非常接近我的需要,但我找不到使用 set_fact 以及 with_items 和项目作为地图的工作示例。
我已经尝试了 Ansible 1.9.2、1.9.4 和 2.0.0-0.6.rc1 的不同错误消息,但没有更多成功。 Ansible 2 应该允许跳过对 set_fact 的第二次调用,但错误发生在到达那里之前。
【问题讨论】:
标签: ansible