使用Fabric 批量執行服務器任務
我們的服務器和虛擬機的環境配置都由puppet管理,但有時候需要臨時執行某些任務和操作,比如同時更換500台服務器的密碼、同時更新或者重啟500台虛擬機、在特定幾台服務器上添加或者一個用戶、上傳一個特定文件/腳本到1000台服務器等等。這些任務用Puppet可以做,但是不是最簡潔的辦法。我們需要一種工具能完成大量服務器上的批量操作,並且要簡單可編程,Fabric就是這樣一個基於Python的服務器批量管理庫/工具,Fabric使用ssh(通過paramiko庫)在多個服務器上批量執行任務,我們只需要用Python編寫這些任務腳本並指定要執行這些任務的服務器就可以了。 Fabric 依賴paramiko,所以需要安裝這兩個: $ sudo pip install fabric $ sudo pip install paramiko 編寫一個簡單的Fabric 例子,在1台服務器上打印系統信息(uname -s): $ vi fabfile.py #!/usr/bin/python from fabric.api import run def host_os(): run('uname -s') 在vpsee.com 這台主機(host)上使用root 帳戶執行上面的任務host_os: $ fab -H root@vpsee.com host_os [root@vpsee.com] Executing task 'host_os' [root@vpsee.com] run: uname -s [root@vpsee.com] Login password for 'root': [root@vpsee.com] out: Linux Done. Disconnecting from root@vpsee.com... done. 來看一個更複雜點的例子,在多個服務器(grid00, grid02, …, grid05)上更換root 密碼(假設原密碼是root),注意加上@parallel,這樣任務是並行執行的,在大量服務器上會快很多: #!/usr/bin/python # -*- coding: utf-8 -*- from fabric.api import * import st...