python自動化運維庫——簡單的系統批量運維管理器Fabric

#################################### Fabric3 ##############################################
1.安裝
    # pip install fabric3                        #fabric3是支持python3的fabric
    # python3
    # import fabric                              #如果無報錯則證明安裝成功

2.常用參數
    -l                     #顯示定義好的任務函數名
    -f                     #指定fab入口文件,默認爲fabfile.py
    -g                     #指定網關
    -H                     #指定目標主機,多臺主機用逗號分隔
    -P                     #以異步並行方式運行多主機任務,默認爲串行
    -R                     #指定role(角色),以角色名區分不同業務組設備
    -t                    #設置超時時間(秒)
    -T                     #設置遠程主機命令執行超時時間(秒)
    -w                     #當命令執行失敗,發出警告,而非默認的中止任務

3.編寫fabfile.py
    fab默認使用當前目錄下的fabfile.py作爲默認文件
    ###文件第一行爲 from fabric.api import *

    示例:
        # vim fabfile.py

    from fabric.api import *
    host1 = '196.168.1.1'
    env.hosts=[host1]                            #可用列表形式
    env.passwords = 'password'                    #可用字典形式{'[email protected]:22':'password','[email protected]:22':'password'}

    def hello():
        print("hello world!")
    def ping():
        run('ping www.baidu.com')
    def chdir():
        cd('/usr')
        run('ls')
    def istrue():
        with cd('/'):
            run('ls')

4.全局屬性設定
    env.host,定義目標主機,單目標主機
    env.hosts,定義目標主機,列表類型。['192.168.1.1', '192.18.1.2',]。
    env.exclude_hosts,排除指定主機。
    env.user,定義用戶名。
    env.port,定義目標主機端口。
    env.password,定義密碼
    env.passwords,字典類型,配置是需要用戶名@目標主機ip:端口:密碼,{'[email protected]:22':'password','[email protected]:22':'password'}
    env.gateway,定義網關IP
    env.deploy_release_dir,自定義全局變量
    env.roledefs,定義角色分組,
        env.roledefs = {'webserver':['host1','host2','host3']
                        'dbserver':['host4','host5']
        }

        使用角色修飾符,角色修飾符下面的任務函數爲其作用於,實例:
            @roles('webserver')
            def webtask():
                run('uname')

            @roles('dbserver')
            def dbtask():
                run('uname')

            @roles('webserver', 'dbserver')
            def publictask():
                run('uname')

            def deploy():
                execute(webtask)
                execute(dbtask)
                execute(publictask)

5.常用API
    local(),執行本地命令
    lcd(),切換本地目錄
    cd(),切換遠程目錄
    run(),執行遠程命令
    sudo(),sudo方式執行遠程命令
    put(),上傳本地文件到遠程主機
    get(),從遠程主機下載文件
    prompt(),獲得用戶輸入信息
    confirm(),獲得提示信息確認
    reboot(),重啓遠程主機
    @task,函數修飾符,表示的函數爲fab可調用,非標記對fab不可見,純業務邏輯
    @runs_once,函數修飾符,表示的函數只會執行一次,不受多臺主機影響
    @roles,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章