在 github 發現一個 Ansible 任務計時插件“ansible-profile”,安裝這個插件後會顯示 ansible-playbook 執行每一個任務所花費的時間。Github 地址: https://github.com/jlafon/ansible-profile 。 這個插件安裝很 ...
在 github 發現一個 Ansible 任務計時插件“ansible-profile”,安裝這個插件後會顯示 ansible-playbook 執行每一個任務所花費的時間。Github 地址: https://github.com/jlafon/ansible-profile 。 這個插件安裝很簡單,只需要簡單的三個命令即可完成安裝。在你的 playbook 文件的目錄下創建一個目錄,目錄名 callback_plugins 然後將下載的 profile_tasks.py 文件放到該目錄下。
cd /etc/ansible mkdir callback_plugins cd callback_plugins wget https://raw.githubusercontent.com/jlafon/ansible-profile/master/callback_plugins/profile_tasks.py
現在,執行 ansible-playbook 命令就會看到 playbook 中每個 tasks 的用時情況。
圖 1.ansible-playbook tasks 用時情況
在這裡,我設置了 2 個 task,1 個 task sleep 10 秒,另 1 個 task sleep 15 秒,在 PLAY RECAP 處會彙總所有 task 執行消耗的時間。
關閉 gathering facts
如果您觀察過 ansible-playbook 的執行過程中,您會發現 ansible-playbook 的第 1 個步驟總是執行 gather facts,不論你有沒有在 playbook 設定這個 tasks。如果你不需要獲取被控機器的 fact 數據的話,你可以關閉獲取 fact 數據功能。關閉之後,可以加快 ansible-playbook 的執行效率,尤其是你管理很大量的機器時,這非常明顯。關閉獲取 facts 很簡單,只需要在 playbook 文件中加上“gather_facts: no”即可。如下
---
- hosts: 172.16.64.240
gather_facts: no
remote_user: liheng
sudo: yes
roles:
- {role: profile_test}
好的,來看關閉前後的執行時間變化。
圖 2. 關閉 gather_facts 前後的執行變化
關閉前後,執行時間相關 1 秒,因為我這裡只有一臺機器,所以時間差距並不是很明顯。不過,從這個例子也可以看出,關閉 facts 獲取後,執行速度是快了的。