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,

你可能感兴趣的:(python)