我正在使用Ansible查询vmware ESX box以获取磁盘ID,但是,我无法循环使用标准列表中的stdout_行
我的问题是:
- name: Collect vSAN disk list
raw: esxcli storage core device list | grep Devfs
delegate_to: esx_box
register: disk_list
- name: Print disk list
debug:
msg: "{{ disk_list.stdout_lines }}"
调试的输出如下所示:
ok: 1/1 [esx_box] => {
"msg": [
" Devfs Path: /vmfs/devices/disks/naa.12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/disks/naa.12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/disks/t10.ATA_____DELLBOSS_VD_____________________________12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/disks/naa.12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/disks/naa.12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/disks/naa.12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/genscsi/naa.12354ABCDEFGHIJK",
" Devfs Path: /vmfs/devices/genscsi/eui.12354ABCDEFGHIJK"
]
}
现在,我想循环disk_list.stdout_lines
,如下所示
- name: Loop over stdout_lines
debug:
msg: "{{ item }}"
loop: "{{ disk_list.stdout_lines }}"
但是,对于上述步骤,我没有得到任何输出。我不知道这里发生了什么。stdout_lines
看起来是一个带引号的正确python列表,但是带有{{ item }}
的循环根本不会循环
终于找到了问题所在
在我的
ansible.cfg
中,我使用了stdout_callback=counter_enabled
,这会在使用循环时弄乱标准输出。虽然与循环相关的任务确实有效,但没有显示在标准输出中,这会让用户误以为循环没有按预期执行要修复,我必须设置
stdout_callback=default
当使用:with_项时,它应该可以工作
相关问题 更多 >
编程相关推荐