Ansible任务已被跳过但执行输出未显示skipping提示问题咨询
问题原因说明
1. 任务被跳过的原因
第二个任务使用with_items遍历第一个shell任务输出的shell_output.stdout_lines变量。从第一个任务返回ok的结果可以判断,第一条shell命令没有扫描到任何未设置粘滞位的全局可写目录,所以shell_output.stdout_lines是空列表。
Ansible中所有循环类指令(包括with_*系列)在遍历的列表为空时,会默认直接跳过当前任务,这就是执行汇总中skipped=1的来源。
2. 无跳过提示输出的原因
这是Ansible Core 2.11版本的默认行为,符合两种场景:
- 当循环的迭代列表为空时,Ansible不会为该任务打印单独的
skipping日志行,只会在最终的执行汇总里统计跳过计数 - 如果你在ansible.cfg的
[defaults]段中将display_skipped_hosts参数设置为False,所有跳过的任务都不会打印单独的跳过提示,仅会在最终汇总中更新计数。
如果需要显示所有跳过任务的明细日志,可以在ansible.cfg中添加配置display_skipped_hosts = True,或者执行playbook时额外添加参数-e display_skipped_hosts=True。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

