我想以交互方式调试以下脚本中item
s对象的内容。
- name: Deploy the apps from the apps directory to the splunk servers
ansible.posix.synchronize:
src: '{{ absolute_file_store_path }}/etc/{{ selected_apps_sourcedir }}/{{ item.source_app }}/'
dest: '{{ splunk_path }}/etc/apps/{{ item.name }}/'
copy_links: true
recursive: true
checksum: true
times: false
delete: true
owner: false
group: false
archive: false
use_ssh_args: "{{ synchronize_module_use_ssh_args | default(false) }}"
rsync_path: 'sudo -u {{ splunk_user }} rsync'
rsync_opts: '{{ selectable_apps_rsync_opts + item.rsync_opts if item.rsync_opts is defined else selectable_apps_rsync_opts }}'
notify: notify standalone splunkd restart
loop: '{{ selected_apps | default([]) if selected_apps | default([]) is iterable else [] }}'
when:
- item.state == 'present'
- item.dest_dir is not defined or
item.dest_dir == "etc"
- item.target is defined and item.target == inventory_hostname or
item.target is not defined
为此,我已经检查了使用debugger
关键字启用调试器,但我找不到任何方法来打印item
及其属性。
我已经添加了debugger: always
,它就停在那里了。问题是我不知道打印item
的语法,因为它不在task.args
或task_vars
中。
这甚至可以交互吗?是否表示不使用debug
模块的msg
?
1条答案
按热度按时间jhkqcmku1#
如何交互调试?
items
对象的内容。我已经添加了debugger: always
,它就停在那里。*最小示例剧本
会有这种行为
可以看到,使用
debugger
关键字启用调试器发生在围绕任务的循环已经完成之后。item
的语法,因为它不在task.args
或task_vars
中。*即使使用文档中的正确语法
它在那个阶段将不再有效果。
item
及其属性的任何方法。*要打印所有任务变量,只需在交互式调试器中使用
p task_vars
,但是,您要查找的内容在本示例中不会出现。摘要
不是完全按照要求的方式。你能做的是
task_vars['item'] = 0
重新定义变量item
update_task
redo
运行导致输出
请注意有关使用
loop_var
定义变量名的警告消息。如何继续?
items
对象的内容...*这也可以通过使用
label
限制循环输出来实现这取决于你想达到什么目的