Ansible 是一個開源 IT 自動化工具,用於持續部署或零停機滾動更新、軟件部署、配置管理和更高級 IT 任務的編排。 Ansible 在服務器配置和應用程序部署期間最大限度地減少工作量並節省大量時間。

在某些情況下,您需要一次維護大量服務器,而運行 ansible-playbook 可能需要很長時間才能完成 playbook 任務。根據官方 Ansible 文檔,您可以使用本文中描述的各種方法來加速您的劇本。使用這些方法,您可以通過修改配置來顯著減少實際的 ansible 時間百分比。

流水線

該管道取代了以前版本的 ansible 中使用的加速模式,並有助於加速專用主機上的 ssh 連接。 Ansible 啟動許多 ssh 連接來執行每個 playbook 任務。這可以增加總時間。默認情況下禁用管道,因此啟用管道會導致許多 Ansible 模塊在沒有實際文件傳輸的情況下運行,從而減少所需的 ssh 連接數量。 STDIN 通道用於在模塊運行時將指令傳遞給已知主機。

要在 ansible.cfg 文件中啟用管道,管道值必須設置為 true。

自由策略

Ansible 始終以線性策略運行 playbook,這是 playbook 工作流程之一。在線性策略中,playbook 中的每個任務僅在每個主機完成特定任務後才開始,這可能非常耗時。

使用免費策略,所有主機相互獨立,每個主機上的任務繼續運行,無需等待另一台主機完成任務。這減少了在所有專用主機上完成任務的等待時間。要覆蓋默認策略,請設置 playbook YAML 文件以發布該策略。

增加分叉數量

分叉用於在與遠程主機通信時運行默認配置提供的一定數量的並行進程的遠程主機。 fork 確定一次要配置的主機數量。默認值為 5。如果你有大量的遠程主機,你的分叉越多,你完成任務的速度就越快。您可以根據控制機器的功能(例如可用內存和網絡帶寬)來限制分叉值。

您可以通過以下方式更改 ansible.cfg 文件中的 fork 值來覆蓋默認值:就我而言,我將 fork 值設置為 20。

增加 Ansible 分叉的數量

禁用事實收集

當你運行 ansible-playbook 時,ansible 會收集有關主機的各種信息,例如網絡連接、設備信息和系統信息,並將其存儲在控制機器的本地內存緩存中。如果您正在處理大量遠程主機,禁用事實收集可以為您節省大量時間,除非您需要它們。如果您在劇本中使用 ansible 變量,則無法禁用事實收集。

在 Ansible 中禁用事實收集

結論是

Ansible 是目前最好的自動化工具之一,但在速度方面它甚至更好。本文將向您展示如何加速 ansible-playbook。這可以幫助您以簡單有效的方式快速配置和部署您的服務器。