Ansible Playbook 调试与预演指南:从语法检查到连通性排查
1:调试 playbook 时,最该先看哪一段输出?
答:先查看ansible-navigator run的 PLAY RECAP 段落,它能一次性给出每台受管主机的 ok、changed、unreachable、failed、skipped、rescued、ignored 等计数,快速定位问题主机。
2:如何动态查看某个变量的实时值?
答:使用ansible.builtin.debug模块。
示例:
yaml
- name: 显示空闲内存
ansible.builtin.debug:
msg: "Free memory is {{ ansible_facts['memfree_mb'] }} MB"
- name: 显示变量 output 的值
ansible.builtin.debug:
var: output
verbosity: 2
3:上线前怎样快速做“语法体检”?
答:ansible-navigator run playbook.yml --syntax-check` —— 纯 YAML/Playbook 语法检查; ansible-lint playbook.yml—— 基于红帽最佳实践的样式/逻辑检查(FQCN、空格、空行等)。
4:ansible-lint 报 “fqcn-builtins” 错误是什么意思?
答:任务中使用了短模块名,需改为完全限定集合名(FQCN)。
5:运行失败后,如何“复盘”当时的完整执行现场?
答:利用 playbook artifact:
每次ansible-navigator run会自动生成<playbook>-artifact-<时间戳>.json。
用ansible-navigator replay <artifact>交互式逐条查看任务结果、变量、失败原因。
若不想留痕迹,可在项目目录创建 ansible-navigator.yml并写入:
ansible-navigator:
playbook-artifact:
enable: false
6:如何对受管主机做连通性“三连击”排查?
答:认证:ssh -i <key> <remote_user>@<host>手动验证。
清单:ansible_host变量是否写错 IP/域名。
权限升级:确认远程用户 sudo 免密或提供 -K输入密码。
7:只想“演习”不真正改系统,用什么参数?
答:ansible-navigator run playbook.yml --check [--diff]。
--check:Dry-run,展示 would-be 变更;
--diff:配合显示配置文件/模板差异。