python fabric

来源:互联网 发布:ios 网络图片尺寸 编辑:程序博客网 时间:2024/06/14 08:22

介绍

Fabric 是一个 Python (2.5-2.7) 库和命令行工具,用来流水线化执行 SSH 以部署应用或系统管理任务。

更具体地说,Fabric 是:

  • 一个让你通过 命令行 执行 任意 Python 函数 的工具;
  • 一个让通过 SSH 执行 Shell 命令更加 容易 和 pythonic 的子程序库(建立于一个更低层次的库)。

自然地,大部分用户把这两件事结合着用,使用 Fabric 来写和执行 Python 函数或 任务 ,以实现与远程服务器的自动化交互。基于Fabric的特点,我们可以把其用作我们服务的自动化部署。现在通过T99a后台的自动化部署案例,了解下Fabric的基本语法

deploy.py
from __future__ import with_statementfrom fabric.api import *from fabric.contrib.console import confirmimport osenv.user = 'sxkj'env.password = 'sx'env.hosts = ['192.168.199.110']#此处可以有多个hostroot_path = '/sxkj'data_path = '/sxkj/data'app_path = '/sxkj/app'def generate_directories():    '''    创建目录结构    :return:    :rtype:    '''    sudo('rm -rf {}'.format(root_path))    sudo('mkdir -p -m 777 {}'.format(root_path))    run("mkdir -p {}/logs/t99a".format(data_path))    run("mkdir -p {}/videos".format(data_path))    run("mkdir -p {}".format(app_path))def copy_install_files():    '''    拷贝相关文件    :return:    :rtype:    '''    with cd('~/.ssh'):        sudo('rm -rf config id_rsa_sxpdate')    put('bootfiles/ssh/*','~/.ssh/')    run('chmod 600 ~/.ssh/*')def deploy_codes():    '''    部署应用    :return:    :rtype:    '''    with cd(app_path):        run('git clone sxupdate:T99ALGORITHM.git ./t99a')def deploy_models():     '''    部署模型    :return:    :rtype:    '''    with cd(os.path.join(app_path,'t99a')):        run('wget  -r -nH --cut-dirs=2  ftp://sxkj:zfwzyzxq@192.168.199.31/datashare/t99a/models')def launch_containers():    '''    启动所有容器    :return:    :rtype:    '''    with cd('{}/t99a/dockers/'.format(app_path)):        with settings(warn_only=True):            run('sh ./create_t99lan.sh')        for compose_dir in ['performance_monitor','logio','t99_algorithm']:            with cd(compose_dir):                run('docker-compose down')                run('docker-compose up -d')def t99():    '''    部署应用的入口    '''    generate_directories()    copy_install_files()    deploy_codes()    deploy_models()    launch_containers()

最后,我们的本地执行命令:

fab -f ./deploy.py t99

原创粉丝点击