Python中的批量遠程管理和部署工具:fabric

ew3y 9年前發布 | 18K 次閱讀 Fabric Python開發

Fabric是Python中一個非常強大的批量遠程管理和部署工具,常用于在多個遠程PC上批量執行SSH任務.

常見的使用方法大概總結如下:

1, 首先,要將批量執行的任務寫入到一個fabfile.py中,

    # -*- coding:utf-8 -*-  

    from fabric.api import run, local, roles, env, cd  
    env.hosts=[  
        '192.168.1.110',  
        '192.168.1.111',  
        '192.168.1.112'  
    ]  
    env.user="username"  
    env.password="password"  
    env.port=22  
    #env.parallel=True  
    #env.skip_bad_hosts=True  
    #env.timeout=1  
    #env.warn_only=True  

    # local用于在本地PC執行命令.  
    # run用于在遠程PC執行命令.  
    def ls():  
        with cd('/home/workspace/project'):  
            local('touch 1.log')  
        with cd('/home/workspace/project2'):  
            local('touch 2.log')   

    #@parallel, 可以設置是否并行執行  
    #@serial  
    def pull():  
        with cd('/home/workspace/project'):  
            run('git pull')  

    def clean():  
        with cd('/home/workspace/project'):  
            run('bash clean.sh')  

    @hosts('192.168.1.113')  
    def robot(device):  
        with cd('/home/workspace/project'):  
            run('bash run.sh %s robot && sleep 1' % device)  

以上就是一個簡單的fabfile.py, 其中定義的函數均對應一個fab中的可執行命令.

其中有兩個小的注意事項,

    A,在遠程機器的run.sh中如果要執行一些非系統常見的工具,最好指定為絕對路徑. 且可以適當地使用nohup的方式.

    B,執行其他腳本或者命令后最好加上sleep,以防止Fabric過早地關閉與遠程PC連接的session,而導致執行任務失敗.

2, 執行過程: fabric執行會默認選取當前目錄下的fabfile.py文件,

    fab clean

    fab pull

    fab robot:hosts="192.168.1.115",device=5560

    可以通過hosts參數給fabric傳入指定的遠程PC, 該hosts參數的優先級比env.hosts的要高.

    也可以給fab中的命令傳遞參數,如device.

此外,還可以通過fab -f otherFabFile.py clean來指定其他的fabric文件.

如果需要并行執行的話,也可以傳遞參數如fab -P -z 15 pull, 15表示并行執行的PC數量.

以上,只是一些簡單的用法,如果需要更高級的用法,可以關注該項目的github主頁 https://github.com/fabric/fabric.

 本文由用戶 ew3y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!