介绍
Fabric是一个Python(2.5-2.7)库和命令行工具,用来流水线化执行SSH以部署应用或系统管理任务。
更具体地说,面料是:
- 一个让你通过命令行执行 任意Python函数 的工具;
- 一个让通过SSH执行Shell命令更加容易和 pythonic 的子程序库(建立于一个更低层次的库)。
自然地,大部分用户把这两件事结合着用,使用Fabric来写和执行Python函数或任务,以实现与远程服务器的自动化交互。基于Fabric的特点,我们可以把其用作我们服务的自动化部署。现在通过****后台的自动化部署案例,了解下面料的基本语法
deploy.py
from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm
import os
env.user = '****'
env.password = '**'
env.hosts = ['192.168.100.110']#此处可以有多个host
root_path = '/****'
data_path = '/****/data'
app_path = '/****/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
安装python(mac自带,window需要安装)
下载pip
curl -O https://bootstrap.pypa.io/get-pip.py
找到pip,执行
python get-pip.py
若无权限,则
sudo python get-pip.py
输入密码(电脑密码)
创建目录
mkdir .pip
进入目录 pip
cd pip
输入 nano pip.conf
复制粘贴 [global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
ctrl + o 保存,ctrl + o 退出
安装fabric
pip install fabric
若无权限,报错,则
sudo pip install fabric
输入密码
最后执行.py文件
fab -f ./所要执行的文件 文件里所要执行的方法