排查 Ansible 执行错误,通常可以按照「从现象到原因、从全局到局部」的思路进行。下面是一套比较系统的方法。
-v / -vv / -vvv 提高日志级别ansible-playbook site.yml -vvv
-v:基本信息-vv:任务级信息-vvv:连接、模块参数、返回值(最常用)重点关注:
ansible all -m ping
常见问题:
ansible-inventory --list
ansible all --list-hosts
确认:
典型表现:
Permission deniedsudo: a password is required排查:
[web]
192.168.1.10 ansible_user=deploy ansible_become=yes ansible_become_user=root
或:
ansible-playbook site.yml --become --ask-become-pass
典型表现:
invalid argumentmissing required arguments排查:
-vvv 看实际传参例如:
排查:
ansible all -m setup
ansible all -m command -a "python3 --version"
ansible-playbook site.yml --start-at-task="Install nginx"
ansible-playbook site.yml -l web01
在目标机上手动执行 Ansible 报错的命令,观察真实环境差异。
- debug:
var: some_var
- command: /some/cmd
register: result
- debug:
var: result
| 问题 | 原因 |
|---|---|
| changed 但没效果 | 缓存 / 条件判断 |
| 主机跳过 | when 条件不满足 |
| 变量未生效 | 优先级搞错 |
| 幂等失败 | 命令本身不幂等 |
| Windows 报错 | 用了 Linux 模块 |
-vvv 看错误ping 测连通如果你愿意,可以把具体的报错信息或 playbook 片段贴出来,我可以直接帮你定位问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。