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装上。
pythonsetup.pydevelop
同时也可以使用pip安装,因为fabric是python的一个第三方库,只需一条命令即可:
pipinstallfabric
python3安装时使用的是fabric3:(安装fabric3之前,需要先卸载fabric.)
- #fabric3支持python3
- pipuninstallfabric
- pip3installfabric3
fabric不只是一个Python模块,fabric还是一个命令行工具,可以使用fab-h查看帮助信息
E:\my_data\hk-project>fab-V Fabric31.14.post1 Paramiko2.4.2 E:\my_data\hk-project>fab-h
入门使用
fabric的使用方式是通过编写一个python文件,该文件中包含多个函数,然后使用fab命令调用这些函数,做相应的任务。这些函数在fabric中称为task。
#filename:abc.py fromfabric.apiimport* deftask1(): print("hello") defhello(): print("helloworld")
写好这个python文件后,在当前目录的路径下使用fab工具执行文件中的函数
[root@localhostpython文件所在的目录]#fab-fabc.pyhello helloworld #-f指定fabfile文件,默认为fabfile.py,若文件名是当前目录下的fabfile.py则无需指定
任务参数
此时你可能会想,如果这个函数有参数怎么办呢?应该如何传递参数给函数呢?Fabric支持Shell兼容的参数用法: <任务名>:<参数>,<关键字参数名>=<参数值>,...用起来就是这样。
defhello(name="world"): print("hello{}".format(name))
我们可以这样去指定参数
$fabhello:name=Jeff#或者fabhello:Jeff helloJeff Done.
小试牛刀
现在我们假设需要写一个fabfile.py,能够在每次web项目代码更新后使用git提交并远程服务器拉去最新代码并运行,需求描述清楚了,开干吧!
#fabfile.py #这里建议将该文件放入项目文件的根目录中,方便git提交 fromfabric.apiimportlocal deftest(): local('pythonmanage.pytestmyapp') #测试是否能正常运行 defcommit(): local('gitadd-p&&gitcommit-m"fortest"') defpush(): local('gitpush') defprepare_deploy(): test() commit() push()
这个 prepare_deploy任务可以单独调用,也可以调用更细粒度的子任务。
故障
Fabric会检查被调用程序的返回值,如果这些程序没有干净地退出,Fabric会终止操作。我们什么都不用做,Fabric检测到了错误并终止,不会继续执行commit任务。
我们也可以对故障进行一定的处理和判断
fromfabric.apiimportlocal,settings,abort fromfabric.contrib.consoleimportconfir deftest(): withsettings(warn_only=True): result=local('./manage.pytestmy_app',capture=True) #result.return_code返回码(0/1)和result.failed ifresult.failedandnotconfirm("Testsfailed.Continueanyway?"):#confirm判断用户输入 abort("Abortingatuserrequest.")#指定错误退出信息 #一个名为warn_only的设置(或着说环境变量,通常缩写为envvar)可以把退出换为警告,以提供更灵活的错误处理。如果设置为False,则一条命令运行失败会就会退出,不再执行后面的命令。
建立连接
终于到了连接了,这个工具主要作用就是在远程执行命令呀,学会了这个,我们就可以在本地执行远程服务器的命令了。
fromfabric.apiimport* env.hosts=['root@192.168.10.11:22'] defdeploy(): run('ls')#run()用于执行远程命令,local()执行本地命令 #执行后会提示你输入密码,输入密码即可
至此,入门结束,后续还有更多api的讲解,敬请关注!
参考链接:
fabric官方中文文档: https://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html
总结
以上所述是小编给大家介绍的python三大神器之fabric使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!