Ansible Playbook 调试与预演指南:从语法检查到连通性排查

发布于:2025-08-31 ⋅ 阅读:(15) ⋅ 点赞:(0)

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:配合显示配置文件/模板差异。