1.官方模块调试
ansible
开发人员指南的文献资料中有详细的调试方法,可参考
传送门
2.自定义模块调试
前提: 自定义模块一般是出现问题了才会去debug自定义模块的内容,也就是程序运行卡在了自定义模块处
调试步骤
step1 查看错误详细信息
查看错误详细信息主要是为了看到playbook
运行过程中生成的临时文件
ansible-playbook -i inventory all.yml -vvv
#默认主机信息在inventory中
#默认playbook名为all.yml
示例
#运行过程中模块的临时文件路径
/root/.ansible/tmp/ansible-tmp-1614847639.99-2480-188457856158931/AnsiballZ_dataformat.py
step2 到临时目录中处理文件
设置环境变量 ANSIBLE_KEEP_REMOTE_FILES=1
该环境变量的作用:Ansible
将保留远程模块文件,而不是在模块完成执行后将其删除
export ANSIBLE_KEEP_REMOTE_FILES=1
到执行主机的临时目录下
cd /root/.ansible/tmp/ansible-tmp-1614847639.99-2480-188457856158931/
该目录结构中会有一个AnsiballZ_dataformat.py
文件
运行包装程序的explode
命令,将字符串转换为可以使用的一些Python文件
python AnsiballZ_dataformat.py explode
在AnsiballZ_dataformat.py
同级目录下会生成debug_dir
目录
debug_dir/ansible/modules
目录下有对应模块的python
代码,图示的例子中是ping.py
debug_dir/args
文件包含一个JSON字符串。该字符串是一个字典,包含Ansible传递给模块以更改其行为的模块参数和其他变量。修改此文件以更改传递给模块的参数。
step3 debug处理
可以通过修改modules
目录下模块对应的文件,而后在临时目录下执行如下语句
python AnsiballZ_dataformat.py execute
tips:
一般会做的操作是在模块脚本文件中使用pdb进行debug,一步步排查出问题,再运行上述语句执行就会进入到pdb打的断点处
pdb调试传送门
Stay Hungry,Stay Foolish!