fabric

  • Fabric:项目代码部署工具
    • 主要功能
      • SSH登录远程服务器,然后执行各种操作命令
        • 偶尔会用到命令操作执行的结果
    • 主要包含3部分
      • Invoke:
        • 主要处理:命令行中的参数导入,任务管理,shell命令执行等事情
        • 对于(此处hello world这种)和远程remote服务器没关系的,往往都是调用invoke实现的
        • 用户常需要导入Invoke,去实现命令解析等工作
      • Paramiko
        • 主要实现了底层和中层的SSH的功能:SSH和SFTP的会话,key的管理等
        • Fabric内部调用Paramiko,用户很少需要import导入Paramiko
      • Fabric
        • 打包了其他各种库和功能
          • 继承了Invoke的Context上下文
          • 封装了Paramiko底层的功能
          • 通过Paramiko的ssh_config去扩展了Invoke的配置系统
          • 实现了高层功能封装,比如端口转发的上下文管理等

使用Fabric之前一定要注意版本

Fabric的3个版本的区别

  • Fabric1和Fabric2,在pypi中的页面,就是同一个东西:
    • 都是Fabric的最新版:Fabric 2.x
      • 截至到20180817,安装出来的版本是:2.3.1
    • 而官网之所以弄出来个Fabric2是因为:
    • Fabric2和Fabric1相比,完全重写了,接口和功能都有很大改动
      • 官网也不建议你继续用Fabric1,建议升级到Fabric2
      • 最新版也早就支持Python 3.4+,和之前的Python2.7
  • 而Fabric3,是非官网的
    • 是当之前Fabric1还没有支持Python3时,别人去fork出来,加了Python 3的支持的
    • 现在好像基本上不维护了

Fabric 1 vs Fabric 2

如何选择Fabric的版本

  • 尽量用最新的Fabric2
    • Mac中用brew install fabric
      • 已经是最新的2.3.1版本了
          > fab --version
          Fabric 2.3.1
          Paramiko 2.4.1
          Invoke 1.1.1
        
    • 如果pip install的话,应该是:
      • pip install fabric
      • pip install fabric2
        • 都是最新版本
  • 尽量不要用之前旧的版本的Fabric1
  • 不需要操心、忽略掉,所谓的、非官网的,现在已没价值的:Fabric3

Fabric文档和资料

fab

Fabric安装后,有个命令行工具,叫fab

Fabric的使用

去写代码,一般叫做:fabfile.py

比如:

from invoke import task

def fabLoadedPath():
    from fabric.main import program
    return program.collection.loaded_from

@task
def upload(context):
    # print("upload: context=%s", context)

    fabFilePath = fabLoadedPath()
    print("fabFilePath=%s" % fabFilePath)

然后再去命令行中通过fab去运行fabfile.py中的task:

fab upload
  • upload是你的task的名字
    • =你fabfile.py中加了@task的函数名

results matching ""

    No results matching ""