• Fabric使用笔记


    安装

    # python2
    $ pip install -y fabric
    
    # python3
    $ pip install -y fabric3
    

    基本使用

    使用命令行fab执行,默认寻找当前目录下的fabfile.py文件中定义的任务。

     $ fab some_task:role=somerole,argument1=someval
    

    全局变量

    在fabfile.py中,适用于全局的变量有:

    # 
    env.disable_known_hosts = True
    
    # 定义默认的用户和密码
    env.user = 'user'
    env.password='pwd'
    
    # 定义可用的角色
    env.roledefs = {
        'role1': ['192.168.0.111', '192.168.0.112'],
    
    }
    
    

    局部变量

    def task():
        # ip 即为远程主机的ip
        ip = env['host_string']
        print(ip)
    

    核心命令

    from fabric.api import *
    
    # 在远程运行
    run('cmd')
    # 本地运行
    local()
    # 本地切换目录
    lcd('/path/to/dir')
    # 远程切换目录
    cd('/path/to/dir')
    
    # root权限运行命令
    sudo()
    
    
    # 使用上下文管理器
    with cd():
        # do_something()
        pass
    # 命令报错时仅显示警告而不中断程序运行
    with settings(warn_only=True):
        # do_something()
        pass
    
    # 并行执行命令
    @parallel
    def some_task():
        pass
    

    命令行传参

    命令行参数仅支持字符串格式,传参方式与传入roles一样,用key=value表示,用逗号相连

    def do_somethins(arg1=None, arg2=None):
        # some work here
        pass
    
    $ fab do_something:roles=role1,arg1=val1,arg2=val2
    

    主机管理

    可以通过几种方式决定一个任务要在哪些机器上执行:

    • 命令行参数 -H、-R
    • fabfile.py中的env.user
    • 任务中的@roles('role1') 装饰器
    • 执行命令时传入的roles=val 参数

    rsync文件传输

    fabric特别提供了对rsync的支持:

    from fabric.contrib.project import rsync_project
    
    def transfer_file():
        rsync_project(remote_dir='/path/to/dir', local_dir='/path/to/local/dir')
    
    
  • 相关阅读:
    vs code快捷键
    封装一个运动函数
    关于数组操作方式的总结
    学习html/css基础的重点笔记
    web新手——新闻列表这样写不容易出错
    AppCan——生成Web/微信App版,调用微信JSAPI支付方式,提示WeixinJSBridge内置对象undefined
    vue slot 占位符
    vue /deep/ css 不用1级1级找了
    vue 双向绑定 2个{{}}
    axios 请求接口 f12可以返回值 但是控制台打印报错
  • 原文地址:https://www.cnblogs.com/zhangjpn/p/12459493.html
Copyright © 2020-2023  润新知