我已经编写了一个ansible自定义过滤器来处理ansible中的一些数据,并返回一个dictionary对象
模块按预期工作,我得到了类似的东西回来
TASK [ansible-role-filesystem-setup : set f_ceph_disk_check fact] ************************************************************************************************************************************************************************
empty disks: {u'nvme2n1': {'disk': u'nvme2n1', 'os_to_osd': u'unassigned', 'size': u'10.00 GB'}}
required_osds: {u'osd0': {'assigned_disk': u'unassigned', 'osd': u'osd0', 'size': u'10.00 GB'}, u'osd1': {'assigned_disk': u'unassigned', 'osd': u'osd1', 'size': u'10.00 GB'}}
Updated/assigned required_osds: {u'osd0': {'assigned_disk': u'nvme2n1', 'osd': u'osd0', 'size': u'10.00 GB'}, u'osd1': {'assigned_disk': u'unassigned', 'osd': u'osd1', 'size': u'10.00 GB'}}
<type 'dict'> <-- i'm printing out the data type before returning.
ok: [ip]
TASK [ansible-role-filesystem-setup : Display output from ceph_disk_result var] **********************************************************************************************************************************************************
ok: [ip] => {
"msg": " {u'nvme2n1': {'disk': u'nvme2n1', 'os_to_osd': u'osd0', 'size': u'10.00 GB'}} "
}
TASK [ansible-role-filesystem-setup : Loop through ceph_disk_result and fail if any are unassigned] **************************************************************************************************************************************
ok: [ip] => (item= {u'nvme2n1': {'disk': u'nvme2n1', 'os_to_osd': u'osd0', 'size': u'10.00 GB'}} ) => {
"msg": "checking: {u'nvme2n1': {'disk': u'nvme2n1', 'os_to_osd': u'osd0', 'size': u'10.00 GB'}} "
}
- name: set f_ceph_disk_check fact
set_fact:
ceph_disk_result: " {{ empty_disks | f_ceph_disk_check(expected_disks) }} "
- name: Display output from ceph_disk_result var
debug:
msg: "{{ ceph_disk_result }}"
- name: Loop through ceph_disk_result
debug:
msg: "checking: {{ item }}"
with_items: "{{ ceph_disk_result }}"
但是当我想从ansible使用它时,它看起来像是把返回的字典看作一个字符串——所以我不能用任何好的东西来使用dicts
有人能帮我理解为什么当它显然是一个dictionary对象时,ansible将它视为一个字符串,我能做些什么来确保它再次成为dictionary对象,这样我就可以使用循环来做各种事情
在我的python FilterModule中,我这样做只是为了返回值
print(type(required_osds))
return required_osds
目前没有回答
相关问题 更多 >
编程相关推荐