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

其他的功能模塊調試方法類似。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • ansible 系統架構 ansible簡介ansible是新出現的自動化運維工具,ansible是一個配置管理和...
    運維阿文閱讀 9,696評論 1 52
  • 在項目中有很多地方用到ansible。最初使用ansible只是為了方便代碼部署和模板配置,畢竟手動去30+臺機器...
    __七把刀__閱讀 10,787評論 6 79
  • 1. 什么是Ansible,它有什么用? Ansible它是個集配置管理和應用部署于一體的自動化運維工具。 應用情...
    午覺不眠Orz閱讀 1,559評論 0 0
  • Ansible簡介 Ansible是2013年推出的一款IT自動化和DevOps軟件,目前由Redhat已簽署An...
    魏鎮坪閱讀 2,379評論 1 6
  • 天開始做真題卷,數學并不難,但錯誤率要求很低,時間也有限……………這都還好,但感覺就是小錯不斷, 而且很多都不是...
    忽爾今至閱讀 163評論 0 0