发布时间:2019-09-17 07:44:29编辑:auto阅读(1685)
fabric是啥?
Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
这东西在批量化处理一些远程命令、任务,比较方便,稍微会点python(他是一个python库么,而且一般任务都写成pyton函数的形式)就可以上手,比较简单。
一、安装python
yum -y install zlib openssl-devel ## (不执行有可能在安装pip时候报错) wget --no-check-certificate tar xf Python-2.7.8.tar.xz cd Python-2.7.8 ./configure --prefix=/usr/local/python vim Modules/Setup ##找到下面这句,去掉注释#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 否则安装pip时候报错 make make altinstall ln -s /usr/local/python/bin/python2.7 /usr/local/bin/python
二、安装pip
pip和easy_install类似是一个安装和管理python包的工具.
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py python get-pip.py ln -fs /usr/local/python/bin/pip /usr/bin/pip
三、安装fabric
pip install fabric ln -fs /usr/local/python2.7/bin/fab /usr/bin/fab 测试: [eric@localhost ~]$ python Python 2.7.8 (default, May 11 2015, 01:43:48) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import fabric
四、fabric使用实例
1、http://docs.fabfile.org/en/1.10/tutorial.html
2、批量做免密登录的一个例子fabfile.py:
#!/usr/bin/env python # -- encoding: utf-8 -- from fabric.api import local, cd, run, env from fabric.colors import red, green from fabric.context_managers import cd from fabric.operations import * from fabric.api import * env.roledefs = { 'localhost':['localhost'], 'vacproxy':['xx.xx.xx.xx','xx.x.x.x'] } #env.user='xxxx' #env.password = 'xxxxx' @roles('vacproxy') def checks(): run('uname -a') ### get the sshkey from localhost @roles('localhost') def get_sshkey(): run('cp /home/aimcpro/.ssh/id_rsa.pub /home/aimcpro') ### put the sshkey to remote server @roles('vacproxy') def put_sshkey(): with cd('/tmp'): put('/home/aimcpro/.ssh/id_rsa.pub','id_rsa.pub.master') run('cat id_rsa.pub.master >> /opt/aimcpro/.ssh/authorized_keys') def do_task(): #execute(checks) # execute(get_sshkey) execute(put_sshkey)
执行方法及结果:
3、发布web包的一个例子deploy.py:
#!/usr/bin/env python # -*- coding: utf-8 -* #添加中文注释的编码 #fabfile.py from fabric.api import * env.user = 'root' env.hosts = ['192.168.1.100'] #远程服务器的密码,这个建议不要填写,宁愿在运行的过程输入,因为这是明文显示的,不安全 #也可以将机子的ssh打通,这样就可以避免输入密码的麻烦 #env.password = 'testtest' #从版本库取出,并删除.svn文件 def download(): local('rm -rf /tmp/newer' ) local('mkdir /tmp/newer') local('svn checkout svn://localhost/newer /tmp/newer') local('find /tmp/newer -name ".svn" | xargs rm -rf') #压缩打包 def pack(): with lcd('/tmp/'): local('tar czvf newer.tar.gz ./newer') #部署远程服务器目录结构 def display(): run('rm -rf /var/www/html/tmp') run('mkdir /var/www/html/tmp') # 将本地的压缩包发送到远程服务器 put('/tmp/newer.tar.gz','/var/www/html/tmp') with cd('/var/www/html/tmp'): run('tar xvf newer.tar.gz') #部分目录进行特别处理 with cd('/var/www/html/newer/public/'): run('cp -r ueditor ../../tmp') with cd('/var/www/html/'): run('rm -rf newer') run('cp -r /var/www/html/tmp/newer ./') with cd('/var/www/html/newer/public'): run('rm -rf ueditor') run('cp -r /var/www/html/tmp/ueditor ./') # 执行部署 def go(): download() pack() display()
执行方法:
fab -f deploy.py go
上一篇: ElasticSearch的API py
下一篇: python的subprocess模块
47840
46390
37280
34733
29312
25971
24911
19950
19544
18030
5791°
6411°
5927°
5961°
7063°
5911°
5942°
6437°
6404°
7778°