Ansible 开发调试 之【pdb本地调试】

Ansible是用Python编写的,用于调试本地代码执行的工具是Python调试器 **pdb**。这个工具允许我们在Ansys中插入断点代码和交互式地逐行执行代码。

加入调试代码


找到ansible的运行文件
[root@master ~]# whereis ansible
ansible: /usr/bin/ansible /etc/ansible /usr/share/man/man1/ansible.1.gz

在/usr/bin/ansible文件开始处加入

import pdb; pdb.set_trace()
image.png

然后运行ansible命令,就进入了pdb调试状态

image.png

pdb常用命令


输入help 查看帮助信息

image.png

输入n(next),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的

image.png

输入l(list),查看代码片段

image.png

输入p(pp) 查看变量的值

image.png

输入s(step into)n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中

image.png

输入r(return) 执行代码直到从当前函数返回

image.png

输入b 设置断点,例如 “b 78”,就是在当前脚本的78行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点

image.png

输入a(rgs),打印当前函数的参数

image.png

输入bt(w) 打印堆栈跟踪,最下面的帧位于底部。箭头表示“当前帧”,它决定了大多数命令的上下文。

image.png

输入c (continue) 停止 debug 继续执行程序,直到下一个断点。

image.png

输入q(uit),退出调试

有时候我们只是想调试某一部分代码,如果从命令入口开始调试则很难找到相应的代码,这样就需要在某一模块的入口上添加调试点就可以了。

调试inventory代码
inventory负责发现,解析,加载主机清单。
inventory的主要入口在inventory/init.py文件中的Inventory类,这个文件在linux下通常存在/usr/lib/python2.6/site-packages/ansible/inventory/init.py,如果不知道自己的ansible路径在哪里,可以使用python -c "import ansible; print(ansible)"命令查看。
下面是在init()方法中添加了断点

image.png

调试Playbook代码
Playbook负责加载,解析,执行yml文件的playbook。

palybook的主要入口在playbook/init.py文件的Playbook类,这个文件在linux下通常存在/usr/lib/python2.6/site-packages/ansible/playbook/init.py.

下面是在init()方法中添加了断点

image.png

其他的功能模块调试方法类似。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ansible 系统架构 ansible简介ansible是新出现的自动化运维工具,ansible是一个配置管理和...
    运维阿文阅读 13,240评论 1 53
  • 在项目中有很多地方用到ansible。最初使用ansible只是为了方便代码部署和模板配置,毕竟手动去30+台机器...
    __七把刀__阅读 13,679评论 6 79
  • 1. 什么是Ansible,它有什么用? Ansible它是个集配置管理和应用部署于一体的自动化运维工具。 应用情...
    午觉不眠Orz阅读 5,530评论 0 0
  • Ansible简介 Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署An...
    魏镇坪阅读 6,921评论 1 6
  • 天开始做真题卷,数学并不难,但错误率要求很低,时间也有限……………这都还好,但感觉就是小错不断, 而且很多都不是...
    忽尔今至阅读 1,301评论 0 0

友情链接更多精彩内容