python三大神器之fabric使用教程

fabric 是一个python包 是一个基于ssh的部署工具包

通常用来对网站 微服务等等的批量部署 例如 我有5台线上服务器 可以通过一台对着5台分发,实现自动部署的目的。

简单介绍下 fabric的常用命令

常用命令

lcd(dir): 进入本机某目录
local(cmd): 本机上执行命令
cd(dir): 进入服务器某目录
run(cmd):服务器上执行命令

Fabric

Fabric是一个python的远程执行shell的库,同时它也是一个命令行工具。它提供了丰富的同 SSH 交互的接口,可以用来在本地或远程机器上自动化、流水化地执行 Shell 命令。

安装Fabric

Fabric的官网是 www.fabfile.org ,源码托管在 Github 上。你可以clone源码到本地,然后通过下面的命令来安装。但是在源码安装前,你必须先将Fabric的依赖包 Paramiko 装上。

python setup.py develop

同时也可以使用pip安装,因为fabric是python的一个第三方库,只需一条命令即可:

 pip install fabric

python3 安装时使用的是fabric3 :( 安装fabric3之前,需要先卸载fabric.)

  1. # fabric3 支持 python3
  2. pip uninstall fabric
  3. pip3 install fabric3

fabric 不只是一个Python 模块,fabric 还是一个命令行工具,可以使用fab -h查看帮助信息

E:\my_data\hk-project>fab -V
Fabric3 1.14.post1
Paramiko 2.4.2
E:\my_data\hk-project>fab -h

入门使用

fabric的使用方式是通过编写一个python文件,该文件中包含多个函数,然后使用fab命令调用这些函数,做相应的任务。这些函数在fabric中称为task。

# filename:abc.py​
 from fabric.api import *​
 def task1():
   print("hello")
 def hello():
   print("hello world")

写好这个python文件后,在当前目录的路径下使用fab工具执行文件中的函数

[root@localhost python文件所在的目录]# fab -f abc.py hello
 hello world
 ​# -f 指定fabfile文件,默认为fabfile.py,若文件名是当前目录下的fabfile.py则无需指定

任务参数

此时你可能会想,如果这个函数有参数怎么办呢?应该如何传递参数给函数呢?Fabric 支持 Shell 兼容的参数用法: <任务名>:<参数>, <关键字参数名>=<参数值>,... 用起来就是这样。

 def hello(name="world"):
   print("hello {}".format(name))

我们可以这样去指定参数

$ fab hello:name=Jeff  # 或者 fab hello:Jeff
 hello Jeff
 ​Done.

小试牛刀

现在我们假设需要写一个fabfile.py,能够在每次web项目代码更新后使用git提交并远程服务器拉去最新代码并运行,需求描述清楚了,开干吧!

# fabfile.py
 # 这里建议将该文件放入项目文件的根目录中,方便git提交
 from fabric.api import local
 def test():
   local('python manage.py test myapp')
   # 测试是否能正常运行
 def commit():
   local('git add -p && git commit -m "for test"')
 def push():
   local('git push')
 def prepare_deploy():
   test()
   commit()
   push()

这个 prepare_deploy 任务可以单独调用,也可以调用更细粒度的子任务。

故障

Fabric 会检查被调用程序的返回值,如果这些程序没有干净地退出,Fabric 会终止操作。我们什么都不用做,Fabric 检测到了错误并终止,不会继续执行 commit 任务。

我们也可以对故障进行一定的处理和判断

from fabric.api import local, settings, abort
 from fabric.contrib.console import confir
 def test():
   with settings(warn_only=True):
     result = local('./manage.py test my_app', capture=True)
     # result.return_code返回码(0/1)和result.failed
   if result.failed and not confirm("Tests failed. Continue anyway?"): # confirm判断用户输入
     abort("Aborting at user request.") # 指定错误退出信息
 # 一个名为 warn_only 的设置(或着说 环境变量 ,通常缩写为 env var )可以把退出换为警告,以提供更灵活的错误处理。如果设置为False,则一条命令运行失败会就会退出,不再执行后面的命令。

建立连接

终于到了连接了,这个工具主要作用就是在远程执行命令呀,学会了这个,我们就可以在本地执行远程服务器的命令了。

from fabric.api import *
 env.hosts = ['root@192.168.10.11:22']​
 def deploy():
   run('ls') # run()用于执行远程命令,local()执行本地命令
 # 执行后会提示你输入密码,输入密码即可

至此,入门结束,后续还有更多api的讲解,敬请关注!

参考链接:

fabric官方中文文档: https://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html

总结

以上所述是小编给大家介绍的python三大神器之fabric使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Python的批量远程管理和部署工具Fabric用法实例

    本文实例讲述了Python的批量远程管理和部署工具Fabric用法.分享给大家供大家参考.具体如下: Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务. 常见的使用方法大概总结如下: 1. 首先,要将批量执行的任务写入到一个fabfile.py中, 复制代码 代码如下: # -*- coding:utf-8 -*-    from fabric.api import run, local, roles, env, cd  env.host

  • Python自动化部署工具Fabric的简单上手指南

    Fabric 是基于 SSH 协议的 Python 工具,相比传统的 ssh/scp 方式,用 Python 的语法写管理命令更易读也更容易扩展,管理单台或者多台机器犹如本地操作一般. 官网地址:http://fabfile.org 安装 省略python.pip管理工具安装过程 pip install fabric 验证是否安装成功 进入python编辑模式,输入代码,无错即表示成功安装 from fabric.api import local fabric版hello world fabri

  • python fabric使用笔记

    fabric title是开发,但是同时要干开发测试还有运维的活--为毛 task*3 不是 salary * 3 (o(╯□╰)o) 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多. 修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A,B,C,D,E(1分钟),分别ssh到ABCDE五台机器,逐一重启(8-10分钟) = 13-15分钟 其中郁闷的是,每次操作都是相同的,命令一样,要命的是在多个

  • Python下Fabric的简单部署方法

    Fabric是一个用Python开发的部署工具,最大特点是不用登录远程服务器,在本地运行远程命令,几行Python脚本就可以轻松部署. 文档入口 简单安装 sudo easy_install fabric 部署脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- from datetime import datetime from fabric.api import * # 登录用户和主机名: env.user = 'root' env.hosts =

  • python fabric实现远程操作和部署示例

    近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多.修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A,B,C,D,E(1分钟),分别ssh到ABCDE五台机器,逐一重启(8-10分钟) = 13-15分钟其中郁闷的是,每次操作都是相同的,命令一样,要命的是在多个机器上,很难在本机一个脚本搞定,主要时间都浪费在ssh,敲命令上了,写成脚本,完全可以一键执行,花两分钟看下执行结果 直到,发现了fabri

  • Python自动化运维和部署项目工具Fabric使用实例

    Fabric 是使用 Python 开发的一个自动化运维和部署项目的一个好工具,可以通过 SSH 的方式与远程服务器进行自动化交互,例如将本地文件传到服务器,在服务器上执行shell 命令. 下面给出一个自动化部署 Django 项目的例子 # -*- coding: utf-8 -*- # 文件名要保存为 fabfile.py from __future__ import unicode_literals from fabric.api import * # 登录用户和主机名: env.use

  • Python的自动化部署模块Fabric的安装及使用指南

    fabric是python2.5或者更高的库,可以通过ssh在多个host上批量执行任务.完成系统管理任务.它提供一套基本操作在本地和远程执行shell命令,或者上传下载文件,辅助提供用户输入或终止执行. 下面安装fabric模块有2种方法: 1.使用easy_install(下面是debain5环境) root@10.1.6.200:pshell# apt-get install python-dev (安装Python头文件) root@10.1.6.200:pshell# apt-get

  • python三大神器之fabric使用教程

    fabric 是一个python包 是一个基于ssh的部署工具包 通常用来对网站 微服务等等的批量部署 例如 我有5台线上服务器 可以通过一台对着5台分发,实现自动部署的目的. 简单介绍下 fabric的常用命令 常用命令 lcd(dir): 进入本机某目录 local(cmd): 本机上执行命令 cd(dir): 进入服务器某目录 run(cmd):服务器上执行命令 Fabric Fabric是一个python的远程执行shell的库,同时它也是一个命令行工具.它提供了丰富的同 SSH 交互的

  • 详解Python调试神器之PySnooper

    相信很多程序员在调试代码时,都用过 print.代码少还好说,如果是大型项目,面对众多 print 的输出结果,可能要头大了. 今天推荐一个 GitHub 热门开源项目:PySnooper.该项目推出的第一天就收获 2000+ Star,登上了 GitHub 日榜第一位,如今有近 15k Star.可见这是一款 Python 开发者喜欢的工具.欢迎收藏学习.喜欢点赞支持,文末技术交流可以畅聊! 链接:https://github.com/cool-RR/PySnooper PySnooper 是

  • python三大器之迭代器、生成器、装饰器

    目录 迭代器 生成器 装饰器(非常实用!) 迭代器 聊迭代器前我们要先清楚迭代的概念:通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某一段代码块,并将每一次迭代得到的结果作为下一次迭代的初始值).可迭代对象(iterable):是指该对象可以被用于for…in…循环,例如:集合,列表,元祖,字典,字符串,迭代器等. 在python中如果一个对象实现了 __iter__方法,我们就称之为可迭代对象,可以查看set\list\tuple…等源码内部均实现了__iter

  • Python周期任务神器之Schedule模块使用详解

    目录 1.准备 2.基本使用 参数传递 获取目前所有的作业 取消所有作业 标签功能 设定作业截止时间 立即运行所有作业,而不管其安排如何 3.高级使用 装饰器安排作业 并行执行 日志记录 异常处理 如果你想在Linux服务器上周期性地执行某个 Python 脚本,最出名的选择应该是 Crontab 脚本,但是 Crontab 具有以下缺点: 1.不方便执行秒级的任务. 2.当需要执行的定时任务有上百个的时候,Crontab的管理就会特别不方便 另外一个选择是 Celery,但是 Celery 的

  • Python神器之Pampy模式匹配库的用法详解

    目录 Pampy 是哪路神仙 Pampy 的花式秀 匹配单个字符 匹配字典 匹配开头和结尾 总结 大家好,我是闲欢,一个很卷的程序员! 今天给大家分享一个炒鸡炒鸡简单又好用的神器——pampy. 我敢以我的荣誉保证,用了它之后,你写代码的效率可以蹭蹭蹭地提升! Pampy 是哪路神仙 首先普及一下模式匹配. 模式匹配即给定某种模式,用这种模式去检查序列或字符串是否符合这种模式,这种技术在自然语言处理中经常使用. Pampy 是 Python 的一个模式匹配类库,一个只有150行的类库,该库优雅.

  • python函数装饰器之带参数的函数和带参数的装饰器用法示例

    本文实例讲述了python函数装饰器之带参数的函数和带参数的装饰器用法.分享给大家供大家参考,具体如下: 1. 函数带多个参数 # 普通的装饰器, 打印函数的运行时间 def decrator(func): def wrap(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) end_time = time.time() print('运行时间为', end_time-start_time) return

  • idea 开发神器之idea插件汇总

    1.lombok @Data注解在类上,会为类的所有属性自动生成setter/getter.equals.canEqual.hashCode.toString方法, 如为final属性,则不会为该属性生成setter方法. 2.Free MyBatis plugin 方便点击去接口,去到xml文件编写的方法,不用来回找了 3.EasyCode 自动生成文件 基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml). 只要是与数据库相关的代码都可以通

  • python工具——Mimesis的简单使用教程

    Mimesis是一个用于Python的高性能伪数据生成器, 支持多种不同的语言 可以用来生成各种测试数据.假的 API .任意结构的 JSON .XML 数据 安装 pip install mimesis 示例 from mimesis import Person person = Person('zh') print(f'name: {person.surname() + "" + person.name()}') print(f'sex: {person.sex()}') prin

  • SpringBoot四大神器之Auto onfiguration的使用

    目录 1. 通过启动类创建Spring Boot应用 2. @SpringBootApplication注解 2.1 @SpringBootConfiguration 2.2 @EnableAutoConfiguration 2.3 @ComponentScan 3.自定义自动配置 3.1 基于类的条件注解 3.2 基于Bean的条件注解 3.3 基于属性的条件注解 3.4 基于资源的条件注解 3.5 自定义条件 3.6 申请条件 4. 测试自动配置 5. 禁用自动配置类 6. 结论 Sprin

  • python虚拟环境的安装配置图文教程

    使用pip安装     pip install virtualenv 因为已经安装过了,所以显示这样 在这里我想在这里推荐大家以后再安装类库时可以用豆瓣源来安装,速度很快,因为在国内访问 官方pypi源非常慢,pip安装包经常会出错 豆瓣源 我来演示下django的安装 可以看到速度很快 好了回到虚拟环境的安装 virtualenv scrapytest(环境名) 安装好后输入activate.bat进入虚拟环境后输入python查看当前python版本为2.7 退出 退出虚拟环境:输入deac

随机推荐